asp.Netcoreログコンポーネントserilog
4094 ワード
リファレンス
serilogのインストール
$ dotnet add package Serilog.AspNetCore
$ dotnet add package Serilog.Settings.Configuration
$ dotnet add package Serilog.Sinks.Console
$ dotnet add package Serilog.Sinks.RollingFile
プロファイルの変更
コンポーネントのインストールSettings.コンフィギュレーション後、serilogが使用できる.Netcoreのプロファイル
appsettings.json
{
"Serilog": {
"WriteTo": [
{
"Name": "RollingFile",
"Args": { "pathFormat": "log-{Date}.txt" }
}
],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
}
}
}
Serilogをインストールします.Sinks.RollingFileを使用すると、ログを日付で整理されたファイルに出力し、プロファイルにファイル生成のルールとパスを設定できます.
serilogをミドルウェアとして注入
Program.cs
....
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Events;
namespace Demo.API
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup().UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext()
.WriteTo.Console());
## serilog
}
}
コントローラでのログコンポーネントの使用
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
namespace Demo.API.Controllers
{
[Authorize]
[Route("Api/[controller]")]
[ApiController]
public class UserController : ControllerBase
{
private readonly UserManager _userManager;
private readonly ILogger _logger;
public UserController(UserManager userManager, ILoggerFactory logFactory)
{
_userManager = userManager;
_logger = logFactory.CreateLogger();
}
///
///
///
///
///
[Route("Register")]
[AllowAnonymous]
[HttpPost]
public async Task Register(RegisterModel model)
{
_logger.LogInformation(" =", model.PhoneNumber);
if (!ModelState.IsValid)
{
return ApiResultUtil.Fail(" !");
}
try
{
IdentityResult result = null;
var user = await _userManager.FindByNameAsync(model.UserName);
if (user != null)
return ApiResultUtil.Fail(" : ");
user = new UserIdentity { UserName = model.UserName, Email = model.Email, PhoneNumber = model.PhoneNumber };
result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
return ApiResultUtil.Success();
}
else
{
return ApiResultUtil.Fail(" !");
}
}
catch (Exception ex)
{
_logger.LogError(0, ex, " :" + ApiResultUtil.GetMessage(ex));
return ApiResultUtil.Fail(" !");
}
}
}
}