2011-09-17 86 views
1

这可能是一个非常愚蠢的问题,但我们现在就去。我的Web应用程序中有以下NLog.config,但是对话框是如何/何时打开并显示信息,还是需要启动它并导航到特定目录或其他内容?使用控制台查看NLog信息

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

你好马库斯。为了更好地展示您的问题,使用编辑器工具栏上的第五个按钮(或CTRL + K)将文本格式化为代码(如果它包含HTML或XML,则是非常必要的,否则它将不会显示)。 – Jon

+0

我想这个问题毕竟是相当愚蠢的? – Marcus

回答

2

NLOG将不会打开一个对话框,在其中将倾倒在它的消息,你会基本上失去所有它记录的数据。至少这是我的理解;控制台和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> 
6

其实,你可以通过使用此代码实例化一个非控制台程序的并行控制台:

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

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