.netcore入門20:aspnetcore集成log4net

環境:

  • window 10
  • vs2019 16.5.1
  • asp.net core 3.1
  • Microsoft.Extensions.Logging.Log4Net.AspNetCore 3.1.0

參照:
Apache log4net™ Manual - Configuration
Microsoft.Extensions.Logging.Log4Net.AspNetCore 地址

一、準備aspnetcore webapi項目

新建一個webapi項目即可,略。

二、安裝nuget包

在這裏插入圖片描述

三、在Programe.cs文件中配置log4net

在這裏插入圖片描述

四、在項目目錄下新建log4net.config文件

在這裏插入圖片描述
log4net.config文件內容如下:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <!--vs調試窗口輸出-->
  <appender name="DebugAppender" type="log4net.Appender.DebugAppender" >
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger scope=[%property{scope}] - %message %exception%newline" />
    </layout>
  </appender>
  <!--以滾動文件的方式輸出)-->
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <!--日誌路徑-->
    <file value="Log/" />
    <!--是否是向文件中追加日誌-->
    <appendToFile value="true" />
    <!--log保留天數-->
    <param name= "MaxSizeRollBackups" value= "10"/>
    <!--每個文件最大1M-->
    <param name="maximumFileSize" value="1MB" />
    <!--日誌根據日期滾動-->
    <param name="RollingStyle" value="Date" />
    <!--日誌文件名格式爲:logs_20080831.log-->
    <param name="DatePattern" value="&quot;logs_&quot;yyyyMMdd&quot;.log&quot;" />
    <!--日誌文件名是否是固定不變的-->
    <param name="StaticLogFileName" value="false" />
    <!--佈局-->
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger scope=[%property{scope}] - %message %exception%newline" />
    </layout>
  </appender>
  <!--控制檯輸出-->
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger scope=[%property{scope}] - %message %exception%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL"/>
    <appender-ref ref="DebugAppender" />
    <appender-ref ref="RollingFile" />
    <appender-ref ref="ConsoleAppender" />
  </root>
</log4net>

五、在控制器中寫入測試代碼(WeatherForecastController.cs)

public class WeatherForecastController : ControllerBase
{
 	 //...
     [HttpGet]
     public IEnumerable<WeatherForecast> Get()
     {
         _logger.LogTrace("trace");
         _logger.LogDebug("debug");
         _logger.LogInformation("info");
         _logger.LogWarning("warn");
         _logger.LogError("error");
         _logger.LogCritical("critical");
         using (_logger.BeginScope("測試日誌的Scope"))
         {
             _logger.LogTrace("scope-trace");
             _logger.LogDebug("scope-debug");
             _logger.LogInformation("scope-info");
             _logger.LogWarning("scope-warn");
             _logger.LogError("scope-error");
             _logger.LogCritical("scope-critical");
         }
         _logger.LogTrace("Scope已經結束了。。。");
         var rng = new Random();
         throw new Exception("測試異常日誌");
         return Enumerable.Range(1, 5).Select(index => new WeatherForecast
         {
             Date = DateTime.Now.AddDays(index),
             TemperatureC = rng.Next(-20, 55),
             Summary = Summaries[rng.Next(Summaries.Length)]
         })
         .ToArray();
     }
     //...
}

六、運行查看效果

控制檯效果:
在這裏插入圖片描述
文件效果:
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章