如何在多个类中使用NLog

时间:2015-10-22 16:26:27

标签: c# .net multithreading nlog

我正在学习使用NLog。我的情况是我想在DLL中使用它可能将它包装在日志类中。基本上我的目标是:

1)我希望此配置仅发生在 ONCE

    var config = new LoggingConfiguration();

    var fileTarget = new FileTarget();     
    config.AddTarget("file", fileTarget);

     // Step 3. Set target properties 
     fileTarget.Layout = @"${date:format=HH\:mm\:ss} - ${message}";
     fileTarget.FileName = "c:/myFolder/" + "${date:format=yyyy-MM-dd}.log";

     var rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget);
     config.LoggingRules.Add(rule2);

     // Step 5. Activate the configuration
     LogManager.Configuration = config;

     // Example usage
     _logger = LogManager.GetLogger("Example");

如果它是相关的,我还希望能够将say作为参数指定为初始化例程的日志文件路径。

2)任何其他类应该能够调用像LogWrapper.Log(“message”)这样的方法,它应该使用我配置的NLog对象记录消息 - 我知道NLog的哪个方法将条目写入日志文件,即不是问题,比如叫_logger.write

如何以(线程)安全方式实现此目的? 我已经在这方面努力了一段时间,并且非常感谢你们的帮助!这应该不是那么难,基本上我问的是如何使用NLog。

1 个答案:

答案 0 :(得分:0)

你删除了之前回答这个问题的问题,让我再次回答一下,

对于#1,您需要将此代码放在静态构造函数

离;

  static class test
  {
       static test() 
       { /* ... code */}
  }

为了安全起见,你需要一个储物柜;

  static class test
  {
       private static object _locker = new object();

       static test() 
       { /* ... code */}

        public static void log(string msg)
        {
           lock(_locker )
           { /* ... code */}
        }
  }