C#日志记录Serilog使用

这篇博客展示了如何在ASP.NET Core应用中配置Serilog进行日志记录,包括设置日志输出模板,写入控制台和文件,以及按日期和错误级别滚动日志文件。代码示例详细说明了如何在应用启动和异常处理中使用Serilog,并在其他类中手动记录日志。
摘要由CSDN通过智能技术生成
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Enrichers;
using Serilog.Events;
using Serilog.Templates;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using WebAPI_Serum.Controllers;

namespace WebAPI_Serum
{
    public class Program
    {

        public static void Main(string[] args)
        {
            try
            {
                const string SerilogOutputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff}|{ThreadId}|{Level:u4}|{Message:l}|{Exception}{NewLine}";

                Log.Logger = new LoggerConfiguration()
                    .Enrich.WithProperty("Version", "1.0.0")
                    .Enrich.With(new ThreadIdEnricher())
                    .Enrich.FromLogContext()
                    .WriteTo.Console(new ExpressionTemplate(SerilogOutputTemplate))

                    .WriteTo.File("logs/ALL_" + DateTime.Now.Date.ToString("yyyy-MM-dd") + ".log"
                    //.WriteTo.File("logs/ALL_log.log"
                    , outputTemplate: SerilogOutputTemplate
                    , rollOnFileSizeLimit: true, fileSizeLimitBytes: 1024 * 258 //限制文件最大为258kb
                    )
                    //, outputTemplate: SerilogOutputTemplate, rollingInterval: RollingInterval.Day)

                    .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => p.Level == LogEventLevel.Error)
                    .WriteTo.File("logs/Error_" + DateTime.Now.Date.ToString("yyyy-MM-dd") + ".log",
                    //.WriteTo.File("logs/Error_log.log",
                    outputTemplate: SerilogOutputTemplate
                    , rollOnFileSizeLimit: true, fileSizeLimitBytes: 1024 * 258 //限制文件最大为258kb
                    ))
                    //outputTemplate: SerilogOutputTemplate, rollingInterval: RollingInterval.Day))

                    .CreateLogger();

                Log.Information("Starting up");

                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Application start-up failed");
            }
            finally
            {
                Log.CloseAndFlush();
            }

        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseSerilog()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>()
                    //.UseUrls("http://*:16586")
                    ;
                });
    }
}

其他类里面手动记录日志:

//错误消息:
Log.Logger.Error($"请求地址:{url}|发送参数:{json}|异常消息:{msg}");

//信息                                
Log.Logger.Information("获取到样本MQ消息,1122");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王焜棟琦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值