NetCore使用log4的兩種方式json
一.須要指定 日誌倉庫
nuget:log4net,Microsoft.Extensions.Logging.Log4Net.AspNetCore
![](http://static.javashuo.com/static/loading.gif)
1.在程序啓動的時候,先建立日誌倉庫,日誌倉庫自定義,整個系統,都是惟一的一個倉庫最好管理app
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.使用ui
log4net.ILog log = log4net.LogManager.GetLogger("NETCoreRepository",GetType()); log.Info("普通日誌"); log.Error("錯誤信息");
二.日誌倉庫,組件默認 無需指定 日誌倉庫this
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.使用spa
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 }