我正在学习使用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。
答案 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 */}
}
}