【ASP.NET Core Web】Serilogでログをファイルを出力する
ASP.NET Core WebでパッケージSerilog
を使ってログをファイルを出力したい!
概要
今回の記事では、ASP .NET Core WebでパッケージSerilog
を使ってログをファイルを出力する手順を掲載する。
仕様書
環境
- .NET 8
- Serilog 3.1.1
- Serilog.AspNetCore 8.0.1
手順書
インストール編とコード編の2部構成です。
インストール編
ターミナルで下記のコマンドを実行するか、「NuGet パッケージの管理」から「Serilog」と「Serilog.AspNetCore」をインストールする。
dotnet add package Serilog
dotnet add package Serilog.AspNetCore
コード編
Program.cs
にSerilog
のログの設定を追加する。
...
using Serilog;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
...
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.Debug()
.WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
builder.Host.UseSerilog(Log.Logger);
...
app.Run();
}
}
メソッドWriteTo.File
の第1引数でログファイルのパスとファイル名を設定する。この例では実行ファイルのあるディレクトリにlog<yyymmdd>.txt
が作成される。
rollingInterval
でファイルをどう分けるか設定できる。RollingInterval.Day
を設定すると日毎にログファイルが作成される。
あとは、コントローラーの中などでASP .NET Coreの標準のログと同様にメソッド
LogInformation`などでログを出力できる。
public class SampleController : Controller
{
private readonly ILogger<SampleController> logger;
public SampleController(ILogger<SampleController> lgr)
{
logger = lgr;
}
public JsonResult Index()
{
logger.LogInformation($@"Index!!!!!!!");
return new JsonResult(new { message = "Index.", })
{ StatusCode = 200 };
}
}
ASP .NET Core`の標準のログを使ったコードからコードを書き換えなくて済むのは楽で助かる。
まとめ(感想文)
サーバーで動かすプログラムのデバッグってローカルで動かすプログラムと比べて大変だと思う今日この頃。