2016-01-22 117 views
1

我有一個控制檯應用程序,並記錄其活動,我複製了我在我的Web應用程序上有相同的Nlog.config文件。 我也進口了Nlog.ExtendedNlog.Web。 我還檢查了Nlog.config屬性(Build Action = Content,複製到輸出目錄=複製始終)並設置internalLogFile和internalLogLevel。NLog控制檯應用程序

private static Logger logger = LogManager.GetCurrentClassLogger(); 

被稱爲 'System.TypeInitializationException' 被thwown和所有

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="[email protected]" 
       smtpPassword="password" 
       enableSsl="true" 
       from="[email protected]" 
       to="[email protected]" 
       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 

問題出在哪裏?

回答

2

找到解決方案! 我不得不改變這個

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

與此

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

關鍵字必須用字來代替。

已解決。

+0

確實看到文檔:https://github.com/NLog/NLog/wiki/AppSetting-Layout-Renderer – Julian