2016-11-11 8 views
0

프로젝트 C# 웹 API + html/JS/JQuery에서 현재 log4net 로깅 라이브러리를 사용하여 정보 (서버 측)를 사용하고 있습니다.JSNLog.Log4Net 사용자 정의 LOG

이제 클라이언트 측 이벤트에 대한 정보도 기록해야합니다.

라이브러리 JSNLog.Log4Net 버전 : 2.20.1을 찾았습니다.

제 문제는 내가 log4net을하고있는 것처럼 커스텀 로그가 필요하다는 것입니다.

<?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> 

은 다음, 나는 로그있어 무엇의 예 : 다음 log4net.config 파일 다음

enter image description here

당신이, 노란 선을 볼 수있는 바와 같이 (하나의 생성 JSNLog.log4net에 의해) 많은 정보가 부족합니다.

어떻게 추가합니까?

안녕

다비드

P.S :. 필요한 경우, 나는 또한 클라이언트 측 로깅을위한 라이브러리를 변경할 수 있습니다.

답변

0

누락 된 항목은 클라이언트 쪽 라이브러리가 서버의 메모리에 보유되어 있으므로 액세스 할 수없는 %property{X} 것입니다. 클라이언트 측에서 기록하려면 로그에 속성 값을 전달해야합니다.

+0

제안 해 주셔서 감사합니다. 이 값들을 전달하는 코드 예제가 있습니까? –

+0

민감한 데이터가 없다고 가정하면 메타 데이터 또는 숨겨진 필드 또는 xyz로 페이지 데이터에 전달합니다. 앱에 대해 알지 못하는 한 실제로 코드를 표시 할 수 없습니다. – stuartd