(精华)2020年7月20日 ASP.NET Core serilog日志框架的使用
发布日期:2021-06-29 15:08:07 浏览次数:3 分类:技术文章

本文共 3837 字,大约阅读时间需要 12 分钟。

首先安装如下两个包

Install-Package Serilog.AspNetCore

Install-Package Serilog.Sinks.Elasticsearch

封装使用

/// /// 配置日志/// /// 建造者/// 
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
()); }); serilogConfig.MinimumLevel.Is(logConfig.minlevel.ToEnum
()); 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
(); });}
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
_logger; public WeatherForecastController(ILogger
logger) {
_logger = logger; } [HttpGet] public IEnumerable
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(); } }}

在这里插入图片描述

在这里插入图片描述

备注:其他函数请移到类库中去查看,本人博客里都有。

转载地址:https://codeboy.blog.csdn.net/article/details/107461937 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2021-06-06 .NET高级班 41-ASP.NET Core log4.net日志框架的使用
下一篇:(精华)2020年7月20日 ASP.NET Core 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月15日 01时16分22秒