環境:
- 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=""logs_"yyyyMMdd".log"" />
<!--日誌文件名是否是固定不變的-->
<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();
}
//...
}
六、運行查看效果
控制檯效果:
文件效果: