使用控制台查看NLog信息

时间:2011-09-17 19:24:08

标签: logging nlog

这可能是一个非常愚蠢的问题但我们走了。我在我的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>

3 个答案:

答案 0 :(得分:7)

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

static public class LogConsole
{
    static public void Instantiate()
    {
        AllocConsole();
    }

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

答案 1 :(得分:3)

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的文本文件,它将写入所有具有最低级别Info(基本上所有内容)的消息。哦,顺便说一句,你可以同时使用多个目标和规则;看看here了解更多信息。

答案 2 :(得分:-3)

您应该在记录器规则部分(您忘记了)中包含minLevel。这会通知记录器有关应记录的最低级别的消息。要明确:

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