使用 NLog 记录异常
Log Exception using NLog
在 NLog wiki 页面中,我发现 Page 描述了如何记录异常。但是在页面中他们提到了类似这样的东西来实现这个功能。
<nlog>
<targets>
<target name="f" type="File"
layout="${longdate} ${message} ${exception:format=tostring}"/>
</targets>
<rules>
<logger name="*" writeTo="f"/>
</rules>
</nlog>
我正在动态创建配置文件,但不确定如何在我的代码中实现上述配置。
配置代码为
public class NLogManager : ILogManager
{
public NLogManager()
{
var config = new LoggingConfiguration();
var consoleTarget = new ConsoleTarget();
config.AddTarget("console", consoleTarget);
var consoleRule = new LoggingRule("*", LogLevel.Trace, consoleTarget);
config.LoggingRules.Add(consoleRule);
var fileTarget = new FileTarget();
string folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
fileTarget.FileName = Path.Combine(folder, "Log.txt");
config.AddTarget("file", fileTarget);
var fileRule = new LoggingRule("*", LogLevel.Warn, fileTarget);
config.LoggingRules.Add(fileRule);
LogManager.Configuration = config;
}
public ILogger GetLog([System.Runtime.CompilerServices.CallerFilePath] string callerFilePath = "")
{
string fileName = callerFilePath;
if (fileName.Contains("/"))
{
fileName = fileName.Substring(fileName.LastIndexOf("/", StringComparison.CurrentCultureIgnoreCase) + 1);
}
var logger = LogManager.GetLogger(fileName);
return new NLogLogger(logger);
}
}
任何人都可以建议我如何动态配置它吗?
您需要在(文件)Target
上设置 Layout
属性:
fileTarget.Layout = "${longdate} ${message} ${exception:format=tostring}";
注意:默认布局是 ${longdate}|${level:uppercase=true}|${logger}|${message}
并且不会包含您所看到的例外情况。这将在 NLog 5 或 6 中更改:https://github.com/NLog/NLog/issues/1292
在 NLog wiki 页面中,我发现 Page 描述了如何记录异常。但是在页面中他们提到了类似这样的东西来实现这个功能。
<nlog>
<targets>
<target name="f" type="File"
layout="${longdate} ${message} ${exception:format=tostring}"/>
</targets>
<rules>
<logger name="*" writeTo="f"/>
</rules>
</nlog>
我正在动态创建配置文件,但不确定如何在我的代码中实现上述配置。
配置代码为
public class NLogManager : ILogManager
{
public NLogManager()
{
var config = new LoggingConfiguration();
var consoleTarget = new ConsoleTarget();
config.AddTarget("console", consoleTarget);
var consoleRule = new LoggingRule("*", LogLevel.Trace, consoleTarget);
config.LoggingRules.Add(consoleRule);
var fileTarget = new FileTarget();
string folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
fileTarget.FileName = Path.Combine(folder, "Log.txt");
config.AddTarget("file", fileTarget);
var fileRule = new LoggingRule("*", LogLevel.Warn, fileTarget);
config.LoggingRules.Add(fileRule);
LogManager.Configuration = config;
}
public ILogger GetLog([System.Runtime.CompilerServices.CallerFilePath] string callerFilePath = "")
{
string fileName = callerFilePath;
if (fileName.Contains("/"))
{
fileName = fileName.Substring(fileName.LastIndexOf("/", StringComparison.CurrentCultureIgnoreCase) + 1);
}
var logger = LogManager.GetLogger(fileName);
return new NLogLogger(logger);
}
}
任何人都可以建议我如何动态配置它吗?
您需要在(文件)Target
上设置 Layout
属性:
fileTarget.Layout = "${longdate} ${message} ${exception:format=tostring}";
注意:默认布局是 ${longdate}|${level:uppercase=true}|${logger}|${message}
并且不会包含您所看到的例外情况。这将在 NLog 5 或 6 中更改:https://github.com/NLog/NLog/issues/1292