【问题标题】:Using the console to look at NLog information使用控制台查看NLog信息
【发布时间】:2011-09-17 19:24:08
【问题描述】:

我的 Web 应用程序中有以下 NLog.config,但对话框如何/何时打开并显示信息,或者我是否需要启动它并导航到特定目录或其他内容?

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.netfx35.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target xsi:type="ColoredConsole"
            name="Debug"
            layout="${message} ${exception}">
      <highlight-row backgroundColor="Black"
                     foregroundColor="DarkCyan"
                     condition="true"/>
    </target>
  </targets>
  <rules>
    <logger name="Raven.Client.*" writeTo="Debug"/>
  </rules>
</nlog>

【问题讨论】:

    标签: logging nlog


    【解决方案1】:

    实际上,您可以使用以下方法将控制台与非控制台程序并行实例化:

    static public class LogConsole
    {
        static public void Instantiate()
        {
            AllocConsole();
        }
    
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static private extern bool AllocConsole();
    }
    

    【讨论】:

      【解决方案2】:

      NLog 不会打开一个对话框来转储它的消息,你基本上会丢失它记录的所有数据。至少这是我的理解; Console 和 ColoredConsole 仅对控制台应用程序有用。您最好的选择是将输出放入文件中。使用这样的东西:

      <targets>
          <target name="file" xsi:type="File" fileName="${basedir}/log.txt" />
      </targets>
      
      <rules>
          <logger name="*" minlevel="Info" writeTo="file" />
      </rules>
      

      这将在您的应用程序的基本目录中创建一个名为 log.txt 的文本文件,并将所有具有最低信息级别的消息(基本上所有内容)写入其中。哦,顺便说一句,你可以有多个目标和规则同时工作;查看here 了解更多信息。

      【讨论】:

        【解决方案3】:

        您应该在记录器规则部分(您忘记了)包含minLevel。这会通知记录器应记录的最低级别的消息。说清楚:

        <rules>
            <logger name="Raven.Client.*" minlevel="Info" writeTo="Debug" />
        </rules>
        

        【讨论】:

          猜你喜欢
          • 2013-10-28
          • 2017-03-24
          • 2017-12-23
          • 2020-01-25
          • 1970-01-01
          • 1970-01-01
          • 2021-04-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多