(精华)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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月15日 01时16分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Win10 开启 Ubuntu 及Ubuntu升级过程中的部分问题
2019-04-29
Google ProtoBuf入门(Java)
2019-04-29
net.if.in.dropped rx_missed_errors 丢包
2019-04-29
open-falcon template继承与覆盖 注意事项
2019-04-29
zkui KeeperErrorCode = ConnectionLoss for /
2019-04-29
Gradle 多模块 xxx-xx.jar SKIP 依赖模块jar包问题
2019-04-29
Jenkins 时区问题Etc/UTC docker容器
2019-04-29
Java相关面试题总结及答案
2019-04-29
Docker stack task: non-zero exit (137) OOM
2019-04-29
Nginx Docker容器 获取客户端真实IP地址问题
2019-04-29
ssh-copy-id 卡住问题
2019-04-29
Random SecureRandom 随机数生成阻塞问题
2019-04-29
tomcat8.5.15 apr模式运行 配置
2019-04-29