C#中四步輕松使用log4net記錄本地日志(WPF有點小區別)


在這里,記錄我在項目中使用log4net記錄本地日志的步驟。在不會之前感覺很難,很神秘,一旦會了之后其實沒那么難。其實所有的事情都是一樣的,下面我就分享一下我使用log4Net的經驗。

第一步:首先從Visual Studio中的Nuget包管理中搜索下載 Log4Net dll文件 如下圖:

選擇安裝的項目(哪個類庫中需要記錄日志就勾選上)

第二步:打開配置文件 WinFrom就是 App.config  Web就是 web.config 將以下配置信息加入

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <logger name="SysRFLogger">
      <level value="DEBUG" />
      <appender-ref ref="SysRFAppender" />
    </logger>
    <logger name="DebugRFLogger">
      <level value="DEBUG" />
      <appender-ref ref="DebugAppender" />
    </logger>
    <logger name="MsgLogger">
      <level value="DEBUG" />
      <appender-ref ref="MsgAppender" />
    </logger>
    <logger name="OperInfoLogger">
      <level value="DEBUG" />
      <appender-ref ref="OperInfoAppender" />
    </logger>
    <appender name="SysRFAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\syslog.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <preserveLogFileNameExtension value="true" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\sysDebuglog.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <preserveLogFileNameExtension value="true" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="MsgAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\Messagelog.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <preserveLogFileNameExtension value="true" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="OperInfoAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.30319.18020, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <commandText value="INSERT INTO LOG_USEROPERLOG ([ID],[Date],[User],[Flag],[OperInfo],[OperFlag],[OperResult],[Message]) VALUES (@Id,@log_date, @user, @flag, @operinfo,@operflag, @operresult, @message)" />
      <parameter>
        <parameterName value="@Id" />
        <dbType value="String" />
        <size value="36" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{ID}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@user" />
        <dbType value="String" />
        <size value="64" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{User}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@flag" />
        <dbType value="Int32" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{Flag}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@operinfo" />
        <dbType value="String" />
        <size value="255" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{OperInfo}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@operflag" />
        <dbType value="String" />
        <size value="32" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{OperFlag}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@operresult" />
        <dbType value="String" />
        <size value="255" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{OperResult}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{Message}" />
        </layout>
      </parameter>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="SysRFAppender" />
    </root>
  </log4net>

以上節點具體參數這里不做解釋,可以上網查詢幫助文檔

注意:這兩段XML要放在configuration 節點下靠前

 

第三步:打開項目AssemblyInfo.cs文件(UI層)

加入:[assembly: log4net.Config.XmlConfigurator(ConfigFile = "web.config", Watch = true)]

 注意:ConfigFile屬性值是當前程序配置文件名WinForm就是App.config Web程序就是:web.config

 第四步:在需要記錄日志的cs文件中初始化: private ILog _log = LogManager.GetLogger("TicketFace");

 

一般常用以下幾個方法:

_log.Error();
_log.Debug();
_log.Info();

 

最后運行項目然后在以上配置文件中找到路徑去文件夾里看看就生成了日志文件了。

注意:這里日志是以天為單位記錄 如下:

 

WPF中有點小區別:

第三步:打開項目AssemblyInfo.cs文件(UI層)這里的配置注釋不要。

在 App.xaml.cs中的的構造函數加入:log4net.Config.XmlConfigurator.Configure();

/// <summary>
/// App.xaml 的交互邏輯
/// </summary>
public partial class App : Application
{
public App()
{
log4net.Config.XmlConfigurator.Configure();
}
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM