.Net Core WebApi 中集成Log4Net 日志记录
1.安装Log4Net的 NuGet 包:
安装时只需要安装这一个Nuget包即可 其它依赖的包会自动安装到项目。
安装命令:insatll-package Microsoft.Extensions.Logging.Log4Net.AspNetCore 3.0.0 (也可用NuGet管理器安装)!
2.Log4Net的配置文件的内容:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<!-- 日志的等级,它们由高到底分别为: OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL -->
<appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\Info\info.log" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="PreserveLogFileNameExtension" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\Debug\debug.log" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="PreserveLogFileNameExtension" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\Error\Err.log" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="PreserveLogFileNameExtension" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<appender name="warnAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\Warn\Warn.log" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="PreserveLogFileNameExtension" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="fatalAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Logs\Fatal\Fatal.log" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="PreserveLogFileNameExtension" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="FATAL" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
<root>
<level value="ALL" ref="infoAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="errorAppender" />
<appender-ref ref="debugAppender" />
<appender-ref ref="warnAppender" />
<appender-ref ref="fatalAppender" />
</root>
</log4net>
3.在Program中注册Log4Get
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logbuilder =>
{
logbuilder.AddFilter("System", LogLevel.Warning);
logbuilder.AddFilter("Microsoft", LogLevel.Warning);
logbuilder.SetMinimumLevel(LogLevel.Warning);
logbuilder.AddLog4Net();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
4. 在controller中测试
private readonly ILogger<UpdateFilesController> _logger;
private readonly IUpdateFiles _updateFiles;
public UpdateFilesController(ILogger<UpdateFilesController> logger,
IUpdateFiles updateFiles)
{
_logger = logger;
_updateFiles = updateFiles;
}
/// <summary>
/// 获取要更新的版本信息
/// </summary>
/// <returns></returns>
[HttpGet]
public List<FilesInfo> InspectVersion()
{
return _updateFiles.InspectVersion();
}
/// <summary>
/// 获取要更新的全部文件信息
/// </summary>
/// <param name="version"></param>
/// <returns></returns>
[HttpGet]
public List<FilesInfo> GetUpdateFiles(long version, bool isforce)
{
_logger.LogInformation("测试日志");
return _updateFiles.GetUpdateFiles(version, isforce);
}
5.日志记录结果
可以看到在我们的测试日志就已经记录成功了! 快去实测吧!