添加log4net包
Install-Package Log4net
1、建立一个log4net.config配置文件
2、输入配置内容
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<log4net>
<!--根配置-->
<root>
<!--日志级别:可选值: ERROR > WARN > INFO > DEBUG -->
<level value="ERROR"/>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<appender-ref ref="ErrorLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="InfoLog" />
<appender-ref ref="DebugLog" />
</root>
<!-- 错误 Error.log-->
<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
<!--目录路径,可以是相对路径或绝对路径-->
<param name="File" value="Log\Error\"/>
<!--文件名,按日期生成文件夹-->
<param name="DatePattern" value="yyyy-MM-dd"/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- 警告 Warn.log-->
<appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
<!--目录路径,可以是相对路径或绝对路径-->
<param name="File" value="Log\Warn\"/>
<!--文件名,按日期生成文件夹-->
<param name="DatePattern" value="yyyy-MM-dd"/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<!-- 信息 Info.log-->
<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
<!--目录路径,可以是相对路径或绝对路径-->
<param name="File" value="Log\Info\"/>
<!--文件名,按日期生成文件夹-->
<param name="DatePattern" value="yyyy-MM-dd"/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<!-- 调试 Debug.log-->
<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
<!--目录路径,可以是相对路径或绝对路径-->
<param name="File" value="Log\Debug\"/>
<!--文件名,按日期生成文件夹-->
<param name="DatePattern" value="yyyy-MM-dd"/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
</log4net>
</configuration>
3、创建一个日志操作接口(之后注入需要使用)
/// <summary>
/// 日志接口
/// </summary>
public interface ILogTool
{
/// <summary>
/// 写入错误日志
/// </summary>
/// <param name="errorInfo">错误日志内容</param>
public void Error(string errorInfo);
/// <summary>
/// 写入消息日志
/// </summary>
/// <param name="info">消息日志内容</param>
public void Info(string info);
/// <summary>
/// 写入警告日志
/// </summary>
/// <param name="warnInfo">警告日志内容</param>
public void Warn(string warnInfo);
/// <summary>
/// 写入调试日志
/// </summary>
/// <param name="debugInfo">调试日志内容</param>
public void Debug(string debugInfo);
}
4、编写一个日志类实现日志操作接口
/// <summary>
/// 日志工具类
/// </summary>
public class LogTool: ILogTool
{
private readonly ILog log = LogManager.GetLogger("LogRepository", typeof(LogTool));
/// <summary>
/// 写入错误日志
/// </summary>
/// <param name="errorInfo">错误日志内容</param>
public void Error(string errorInfo)
{
log.Error(errorInfo);
}
/// <summary>
/// 写入消息日志
/// </summary>
/// <param name="info">消息日志内容</param>
public void Info(string info)
{
log.Info(info);
}
/// <summary>
/// 写入警告日志
/// </summary>
/// <param name="warnInfo">警告日志内容</param>
public void Warn(string warnInfo)
{
log.Warn(warnInfo);
}
/// <summary>
/// 写入调试日志
/// </summary>
/// <param name="debugInfo">调试日志内容</param>
public void Debug(string debugInfo)
{
log.Debug(debugInfo);
}
}
5、在Pragram.cs中加入代码
ILoggerRepository repository = LogManager.CreateRepository("LogRepository");
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));//此行文件目录为项目根目录,根据自己需要修改
builder.Services.AddSingleton<ILogTool, LogTool>();//因为日志不需要其他操作,所以这里注入的时生命周期可以使用单例
第一行中方法体内“LogRepository”为标识名,可以是任意字符串,但务必与日志实现类中
private readonly ILog log = LogManager.GetLogger("LogRepository", typeof(LogTool));
方法体内第一个参数相同,否则会报找不到名称的错误。
6、在控制器中使用方式为(获取注入)
private readonly ILogTool _logTool;
public WeatherForecastController(ILogTool logTool)
{
_logTool = logTool;
}
方法体内使用
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
_logTool.Info("1");
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
此处仅为举例,具体在什么地方使用看项目需要,以上为全部内容,后续如果有需要作者会再补充,祝大家早日成为技术大牛!