के साथ एनएलओजी आईएलओगर पंजीकरण करना क्या कोई तरीका है कि मैं संदर्भ प्राप्त कर सकता हूं ताकि मैं loggerName
पुनर्प्राप्त कर सकूं और LogManager.GetCurrentClassLogger()
के बजाय LogManager.GetLogger(loggerName)
का उपयोग कर सकूं?सरल इंजेक्टर
मैंने देखा कि container.RegisterConditional()
पर संदर्भ के लिए उपयोग है।
इसके अलावा, मैं अब SimpleLogging.NLog जैसे समाधानों से बचना चाहता हूं।
अंत में, मैं स्वीकार करने के लिए तैयार हूं कि यह सही दृष्टिकोण नहीं है। बीटीडब्ल्यू, एओपी एक विकल्प है जिसे मैंने पहले से ही खोजा है (Is it a good practice to have logger as a singleton?)।
नोट: मुझे पता है कि GetCurrentClassLogger()
वही जानकारी प्राप्त करता है जो मैं .NET प्रतिबिंब के साथ पुनर्प्राप्त करूंगा।
using NLog;
using SimpleInjector;
namespace DependencyInjection
{
class Program
{
private static Container _container;
static void Main(string[] args)
{
Bootstrap();
_container.GetInstance<Greeter>().Greet();
}
private static void Bootstrap()
{
_container = new Container();
_container.Register<ILogger>(() => LogManager.GetCurrentClassLogger(), Lifestyle.Transient);
_container.Register<Greeter>();
_container.Verify();
}
public class Greeter
{
private ILogger _logger;
public Greeter(ILogger logger)
{
_logger = logger;
}
public void Greet()
{
_logger.Log(LogLevel.Info, "Hello world!");
}
}
}
}
आप 'लॉगरनाम' का मूल्य क्या चाहते हैं? – qujck
संबंधित: https://stackoverflow.com/q/32952701/264697 – Steven
एओपी तकनीकों को लागू करना बहुत उपयोगी है, लेकिन कृपया कोड बुनाई उपकरण से दूर रहें। सजावट का उपयोग करके एओपी लागू करें। संबंधित: https://stackoverflow.com/a/9915056/264697 – Steven