NLog控制台应用程序

5
我有一个控制台应用程序,为了记录其活动,我复制了与我的 Web 应用程序上相同的 Nlog.config 文件。 我还导入了 Nlog.ExtendedNlog.Web。 我还检查了 Nlog.config 属性(Build Action = Content, copy to output directory = copy Always),并设置了 internalLogFile 和 internalLogLevel。
当...
private static Logger logger = LogManager.GetCurrentClassLogger();

被称为“System.TypeInitializationException”的异常被抛出,最终...
Scanning XXXXLayoutRenderer (all parameter in my config)

这与我的内部日志文件进行比较。
Info Found 105 configuration items

仅此而已

这是我的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"
        xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
        autoReload="true"
        throwExceptions="true"
        internalLogFile="c:\Temp\internal_log_file.txt"
        internalLogLevel="Trace"
        internalLogToConsole="true">


    <variable name="brief" value="${longdate} | ${level} | ${message}"/>
    <variable name="verbose" value="${longdate} | ${machinename} | ${processid} | ${processname} | ${level} | ${logger} | ${message}"/>
    <variable name="logDirectory" value="${basedir}/Logs/${date:format=yyyyMM}"/>

    <targets>


      <!-- FILE target -->
      <target name="file" xsi:type="File" layout="${brief}" fileName="${logDirectory}/${shortdate}.txt"/>

      <!-- EMAIL target -->
      <target name="email" xsi:type="Mail"
              smtpServer="smtp.gmail.com"
              smtpPort="587"
              smtpAuthentication="Basic"
              smtpUserName="user@gmail.com"
              smtpPassword="password"
              enableSsl="true"
              from="user@gmail.com"
              to="user@gmail.com"
              layout="${verbose}"
            />

      <!-- DATABASE target -->
      <target name="database" xsi:type="Database">


        <connectionStringName>NLogEntities</connectionStringName>

        <commandText>
          insert into dbo.Log (
          Application, Logged, Level, Message,
          Username,
          ServerName, Port, Url, Https,
          ServerAddress, RemoteAddress,
          Logger, CallSite, Exception
          ) values (
          @Application, @Logged, @Level, @Message,
          @Username,
          @ServerName, @Port, @Url, @Https,
          @ServerAddress, @RemoteAddress,
          @Logger, @Callsite, @Exception
          );
        </commandText>
        <parameter name="@application" layout="${appsetting:key=AppName:default=Unknown}" />
        <parameter name="@logged" layout="${date}" />
        <parameter name="@level" layout="${level}" />
        <parameter name="@message" layout="${message}" />

        <parameter name="@username" layout="${identity}" />

        <parameter name="@serverName" layout="${aspnet-request:serverVariable=SERVER_NAME:default=Unknown}" />
        <parameter name="@port" layout="${aspnet-request:serverVariable=SERVER_PORT}" />
        <parameter name="@url" layout="${aspnet-request:serverVariable=HTTP_URL}" />
        <parameter name="@https" layout="${when:inner=1:when='${aspnet-request:serverVariable=HTTPS}' == 'on'}${when:inner=0:when='${aspnet-request:serverVariable=HTTPS}' != 'on'}" />

        <parameter name="@serverAddress" layout="${aspnet-request:serverVariable=LOCAL_ADDR}" />
        <parameter name="@remoteAddress" layout="${aspnet-request:serverVariable=REMOTE_ADDR}:${aspnet-request:serverVariable=REMOTE_PORT}" />

        <parameter name="@logger" layout="${logger}" />
        <parameter name="@callSite" layout="${callsite}" />
        <parameter name="@exception" layout="${exception:tostring}" />
      </target>
    </targets>
    <rules>
      <!-- DATABASE rules -->
      <logger name="*" minlevel="Error" writeTo="database" />
      <!-- EMAIL rules -->
      <logger name="*" minlevel="Error" writeTo="email" />
      <!-- FILE rules -->
      <logger name="*" minlevel="Trace" writeTo="file" />
    </rules>
  </nlog>

这是输出内部日志文件
    2016-01-22 12:47:43.0520 Debug ScanAssembly('NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c')
    ....
    ....

    2016-01-22 12:47:43.2532 Trace    Scanning LongDateLayoutRenderer 'Layout Renderer: ${longdate}'
    2016-01-22 12:47:43.2532 Trace    Scanning LiteralLayoutRenderer 'Layout Renderer: ${literal}'
    2016-01-22 12:47:43.2532 Trace    Scanning LevelLayoutRenderer 'Layout Renderer: ${level}'
    2016-01-22 12:47:43.2532 Trace    Scanning LiteralLayoutRenderer 'Layout Renderer: ${literal}'
    2016-01-22 12:47:43.2532 Trace    Scanning MessageLayoutRenderer 'Layout Renderer: ${message}'
    2016-01-22 12:47:43.2532 Info Found 105 configuration items

问题出在哪里?
1个回答

4
解决方案找到了! 我不得不更改这个。
<parameter name="@application" layout="${appsetting:key=AppName:default=Unknown}" />

使用此功能

<parameter name="@application" layout="${appsetting:name=AppName:default=Unknown}" />

需要将关键词替换为名称

问题已解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接