(精華)2020年7月20日 ASP.NET Core serilog日誌框架的使用
首先安裝如下兩個包
Install-Package Serilog.AspNetCore
Install-Package Serilog.Sinks.Elasticsearch
封裝使用
/// <summary>
/// 配置日誌
/// </summary>
/// <param name="hostBuilder">建造者</param>
/// <returns></returns>
public static IHostBuilder UseLog(this IHostBuilder hostBuilder)
{
var rootPath = AppDomain.CurrentDomain.BaseDirectory;
var path = Path.Combine(rootPath, "logs", "log.txt");
return hostBuilder.UseSerilog((hostingContext, serilogConfig) =>
{
var envConfig = hostingContext.Configuration;
LogConfig logConfig = new LogConfig();
envConfig.GetSection("log").Bind(logConfig);
logConfig.overrides.ForEach(aOverride =>
{
serilogConfig.MinimumLevel.Override(aOverride.source, aOverride.minlevel.ToEnum<LogEventLevel>());
});
serilogConfig.MinimumLevel.Is(logConfig.minlevel.ToEnum<LogEventLevel>());
if (logConfig.console.enabled)
serilogConfig.WriteTo.Console();
if (logConfig.debug.enabled)
serilogConfig.WriteTo.Debug();
if (logConfig.file.enabled)
{
string template = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3} {SourceContext:l}] {Message:lj}{NewLine}{Exception}";
serilogConfig.WriteTo.File(
path,
outputTemplate: template,
rollingInterval: RollingInterval.Day,
shared: true,
fileSizeLimitBytes: 10 * 1024 * 1024,
rollOnFileSizeLimit: true
);
}
if (logConfig.elasticsearch.enabled)
{
var uris = logConfig.elasticsearch.nodes.Select(x => new Uri(x)).ToList();
serilogConfig.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(uris)
{
IndexFormat = logConfig.elasticsearch.indexformat,
AutoRegisterTemplate = true,
AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7
});
}
});
}
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseIdHelper()//分散式自增Id元件
.UseLog()//使用serilog日誌框架
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace CORE.WEBERP.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
_logger.LogInformation("開始");
int a = 0;
int b = 2;
try
{
_logger.LogDebug("計算兩者相除");
Console.WriteLine(b / a);
}
catch (Exception ex)
{
_logger.LogError(ex, "計算出現意外的錯誤");
}
_logger.LogInformation("結束");
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
}
}
備註:其他函式請移到類庫中去檢視,本人部落格裡都有。
相關文章
- (精華)2020年7月20日 ASP.NET Core log4.net日誌框架的使用ASP.NET框架
- asp.net core使用serilog將日誌推送到騰訊雲日誌服務ASP.NET
- .net core中的那些常用的日誌框架(Serilog篇)框架
- aspnetcore 使用serilog日誌NetCore
- ASP.NET Core之Serilog、SEQ、ILogger構建視覺化日誌ASP.NET視覺化
- 如何在 ASP.Net Core 中使用 SerilogASP.NET
- ASP.NET Core 整合測試中通過 Serilog 向控制檯輸出日誌ASP.NET
- (精華)2020年7月15日 ASP.NET Core EFCore分庫分表框架的使用(手寫版)ASP.NET框架
- (精華)2020年7月22日 ASP.NET Core Swagger的使用(NSwag工具版)ASP.NETSwagger
- (精華)2020年7月1日 ASP.NET Core Swagger的使用(Swashbuckle工具版)ASP.NETSwagger
- 零基礎寫框架(3): Serilog.NET 中的日誌使用技巧框架
- ASP.NET Core視覺化日誌元件使用ASP.NET視覺化元件
- 理解ASP.NET Core - 日誌(Logging)ASP.NET
- (精華)2020年7月1日 ASP.NET Core 使用Enablebuffering多次讀取bodyASP.NET
- 【ASP.NET Core】使用SignalR推送伺服器日誌ASP.NETSignalR伺服器
- 玩轉ASP.NET Core中的日誌元件ASP.NET元件
- (精華)2020年9月17日 ASP.NET Core 中介軟體詳解ASP.NET
- (精華)2020年7月21日 ASP.NET Core 容器偽屬性注入ASP.NET
- .net core下優秀的日誌框架使用解析,附原始碼框架原始碼
- .net下優秀的日誌框架Serilog,你用上了嗎?強烈推薦框架
- (精華)2020年7月1日 ASP.NET Core 使用靜態檔案和目錄瀏覽ASP.NET
- (精華)2020年7月21日 ASP.NET Core 模型驗證過濾器ASP.NET模型過濾器
- (精華)2020年9月2日 .NET Core 命令列的基本使用命令列
- 十八、.net core(.NET 6)搭建ElasticSearch(ES)系列之使用Logstash通過Rabbitmq接收Serilog日誌到ESElasticsearchMQ
- 手把手教你AspNetCore WebApi:Serilog(日誌)NetCoreWebAPI
- .net core中的那些常用的日誌框架(Logging篇)框架
- .net core中的那些常用的日誌框架(NLog篇)框架
- (精華2020年6月24日更新)asp.net core3.1實戰篇 RabbitMQ的使用一(安裝Erlang)ASP.NETMQ
- (精華)2020年7月21日 ASP.NET Core 使用NewtonsoftJson替換掉預設的json序列化元件ASP.NETJSON元件
- (精華2020年6月24日更新)asp.net core3.1實戰篇 RabbitMQ的使用二(環境搭建和初步使用)ASP.NETMQ
- (精華)2020年7月3日 ASP.NET Core AutoMapper實現類的相互對映(工具版)ASP.NETAPP
- .NET Core使用Nlog記錄日誌
- (精華)2020年7月1日 ASP.NET Core 解決跨域問題(手寫版)ASP.NET跨域
- ASP.NET Core 2.2 基礎知識(八)【日誌記錄】ASP.NET
- ASP.NET Core之OpenTelemetry、SEQ構建視覺化日誌ASP.NET視覺化
- 萬字長文帶你瞭解Java日誌框架使用Java日誌框架Java框架
- (精華)2020年7月2日 ASP.NET Core Castle實現服務注入和AOP(工具版)ASP.NETAST
- ASP.NET Core 入門教程 2、使用ASP.NET Core MVC框架構建Web應用ASP.NETMVC框架架構Web