如何在 nlog.config 中设置 debugEnabled/InfoEnabled
How to set debugEnabled/InfoEnabled in nlog.config
我有NLog包的Logger,
我想在我的配置记录器文件中定义 trace enable=true。
我该怎么做?
我的 NLog.config 文件:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" maxlevel="Trace" minlevel="Trace" writeTo="logfile" />
</rules>
</nlog>
您可以通过在 NLog.config 的 rules
部分设置 minLevel
属性来做到这一点;
<rules>
<logger name="*" minlevel="Debug" writeTo="CSVFile" />
</rules>
Debug
将写出 Debug
、Info
、Warn
、Error
和 Fatal
级别的日志消息。只跳过 Trace
。
编辑
相反,如果你只想记录 Trace
,那么设置 maxLevel
;
<rules>
<logger name="*" maxlevel="Trace" writeTo="CSVFile" />
</rules>
要仅记录特定的中间级别,请同时使用 minLevel
和 maxLevel
,例如;
<rules>
<logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="CSVFile" />
</rules>
EDIT2
我调整了您的配置文件,使输出记录到控制台而不是文件;
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" maxlevel="Trace" writeTo="logconsole" />
</rules>
</nlog>
并且当 运行 在一个测试应用程序中我写出多个日志记录级别时;
_logger.Trace("trace text");
_logger.Debug("debug text");
_logger.Info("info text");
_logger.Warn("warn text");
_logger.Error("error text");
_logger.Fatal("fatal text");
并且只有 Trace 文本显示在控制台中 window。但是,需要注意的一件事是配置文件中的 XML 必须正确格式化。上面的示例按照我在此处的测试应用程序中的描述工作。
您可以通过创建多个记录器实例来创建多个级别的日志记录,例如
<rules>
<!-- add your logging rules here -->
<!-- different logger instances for different environments, no levels are mentioned explicitly, can be done if exclusion of some levels is required -->
<logger name="Log.Dev" minlevel="Debug" writeTo="database" enabled="true" />
<logger name="Log.Staging" minlevel="Info" writeTo="database" enabled="true" />
<logger name="Log.Production" minlevel="Error" writeTo="database" enabled="true" />
</rules>
之后在初始化时给出要初始化的记录器的名称
/// <summary>
/// The log.
/// Getting Logger instance from key name defined in Web.config of main web file. Key name is LoggerInstanceName
/// On the basis of name , logger instance and defined rules can be switched from one to another.
/// </summary>
private static readonly NLog.Logger Log = LogManager.GetLogger(Convert.ToString(ConfigurationManager.AppSettings.Get("LoggerInstance")));
另外不要忘记在您的应用设置中添加密钥
<appSettings>
<!--logger instance name-->
<add key="LoggerInstanceName" value="Log.Dev" />
</appSettings>
我有NLog包的Logger, 我想在我的配置记录器文件中定义 trace enable=true。
我该怎么做?
我的 NLog.config 文件:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" maxlevel="Trace" minlevel="Trace" writeTo="logfile" />
</rules>
</nlog>
您可以通过在 NLog.config 的 rules
部分设置 minLevel
属性来做到这一点;
<rules>
<logger name="*" minlevel="Debug" writeTo="CSVFile" />
</rules>
Debug
将写出 Debug
、Info
、Warn
、Error
和 Fatal
级别的日志消息。只跳过 Trace
。
编辑
相反,如果你只想记录 Trace
,那么设置 maxLevel
;
<rules>
<logger name="*" maxlevel="Trace" writeTo="CSVFile" />
</rules>
要仅记录特定的中间级别,请同时使用 minLevel
和 maxLevel
,例如;
<rules>
<logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="CSVFile" />
</rules>
EDIT2
我调整了您的配置文件,使输出记录到控制台而不是文件;
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" maxlevel="Trace" writeTo="logconsole" />
</rules>
</nlog>
并且当 运行 在一个测试应用程序中我写出多个日志记录级别时;
_logger.Trace("trace text");
_logger.Debug("debug text");
_logger.Info("info text");
_logger.Warn("warn text");
_logger.Error("error text");
_logger.Fatal("fatal text");
并且只有 Trace 文本显示在控制台中 window。但是,需要注意的一件事是配置文件中的 XML 必须正确格式化。上面的示例按照我在此处的测试应用程序中的描述工作。
您可以通过创建多个记录器实例来创建多个级别的日志记录,例如
<rules>
<!-- add your logging rules here -->
<!-- different logger instances for different environments, no levels are mentioned explicitly, can be done if exclusion of some levels is required -->
<logger name="Log.Dev" minlevel="Debug" writeTo="database" enabled="true" />
<logger name="Log.Staging" minlevel="Info" writeTo="database" enabled="true" />
<logger name="Log.Production" minlevel="Error" writeTo="database" enabled="true" />
</rules>
之后在初始化时给出要初始化的记录器的名称
/// <summary>
/// The log.
/// Getting Logger instance from key name defined in Web.config of main web file. Key name is LoggerInstanceName
/// On the basis of name , logger instance and defined rules can be switched from one to another.
/// </summary>
private static readonly NLog.Logger Log = LogManager.GetLogger(Convert.ToString(ConfigurationManager.AppSettings.Get("LoggerInstance")));
另外不要忘记在您的应用设置中添加密钥
<appSettings>
<!--logger instance name-->
<add key="LoggerInstanceName" value="Log.Dev" />
</appSettings>