.NET CORE 3.1 使用Log4Net日志记录
VS 2019
创建.net core web api项目
nuget安装
1. log4net.AspNetCore
2. Microsoft.Extensions.Logging.Log4Net.AspNetCore
新建配置文件 log4net.config 写入下面内容
也可官网:log4net
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<log4net>
<appender name="RollingAppender" type="log4net.Appender.RollingFileAppender">
<!--指定日志文件保存的目录-->
<file value="D:\log\log.txt"/>
<!--追加日志内容-->
<appendToFile value="true"/>
<!--可以为:Once|Size|Date|Composite-->
<!--Compoosite为Size和Date的组合-->
<rollingStyle value="Composite"/>
<!--设置为true,当前最新日志文件名永远为file字节中的名字-->
<staticLogFileName value="false"/>
<!--当备份文件时,备份文件的名称及后缀名-->
<datePattern value="yyyyMMdd.TXT"/>
<!--日志最大个数-->
<!--rollingStyle节点为Size时,只能有value个日志-->
<!--rollingStyle节点为Composie时,每天有value个日志-->
<maxSizeRollBackups value="20"/>
<!--可用的单位:KB|MB|GB-->
<maximumFileSize value="5MB"/>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ALL"/>
<param name="LevelMax" value="FATAL"/>
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender>
<root>
<priority value="ALL"/>
<level value="ALL"/>
<appender-ref ref="RollingAppender"/>
</root>
</log4net>
</configuration>
修改 Program 内的 public static IHostBuilder CreateHostBuilder(string[] args) 方法
public static IHostBuilder CreateHostBuilder(string[] args)
{
var hostbuilder = Host.CreateDefaultBuilder(args) //创建一个默认的主机builder
.ConfigureLogging((context, loggingBuilder) =>
{
loggingBuilder.AddFilter("System", LogLevel.Warning);
loggingBuilder.AddFilter("Microsoft", LogLevel.Warning);
loggingBuilder.AddLog4Net("log4net.config"); //注入log4net配置log4Net配置文件的读取
})
.ConfigureWebHostDefaults(webBuilder => //配置成一个默认的Web主机
{
webBuilder.UseStartup<Startup>()
.UseUrls("http://*:5000;https://*:5001"); //使用Startup文件来实现配置
});
return hostbuilder;
}
新疆控制器 Home
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace WebLog4Netcore3._1.Controllers
{
[ApiController]
[Route("[controller]")]
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
_logger.LogInformation("ValueController 控制器已构造");
}
public IActionResult Index()
{
return View();
}
[HttpGet]
[Route("GetLogInfoTest")]
public ContentResult GetLogInfoTest()
{
_logger.LogInformation("info日志输出");
_logger.LogDebug("debug日志输出");
_logger.LogError("error日志输出");
_logger.LogWarning("warning日志输出");
return Content("测试输出");
}
}
}
测试输出