C#中Log4的使用教程[完全圖解]


C#中Log4的使用教程[完全圖解]

沒有日志的系統是不完整的系統,下面小趙四步(三分鍾)教會你使用Log4;
我去,感覺上面有滿滿的教科書式的感覺。文章只是個人筆記,大佬請放過

第一步

  1. 使用很簡單,相對於Nlog,首先第一步在Nuget上面添加包

log4net
Microsoft.Extensions.Logging.Log4Net.AspNetCore

在這里插入圖片描述

第二步

  1. 添加log4net.config配置文件
    代碼我貼在下面
<?xml version="1.0" encoding="utf-8"?>
<log4net>
  <!-- 將日志以回滾文件的形式寫到文件中 -->
  <!-- 按日期切分日志文件,並將日期作為日志文件的名字 -->
  <!--Error-->
  <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
	<!--不加utf-8編碼格式,中文字符將顯示成亂碼-->
    <param name="Encoding" value="utf-8" />   
    <file value="Log/"/>
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <!--日期的格式,每天換一個文件記錄,如不設置則永遠只記錄一天的日志,需設置-->
    <datePattern value="&quot;GlobalExceptionLogs_&quot;yyyyMMdd&quot;.log&quot;" />
    <!--日志文件名是否為靜態-->
    <StaticLogFileName value="false"/>
    <!--多線程時采用最小鎖定-->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <!--布局(向用戶顯示最后經過格式化的輸出信息)-->
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date| %-5level %newline%message%newline--------------------------------%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ERROR" />
      <levelMax value="FATAL" />
    </filter>
  </appender>
  <!--Error-->



  <!--Info-->
  <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
	<!--不加utf-8編碼格式,中文字符將顯示成亂碼-->
    <param name="Encoding" value="utf-8" />   
    <!--定義文件存放位置-->
    <file value="Log/"/>
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <!--日志文件名是否為靜態-->
    <StaticLogFileName value="false"/>
    <!--日期的格式,每天換一個文件記錄,如不設置則永遠只記錄一天的日志,需設置-->
    <datePattern value="&quot;GlobalInfoLogs_&quot;yyyyMMdd&quot;.log&quot;" />
    <!--多線程時采用最小鎖定-->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <!--布局(向用戶顯示最后經過格式化的輸出信息)-->
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date| %-5level%c %newline%message%newline--------------------------------%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG" />
      <levelMax value="WARN" />
    </filter>
  </appender>
  <!--Info-->

  <root>
    <!-- 控制級別,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
    <!-- 比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日志將不會被記錄 -->
    <!-- 如果沒有定義LEVEL的值,則缺省為DEBUG -->
    <level value="ALL" />
    <!-- 按日期切分日志文件,並將日期作為日志文件的名字 -->
    <appender-ref ref="ErrorLog" />
    <appender-ref ref="InfoLog" />
  </root>
</log4net>

第三步

在Program中注冊---------這是第一種注冊方式
(在這里我踩了一個坑,一定要通過Path.Combine()的這種方式注入,我剛開始使用的是第一種,結果兩個小時原地踏步走,我還以為是log4有問題,我在mvc項目中,做法完全一樣,但是到NET5中就出現了這個問題,在看老張的哲學文章的時候發現了這個坑,我試了一下,完全ok,我就想上面的那個他也不報錯,但就是沒有日志)

  .ConfigureLogging(loggingBuilder =>
                {
                    //這種注冊方式有問題,采用下面的放方式
                    //loggingBuilder.AddLog4Net("log4net.config");
                    //一定要注意文件的路徑
                    loggingBuilder.AddLog4Net(Path.Combine(Directory.GetCurrentDirectory(), "log4net.config"));
                })

在這里插入圖片描述

第二種方法是在中間件里面注入-大同小異:

在這里插入圖片描述

第四步

  1. 使用起來就特別的簡單,在控制器里面先構造,在使用
    在這里插入圖片描述
    執行調試,就在項目文件夾下面看到生成的日志了

在這里插入圖片描述
在這里插入圖片描述

項目地址放在https://github.com/PrideJoy/NetTemple

關於其他個人筆記

  1. 五分鍾完全弄懂C#特性
  2. redis中的 緩存穿透、緩存擊穿、緩存雪崩區別和解決方案
  3. 為什么要用隊列消息(mq)?
  4. C# 使用RabbitMQ的完整圖解
  5. VS中進行編碼時智能提示由英文切換為中文
  6. 開源項目-一沙后台管理(core-mvc-緩存,支持多數據庫)
  7. ASP.NET Core中使用NLog記錄日志
  8. Visual Studio中Git的使用
  9. [完全圖解]NET Croe 使用JWT驗證簽名

分享最新的Net和Core相關技術以及實戰技巧,更重要的是分享Net項目,不容錯過的還有書籍,手寫筆記,壁紙分享 等。
在這里插入圖片描述


免責聲明!

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



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