C#中Log4的使用教程[完全圖解]
沒有日志的系統是不完整的系統,下面小趙四步(三分鍾)教會你使用Log4;
我去,感覺上面有滿滿的教科書式的感覺。文章只是個人筆記,大佬請放過
第一步
- 使用很簡單,相對於Nlog,首先第一步在Nuget上面添加包
log4net
Microsoft.Extensions.Logging.Log4Net.AspNetCore
第二步
- 添加
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=""GlobalExceptionLogs_"yyyyMMdd".log"" />
<!--日志文件名是否為靜態-->
<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=""GlobalInfoLogs_"yyyyMMdd".log"" />
<!--多線程時采用最小鎖定-->
<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"));
})
第二種方法是在中間件里面注入-大同小異:
第四步
- 使用起來就特別的簡單,在控制器里面先構造,在使用
執行調試,就在項目文件夾下面看到生成的日志了
項目地址放在https://github.com/PrideJoy/NetTemple
關於其他個人筆記
- 五分鍾完全弄懂C#特性
- redis中的 緩存穿透、緩存擊穿、緩存雪崩區別和解決方案
- 為什么要用隊列消息(mq)?
- C# 使用RabbitMQ的完整圖解
- VS中進行編碼時智能提示由英文切換為中文
- 開源項目-一沙后台管理(core-mvc-緩存,支持多數據庫)
- ASP.NET Core中使用NLog記錄日志
- Visual Studio中Git的使用
- [完全圖解]NET Croe 使用JWT驗證簽名
分享最新的Net和Core相關技術以及實戰技巧,更重要的是分享Net項目,不容錯過的還有書籍,手寫筆記,壁紙分享 等。