Asp.Net 6.0集成 Log4Net

环境

需要安装NuGet包,明细如下:

  • log4net
  • Microsoft.Extensions.Logging.Log4Net.AspNetCore

配置文件

文件名称 log4net.config,默认可以放在与启动类Program.cs同级目录下

xml 复制代码
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <!-- Define the appender for info level -->
  <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
    <file value="./LOG/info/" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="'info.'yyyy-MM-dd'.log'" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
    <!-- Define a filter to only accept info level -->
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="INFO" />
      <levelMax value="INFO" />
    </filter>
  </appender>

  <!-- Define the appender for error level -->
  <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
    <file value="./LOG/error/" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="'error.'yyyy-MM-dd'.log'" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline%exception%newline" />
    </layout>
    <!-- Define a filter to only accept error level -->
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ERROR" />
      <levelMax value="ERROR" />
    </filter>
  </appender>

  <!-- Set root logger level to ALL and its appenders to InfoAppender and ErrorAppender -->
  <root>
    <level value="ALL"/>
    <!-- You can also use other levels such as DEBUG, WARN, FATAL etc. -->
    <!-- See https://logging.apache.org/log4net/release/sdk/log4net.Core.Level.html for more details -->

    <appender-ref ref ="InfoAppender"/>
    <appender-ref ref ="ErrorAppender"/>
  </root>
</log4net>

配置

在启动类中进行配置(Program.cs)

cs 复制代码
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
#region 配置 log4Net 需要安装log4net、Microsoft.Extensions.Logging.Log4Net.AspNetCore
builder.Services.AddLogging(cfg =>
{
    cfg.AddLog4Net();
    //默认的配置文件路径是在根目录,且文件名为log4net.config
    //如果文件路径或名称有变化,需要重新设置其路径或名称
    //比如在项目根目录下创建一个名为cfg的文件夹,将log4net.config文件移入其中,并改名为log.config
    //则需要使用下面的代码来进行配置
    //cfg.AddLog4Net(new Log4NetProviderOptions()
    //{
    //    Log4NetConfigFileName = "cfg/log.config",
    //    Watch = true
    //});
});
#endregion

使用

cs 复制代码
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{

    private readonly ILogger<WeatherForecastController> _logger;
// 构造函数注入
    public WeatherForecastController(ILogger<WeatherForecastController> logger, IUnitOfWork uow)
    {
        _logger = logger;
        Uow = uow;
    }

    public IUnitOfWork Uow { get; }

    [HttpGet("GetUsers")]
    public async Task<ApiResponse> GetUsers()
    {
        IRepository<User> repository = Uow.GetRepository<User>();
        IList<User> users = await repository.GetAllAsync(orderBy: f => f.OrderByDescending(x => x.UpdateDate));
        _logger.LogInformation("查询所有用户");
        return new ApiResponse(true, users);
    }

}

效果

相关推荐
It's now2 分钟前
Spring Framework 7.0 原生弹性功能系统讲解
java·后端·spring
无限大69 分钟前
Agent 入门科普:从"人工智障"到"数字打工人"的进化史
后端
99乘法口诀万物皆可变23 分钟前
CANdelaStudio类似页面制作方案
c#
ytttr87331 分钟前
基于C#的CAN总线数据解析BMS上位机
android·unity·c#
一 乐32 分钟前
人事管理系统|基于Springboot+vue的企业人力资源管理系统设计与实现(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·后端
SelectDB37 分钟前
浙江头部城商行:每日 700 万查询、秒级响应,Apache Doris 查算分离架构破局资源冲突
数据库·后端·apache
在路上看风景39 分钟前
1.10 线程其他操作
c#
追逐时光者1 小时前
分享 4 款基于 C# 编写、实用、开源的 Visual Studio 扩展插件
后端·.net·visual studio
步步为营DotNet1 小时前
深度解析C# 11的Required成员:编译期验证保障数据完整性
java·前端·c#
vx_bisheyuange2 小时前
基于SpringBoot的社区养老服务系统
java·spring boot·后端·毕业设计