代码之家  ›  专栏  ›  技术社区  ›  user1012506

如何在nlog中设置debugEnabled/InfoEnabled。配置

  •  1
  • user1012506  · 技术社区  · 8 年前

    我有NLog包的记录器, 我想在配置记录器文件中定义trace enable=true。

    我该怎么做?

    我的NLog。配置文件:

       <?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>
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   DiskJunky    8 年前

    您可以通过设置 minLevel 属性 rules NLog部分。像这样配置;

    <rules>
      <logger name="*" minlevel="Debug" writeTo="CSVFile" />
    </rules>
    

    Debug 将写出 调试 , Info , Warn , Error Fatal -级别日志消息。只有 Trace 已跳过。

    编辑

    相反,如果您只想记录 查出 ,然后设置 maxLevel 像这样;

    <rules>
      <logger name="*" maxlevel="Trace" writeTo="CSVFile" />
    </rules>
    

    要只记录特定的中间级别,请使用 最小水平 最大级别 一起喜欢;

    <rules>
      <logger name="*" minlevel="Debug" maxlevel="Debug" writeTo="CSVFile" />
    </rules>
    

    编辑2

    我调整了您的配置文件,使输出记录到控制台,而不是文件;

    <?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");
    

    控制台窗口中仅显示跟踪文本。然而,需要注意的是,配置文件中的XML必须正确格式化。上面的示例按照我在这里的测试应用程序中的描述工作。

        2
  •  2
  •   Ronnie Kapoor    8 年前

    您可以通过创建多个记录器安装来创建多个级别的日志记录,例如

     <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>