简体   繁体   中英

JSNLog.Log4Net Customization LOG

in a project C# Web API + html/JS/JQuery, I'm currently using log4net logging library for information (server side).

Now, I need also to log information about client-side events.

I found the library JSNLog.Log4Net version: 2.20.1, and it seems to work.

My problem is that I need to custom log, as I'm doing with log4net.

Following the log4net.config file:

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

following, an example of what I'm log:

在此处输入图片说明

As you can see, the yellow line (the one generated by JSNLog.log4net) lack much information.

How do I add them?

Bye

Davide

PS .: If necessary, I can also change library for client-side logging.

The missing entries are the %property{X} ones, which the client side library cannot access, as they are held in memory on the server. If you want to log them from the client side, you will need to pass the property values through to it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM