2016-11-11 33 views
0

在一個項目中C#Web API + html/JS/JQuery,我目前使用log4net日誌庫來獲取信息(服務器端)。JSNLog.Log4Net自定義LOG

現在,我還需要記錄有關客戶端事件的信息。

我發現庫JSNLog.Log4Net版本:2.20.1,它似乎工作。

我的問題是我需要自定義日誌,因爲我在做log4net。

繼log4net.config文件:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 

    <log4net> 

    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> 
     <bufferSize value="0" /> 
     <reconnectOnError value="true"/> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

     <connectionString .... /> 

     <commandText value="INSERT INTO [INT].[Log] ([Appl],[Level],[IP],[HttpMethod],[API],[Request],[DataInput],[Response],[DataOutput],[UserName],[Message],[Exception],[ExecutedTime]) 
        VALUES (@APPL, @log_level, @IP, @logger, @API, CASE WHEN (@Request='(null)') THEN null ELSE @Request END, @DataInput, CASE WHEN (@Response='(null)') THEN null ELSE @Response END, @DataOutput, @UserName, @Message, @Exception, @ExecutedTime)" /> 

     <parameter> 
     <parameterName value="@log_level" /> 
     <dbType value="String" /> 
     <size value="16" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%p" /> 
     </layout> 
     </parameter> 

     <parameter> 
     <parameterName value="@APPL" /> 
     <dbType value="String" /> 
     <size value="16" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{APPL}" /> 
     </layout> 
     </parameter> 

     <parameter> 
     <parameterName value="@IP"/> 
     <dbType value="String" /> 
     <size value="128" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{IP}" /> 
     </layout> 
     </parameter> 

     <parameter> 
     <parameterName value="@logger" /> 
     <dbType value="String" /> 
     <size value="512" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%c" /> 
     </layout> 
     </parameter> 

     <parameter> 
     <parameterName value="@API"/> 
     <dbType value="String" /> 
     <size value="128" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{API}" /> 
     </layout> 
     </parameter> 

     <parameter> 
     <parameterName value="@Request" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{Request}" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@DataInput" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{DataInput}" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@Response" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{Response}" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@DataOutput" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{DataOutput}" /> 
     </layout> 
     </parameter> 

     <parameter> 
     <parameterName value="@Message" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%m" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@Exception" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.ExceptionLayout" /> 
     </parameter> 

     <parameter> 
     <parameterName value="@UserName"/> 
     <dbType value="String" /> 
     <size value="128" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%property{UserName}" /> 
     </layout> 
     </parameter> 

     <parameter> 
     <parameterName value="@ExecutedTime"/> 
     <dbType value="Int32" /> 
     <layout type="log4net.Layout.RawPropertyLayout"> 
      <key value="ExecutedTime" /> 
     </layout> 
     </parameter> 

    </appender> 


    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="DEBUG" /> 
     <levelMax value="FATAL" /> 
     </filter> 
     <bufferSize value="0" /> 
     <file value="Log\SC_Log.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Composite" /> 
     <datePattern value=".yyyyMMdd.lo\\g" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="100MB" /> 
     <layout type="log4net.Layout.PatternLayout">   
     <conversionPattern value="%date %-5level - (%file:%line) - %message%newline" /> 
     </layout> 
    </appender> 

    <!--<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p [%x] - %m%n" /> 
     </layout> 
    </appender>--> 

    <root> 
     <level value="ALL" /> 
     <appender-ref ref="RollingLogFileAppender" /> 
     <!--<appender-ref ref="ConsoleAppender" />--> 
     <appender-ref ref="ADONetAppender" /> 
    </root> 

    </log4net> 
</configuration> 

下,什麼我日誌中的一個例子:

enter image description here

正如你可以看到,黃線(所產生的一個由JSNLog.log4net)缺乏很多信息。

如何添加它們?

再見

達維德

P.S:如果有必要,我還可以更改客戶端日誌庫。

回答

0

缺失的條目是%property{X},它們是客戶端庫無法訪問的,因爲它們保存在服務器的內存中。如果您想從客戶端登錄它們,則需要將屬性值傳遞給它。

+0

感謝您的建議。你會有一個代碼傳遞這些值的例子嗎? –

+0

假設那裏沒有敏感數據,將它們作爲元數據或隱藏字段或xyz傳遞給頁面數據。不知道你的應用程序的任何事情,我不能真正顯示任何代碼。 – stuartd