1. 程式人生 > >.net core 整合日誌log4net

.net core 整合日誌log4net

 .net core 框架裡本身嵌入了日誌系統。例項化 Microsoft.Extensions.Logging.LoggerFactory 開始
利用 ILoggerFactory 的擴充套件方法指定您想使用的提供程式。程式碼如下:

public static void Main(string[] args = null)
{
  ILoggerFactory loggerFactory = new LoggerFactory()
    .AddConsole()
    .AddDebug();
  ILogger logger = loggerFactory.CreateLogger<Program>();
  logger.LogInformation(
    "This is a test of the emergency broadcast system."
); }
但是現成的 ILogger 實現 (Microsoft.Extensions.Logging.Logger) 沒有此類異常處理,因此,如果發生異常,將需要呼叫程式碼來處理,而且想要這樣做的話,每次都得呼叫 Logger.LogX。解決此問題的常規方法可能是包裝記錄器以捕獲異常。基本上輸出在console上。而且沒有找到輸出txt檔案。當釋出在iis上啥都看不到。
所以決定還是整合log4net。首先nuget里加入log4net的包,增加配置檔案。然後在 startup檔案中加入下面程式碼:

     public static ILoggerRepository repository { get; set; }
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
            //(Jacky  2017-06-27)
            repository = LogManager.CreateRepository("NETCoreRepository");
            XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
        }

呼叫日誌

var log = LogManager.GetLogger(repository.Name, typeof(Startup));
      log.Info("test");