NetCore使用log4

NetCore使用log4的兩種方式json

一.須要指定 日誌倉庫
nuget:log4net,Microsoft.Extensions.Logging.Log4Net.AspNetCore
 

 

 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 }
相關文章
相關標籤/搜索