log4net使用方法

来源:https://www.cnblogs.com/LikeHeart/archive/2018/08/04/9353093.html
-Advertisement-
Play Games

1.NuGet包管理器中安裝log4net 2.接著在項目中添加log4net.config文件,以及手擼或尋找一個LogHelper 添加完log4net.config一定要設置屬性,將其始終複製到輸出目錄 3.最後需要在AssemblyInfo.cs中添加一行代碼 效果如下: Demo下載:ht ...


1.NuGet包管理器中安裝log4net

2.接著在項目中添加log4net.config文件,以及手擼或尋找一個LogHelper

添加完log4net.config一定要設置屬性,將其始終複製到輸出目錄

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="ErrorRollingFileAppender"/>
      <appender-ref ref="WarnRollingFileAppender"/>
      <appender-ref ref="InfoRollingFileAppender"/>
      <appender-ref ref="DebugRollingFileAppender"/>
    </root>

    <!--一般錯誤日誌定義,用於記錄已知需處理的與未捕獲的異常-->
    <!--日誌輸出格式:[時間]:類名 線程號 消息-->
    <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR"/>
        <levelMax value="FATAL"/>
      </filter>
      <filter type="log4net.Filter.DenyAllFilter"/>
      <file value="logs\"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyy-MM-dd\\&quot;Error.log&quot;"/>
      <staticLogFileName value="false"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%d{yyyy-MM-dd HH:mm:ss.fff}] %-5p %c.%M %t %n%m%n"/>
      </layout>
    </appender>

    <!--警告日誌定義,用於記錄已知不需處理的異常,系統警告信息-->
    <!--日誌輸出格式:[時間]:類名 線程號 消息-->
    <appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="WARN"/>
      </filter>
      <filter type="log4net.Filter.DenyAllFilter"/>
      <file value="logs\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyy-MM-dd\\&quot;Warn.log&quot;"/>
      <staticLogFileName value="false"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%d{yyyy-MM-dd HH:mm:ss.fff}] %c.%M %t %m%n"/>
      </layout>
    </appender>

    <!--信息日誌定義,用於記錄用戶相關信息-->
    <!--日誌輸出格式:[時間]:消息-->
    <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="INFO"/>
      </filter>
      <filter type="log4net.Filter.DenyAllFilter"/>
      <file value="logs\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyy-MM-dd\\&quot;Info.log&quot;"/>
      <staticLogFileName value="false"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%d{yyyy-MM-dd HH:mm:ss}] %m%n"/>
      </layout>
    </appender>

    <!--信息日誌定義,用於收集開發調試信息-->
    <!--日誌輸出格式:[時間]:類名 線程號 消息-->
    <appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="DEBUG"/>
      </filter>
      <filter type="log4net.Filter.DenyAllFilter"/>
      <file value="logs\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyy-MM-dd\\&quot;Debug.log&quot;"/>
      <staticLogFileName value="false"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%d{yyyy-MM-dd HH:mm:ss.fff}] %c %t:%m%n"/>
      </layout>
    </appender>

  </log4net>
</configuration>

 

 1     public static class LogHelper
 2     {
 3         private static readonly log4net.ILog Logerror = log4net.LogManager.GetLogger("DEBUG");
 4 
 5         public static void WriteInfoLog(string info)
 6         {
 7             Logerror.Info(info);
 8         }
 9 
10         public static void WriteErrorLog(string info)
11         {
12             Logerror.Error(info);
13         }
14 
15         public static void WriteDebugLog(string info)
16         {
17             Logerror.Debug(info);
18         }
19 
20         public static void WriteDebugLog(Exception exception)
21         {
22             Logerror.Debug(exception.Message, exception);
23         }
24     }

 3.最後需要在AssemblyInfo.cs中添加一行代碼

 

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

效果如下:

1         static void Main(string[] args)
2         {
3             LogHelper.WriteDebugLog("1234444445");
4         }

 

Demo下載:https://pan.baidu.com/s/1hFXoUPZUWVCwDdjx-bTtHQ

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用List實現集合的增刪改查 ...
  • 1. 學習計劃 第十一天: 1、sso註冊功能實現 2、sso登錄功能實現 3、通過token獲得用戶信息 4、Ajax跨域請求(jsonp) 2. Sso系統工程搭建 需要創建一個sso服務工程,可以參考e3-manager創建。 e3-sso(pom聚合工程) |--e3-sso-interfa ...
  • 一、三元表達式 三元表達式僅應用於: 1、條件成立返回一個值 2、條件不成立返回一個值 res=x if x > y else y print(res) 二、函數遞歸 定義:函數的遞歸調用,即在函數調用的過程中,又直接或間接地調用了函數本身 1、直接調用 2、間接調用 遞歸分為兩個階段 1、回溯: ...
  • [TOC] 目前 EF 是 .NET 平臺下相當成熟的 ORM 框架,但是其最新發佈的 6.x 版本依然不支持 SQLite 的 CodeFirst 模式,好在有大神已經在 Nuget 上發佈的相應的 Package 來解決這個問題。筆者通過做一個小實驗來驗證一下。 問題描述 SQLite 本身不支 ...
  • unsigned char a[5] = { 12,36,96,128,182 }; a[]範圍為0~256. 數組中數都有效。 char a[5] = { 12,36,96,128,182 }; a[]範圍為-128~127. 數組中128和182均無效。 ...
  • 廢話不多說,直接開乾! 硬體配置 處理器: Intel(R) Core(TM) i5-4690k CPU @3.90GHz 記憶體容量: 8.00 GB 軟體版本 OS: Microsoft Windows 10 HTTP 跑分工具: https://github.com/codesenberg/bo ...
  • 本文主要參考自孫鐘秀主編的《操作系統教程》一書中關於進程和線程的部分。 進程 為什麼引入進程? 一,刻畫系統動態性,發揮系統併發性,提高資源利用率。 以C 為例,在編輯器Visual Studio Code寫了幾行代碼,保存為cs文件。在未運行狀態的下的代碼,稱之為靜態的程式。靜態的程式是一個相對的 ...
  • 1 private void button1_Click(object sender, EventArgs e) 2 { 3 DataTable dt = new DataTable(); 4 dt.Columns.Add("Group"); 5 dt.Columns.Add("id... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...