如何使用log4net
提问
如何使用log4net
回答
- 配置
using log4net;
using log4net.Config;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace EzQC.Log4Net
{
/// <summary>
/// 日志配置
/// </summary>
public static class Log4NetConfig
{
/// <summary>
/// 增加Log4Net日志
/// </summary>
/// <param name="serviceCollection"></param>
/// <param name="configuration"></param>
/// <exception cref="Exception"></exception>
/// <remarks>
/// 指定自定义配置
/// "Log4Net": {
/// "RepositoryName": "NETCoreRepository",
/// "ConfigFilePath": "Log4Net/log4net.config"
/// }
/// </remarks>
public static IServiceCollection AddLog4Net(this IServiceCollection serviceCollection, IConfiguration? configuration=null)
{
var configFilePath =Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log4Net\\log4net.config");
var file = new FileInfo(configFilePath);
XmlConfigurator.Configure(file);
serviceCollection.AddSingleton(LogManager.GetLogger( "Info"));
return serviceCollection;
}
}
}
- 日志输出格式
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<log4net>
<!-- 信息日志类 -->
<logger name="Info">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!-- 信息日志附加介质-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径-->
<param name="File" value="Logs\\Info\\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="1" />
<!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2008-08-31.log-->
<param name="DatePattern" value="yyyy-MM-dd.'log'" />
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Date" />
<!--信息日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%date [%-5level] %message%n" />
</layout>
</appender>
</log4net>
</configuration>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)