NetCore 使用Log4Net
Posted 牵只蜗牛去散步!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NetCore 使用Log4Net相关的知识,希望对你有一定的参考价值。
首先去Nuget中安装Log4Net包
安装:log4net
安装:Microsoft.Extensions.Logging.Console
安装:Microsoft.Extensions.Logging.Log4Net.AspNetCore
方式一
Program.cs文件
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
namespace NetCoreApp
public class Program
public static void Main(string[] args)
CreateWebHostBuilder(args).Build().Run();//CreateWebHostBuilder启动了Kestrel服务器,这个服务器负责监听--转发--响应客户端请求(这样就不需要IIS来负责监听,转发,响应客户端请求了,IIS就只做反向代理就行了)
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((context, loggingbuilder) =>
//该方法需要引入Microsoft.Extensions.Logging名称空间
loggingbuilder.AddFilter("System", LogLevel.Warning); //过滤掉系统默认的一些日志
loggingbuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志
//添加Log4Net
//var path = Directory.GetCurrentDirectory() + "\\\\log4net.config";
//不带参数:表示log4net.config的配置文件就在应用程序根目录下,也可以指定配置文件的路径
loggingbuilder.AddLog4Net();
)
.UseStartup<Startup>();
控制器中使用
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace NetCoreApp.Controllers
public class HomeController : Controller
//ILoggerFactory和ILogger都是系统内置的接口,它们两个都可以写日志,随便你用哪个都行
public ILoggerFactory _Factory = null;
public ILogger<HomeController> _logger = null;
//注意:ILoggerFactory的命名空间是Microsoft.Extensions.Logging;
public HomeController(ILoggerFactory factory, ILogger<HomeController> logger)
this._Factory = factory;
this._logger = logger;
public IActionResult Index()
var msg = _user.Sum();
this._Factory.CreateLogger<HomeController>().LogError("这里出现了一个错误");
this._logger.LogError("出现了严重的错误!");
return Content("OK");
log4net.config 配置文件 注意:这个配置文件的最外层用 <log4net>包裹的 ;配置文件直接放在了项目根目录下
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="RollingAppender" type="log4net.Appender.RollingFileAppender">
<!--指定日志文件保存的目录-->
<file value="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 [%propertyNDC] - %message%newline"/>
</layout>
</appender>
<root>
<priority value="ALL"/>
<level value="ALL"/>
<appender-ref ref="RollingAppender"/>
</root>
</log4net>
方式二
Startup文件
public class Startup
//为StartUp.cs添加属性
public static ILoggerRepository repository get; set;
public IConfiguration Configuration get; //构造函数注入:Configuration用于读取配置文件的
public Startup(IConfiguration configuration)
Configuration = configuration;
repository = LogManager.CreateRepository("NetCoreApp"); //我的项目名称叫NetCoreApp
//指定配置文件
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
控制器中使用
using log4net;
using Microsoft.AspNetCore.Mvc;
namespace NetCoreApp.Controllers
public class HomeController : Controller
private ILog log;
public HomeController()
this.log = LogManager.GetLogger(Startup.repository.Name, typeof(HomeController));
public IActionResult Index()
log.Error("哈哈,出现错误啦");
return Content("OK");
log4net.config配置文件:注意,这个配置文件的最外层用<configuration>包裹的;配置文件直接放在了项目根目录下
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<log4net>
<appender name="RollingAppender" type="log4net.Appender.RollingFileAppender">
<!--指定日志文件保存的目录-->
<file value="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 [%propertyNDC] - %message%newline"/>
</layout>
</appender>
<root>
<priority value="ALL"/>
<level value="ALL"/>
<appender-ref ref="RollingAppender"/>
</root>
</log4net>
</configuration>
版权声明:本文为CSDN博主「无盐海」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Fanbin168/article/details/89454051
以上是关于NetCore 使用Log4Net的主要内容,如果未能解决你的问题,请参考以下文章