5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

.Net Core 3.1でlog4netを使ってみた

Last updated at Posted at 2020-04-03

はじめに

.Net Frameworkも4.8が最後のバージョンで 、.Net Coreの後継である.Net5がメインストリームになるようです。そろそろ、.Net Coreについて調べてみるかということで、まず、 ログの出力方法について調べてみました。

ASP .Net Coreでは、標準でILoggerというインターフェースが用意されています。
コンソールへの出力やイベントログへの書き込み等標準で用意されているようですが、やっぱり使い慣れたlog4netを使いたいです。

前提条件

log4netライブラリを直接使用することもできるようですが、やはりお作法に従いたいのと.Net Coreが出力するログ等もlog4netで出したいので、ILoggerの拡張機能を使用します。

ASP .Net Core プロジェクトにlog4netを追加

以下の拡張ライブラリをNuGetで追加します。

Microsoft.Extensions.Logging.Log4Net.AspNetCore

log4netの設定ファイルをプロジェクトに追加します。
log4net.config (デフォルト名)

.Net Core3.1では、log4net.configでファイルのパスに${特殊フォルダ}が使えません。クロスプラットフォームだからだよね?

log4netを使用するようにコードを変更します。

Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
//log4netロギングプロバイダを追加。(デフォルトのプロバイダは削除)
    .ConfigureLogging((hostingContext, logging) =>
    {
        logging.ClearProviders();
        logging.AddLog4Net();
    })
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    };

ログ出力レベルの設定は、以下のファイルが優先されます。
このファイルですべて出力にしておいて、log4net.configで制御するのがいいと思います。

appsettings.json
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }

ASP .Net Core プロジェクトのサンプルコントローラーにログを追加してみます。

WeatherForecastController.cs
private readonly ILogger<WeatherForecastController> logger_;

//コンストラクタでILoggerのインスタンスを受け取ります。
public WeatherForecastController( ILogger<WeatherForecastController> logger)
{
   logger_ = logger;
}

[HttpGet]
public IEnumerable< WeatherForecast> Get()
{
//ログを出力します。
    logger_.LogInformation("Get was called.");
...
}

最後に

こうしておくと、log4netが使えない時に切り替えも簡単でいいですね。
設定ファイルがappsettings.jsonとlog4net.configと2つになるので、切り替えるときは注意が必要ですが。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?