**
- 通过Nuget程序包搜索log4net进行安装;
- 在App.config中进行配置,我这里是以每天为一个单位文件夹,这样后面查起来也方便,每个文件夹中包含InfoLog和ErrorLog两个txt;
具体配置如下可以根据自己的需求进行调整
xml
<log4net>
<!-- 定义两个独立Appender:Info和Error -->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<!-- 动态生成日期文件夹(如Logs/20251202) -->
<file value="Logs/" />
<datePattern value="yyyyMMdd'/InfoLog.txt'" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} [%thread] %level - %message%newline" />
</layout>
<!-- 仅记录INFO及以上级别 -->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs/" />
<datePattern value="yyyyMMdd'/ErrorLog.txt'" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} [%thread] %level - %message%newline%exception" />
</layout>
<!-- 仅记录ERROR及以上级别 -->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
</filter>
</appender>
<!-- 关联Appender到根日志 -->
<root>
<level value="ALL" />
<appender-ref ref="InfoAppender" />
<appender-ref ref="ErrorAppender" />
</root>
</log4net>
- 编写LogHelper辅助类(可进行参考)
csharp
public class LogHelper
{
private static readonly ILog _logger = LogManager.GetLogger(typeof(LogHelper));
// 通用日志方法(支持自动捕获调用者信息)
public static void Log(LogLevel level, string message,
[CallerFilePath] string file = "",
[CallerMemberName] string member = "")
{
var className = System.IO.Path.GetFileNameWithoutExtension(file);
var fullMessage = $"[{className}.{member}] {message}";
switch (level)
{
case LogLevel.Debug: _logger.Debug(fullMessage); break;
case LogLevel.Info: _logger.Info(fullMessage); break;
case LogLevel.Warn: _logger.Warn(fullMessage); break;
case LogLevel.Error: _logger.Error(fullMessage); break;
case LogLevel.Fatal: _logger.Fatal(fullMessage); break;
}
}
// 错误日志专用(自动捕获异常)
public static void Error(string message, Exception ex = null,
[CallerFilePath] string file = "",
[CallerMemberName] string member = "")
{
var className = System.IO.Path.GetFileNameWithoutExtension(file);
var fullMessage = $"[{className}.{member}] {message}";
_logger.Error(fullMessage, ex); // 自动记录异常堆栈
}
}
public enum LogLevel { Debug, Info, Warn, Error, Fatal }
- 最后要在入口函数Program中加载并初始化 XML 格式日志配置,代码如下
csharp
log4net.Config.XmlConfigurator.Configure();
**