NetCore使用log4
NetCore使用log4的两种方式
一.需要指定 日志仓库
nuget:log4net,Microsoft.Extensions.Logging.Log4Net.AspNetCore

1.在程序启动的时候,先创建日志仓库,日志仓库自定义,整个系统,都是唯一的一个仓库最好管理
1 public Startup(IConfiguration configuration, IHostingEnvironment environment) 2 { 3 /*var builder = new ConfigurationBuilder().SetBasePath(environment.ContentRootPath).AddJsonFile("appsettings.json");//加载json配置文 4 Configuration = configuration;*/ 5 6 //string root = environment.WebRootPath;//这个指向项目 的root目录 7 string contentRootPath = environment.ContentRootPath;//指向项目的目录 8 System.IO.FileInfo fileInfo = new System.IO.FileInfo(contentRootPath + "\\Config\\Log4net.config");//加载log4net的配置文件 9 log4net.Repository.ILoggerRepository logger = log4net.LogManager.CreateRepository("NETCoreRepository");//创建日志仓库,名字自定义 10 log4net.Config.XmlConfigurator.Configure(logger, fileInfo);//配置 11 //log4net.Config.XmlConfigurator.ConfigureAndWatch(logger,fileInfo);//配置和匹配 12 }
2.使用
log4net.ILog log = log4net.LogManager.GetLogger("NETCoreRepository",GetType()); log.Info("普通日志"); log.Error("错误信息");
二.日志仓库,组件默认 无需指定 日志仓库
1 public class Program 2 { 3 public static void Main(string[] args) 4 { 5 BuildWebHost(args).Run(); 6 } 7 8 9 10 public static IWebHost BuildWebHost(string[] args) => 11 WebHost.CreateDefaultBuilder(args) 12 .UseUrls("http://*:5001") 13 .UseIISIntegration() 14 .ConfigureLogging(loggingBuilder => 15 { 16 loggingBuilder.AddFilter("System", LogLevel.Warning); 17 loggingBuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志 18 loggingBuilder.AddLog4Net(@"Config\log4net.config"); 19 }) 20 .UseStartup<Startup>() 21 .Build(); 22 }
2.使用
1 log4net.ILog log = log4net.LogManager.GetLogger(GetType());//这一种无需指定 日志仓库 2 log.Info("普通日志"); 3 log.Error("错误信息");
或者这样
ILoggerFactory _Factory = //容器注入个对象给他 _Factory.CreateLogger<T>().LogError("这里是ILoggerFactory Error");// T为class当前类型 _Factory.LogWarning($"普通日志");
在控制器中使用,注入ILoggerFactory(命名空间:)是可行的,log4net.ILog log 不可以的
1 using ILoggerFactory = Microsoft.Extensions.Logging.ILoggerFactory;//必须是这个命名控件,才能注入成功 2 // using ILoggerFactory = log4net.Repository.Hierarchy.ILoggerFactory; // 这个是错误的,注入失败 3 4 public class DefaultController : Controller 5 { 6 private ILoggerFactory _Factory = null; 7 private ILogger<DefaultController> _logger = null; 8 //log4net.ILog log,不支持注入的, 9 public DefaultController(ILoggerFactory factory,ILogger<DefaultController> logger ) 10 { 11 this._Factory = factory; 12 this._logger = logger; 13 } 14 }
分类:
net core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具