首页 > 编程语言 >asp.net使用Serilog按日志级别写入日志文件

asp.net使用Serilog按日志级别写入日志文件

时间:2024-11-14 18:16:10浏览次数:3  
标签:asp Name Serilog WriteTo Args 日志 Logs

文章目录

  • 1、所需的Nuget包
  • 2、两种配置方式
    • 2-1 代码形式(Program.cs)
    • 2-2 配置文件形式(appsetting.json)
  • 3、实现效果如下


1、所需的Nuget包

  • 我项目的版本是.NET 8,其它版本安装适配版本即可

所需Nuget包


2、两种配置方式

2-1 代码形式(Program.cs)

  • Program.cs文件中,添加如下代码

    //设置Serilog为日志管理
    builder.Host.UseSerilog((context, loggerConfiguration) =>
    {
        loggerConfiguration.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)//最小日志级别
            .Enrich.FromLogContext()
            
            .WriteTo.Console()//输出到控制台
            
            //按日志级别分别写入不同的日志文件中(可设置参数outputTemplate模板,有默认这里就不设置了)
            .WriteTo.Logger(configure => configure
             	.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information)//过滤
             	.WriteTo.File("Logs/Info/info.txt", rollingInterval: RollingInterval.Day))
            
            .WriteTo.Logger(configure => configure
             	.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning)//过滤
             	.WriteTo.File("Logs/Warn/warn.txt", rollingInterval: RollingInterval.Day))
            
            .WriteTo.Logger(configure => configure
             	.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)//过滤
             	.WriteTo.File("Logs/Error/error.txt", rollingInterval: RollingInterval.Day));
    });
    

2-2 配置文件形式(appsetting.json)

  • 1、appsetting.json文件添加如下配置信息

    "Serilog": {
      "Using": [ "Serilog.Sinks.File" ],
      "MinimumLevel": {
        "Default": "Information",//默认日志输出级别
        "Override": {
          "Microsoft": "Warning",
          "System": "Warning"
        }
      },
      "WriteTo": [
    
        { "Name": "Console" },//输出到控制台
    
        {//info
          "Name": "Logger",
          "Args": {
            "configureLogger": {
              "Filter": [//过滤
                {
                  "Name": "ByIncludingOnly",
                  "Args": {
                    "expression": "@l = 'Information'"
                  }
                }
              ],
              "WriteTo": [//写入
                {
                  "Name": "File",
                  "Args": {
                    "path": "Logs/Info/info.txt",
                    "rollingInterval": "Day",
                    "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"
                  }
                }
              ]
            }
          }
        },
    
        {//warning
          "Name": "Logger",
          "Args": {
            "configureLogger": {
              "Filter": [
                {
                  "Name": "ByIncludingOnly",
                  "Args": {
                    "expression": "@l = 'Warning'"
                  }
                }
              ],
              "WriteTo": [
                {
                  "Name": "File",
                  "Args": {
                    "path": "Logs/Warn/warn.txt",
                    "rollingInterval": "Day",
                    "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"
                  }
                }
              ]
            }
          }
        },
    
        {//error
          "Name": "Logger",
          "Args": {
            "configureLogger": {
              "Filter": [
                {
                  "Name": "ByIncludingOnly",
                  "Args": {
                    "expression": "@l = 'Error'"
                  }
                }
              ],
              "WriteTo": [
                {
                  "Name": "File",
                  "Args": {
                    "path": "Logs/Error/error.txt",
                    "rollingInterval": "Day",
                    "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {SourceContext}: {Message}{NewLine}{Exception}{NewLine}"
                  }
                }
              ]
            }
          }
        }
      ],
      "Enrich": [ "FromLogContext", "WithThreadId" ]
    }
    
  • 2、在Program.cs文件中添加如下代码进行Serilog的注册使用

    //设置Serilog为日志管理
    builder.Host.UseSerilog((context, loggerConfiguration) =>
    {
        //读取配置文件中Serilog配置信息
        loggerConfiguration.ReadFrom.Configuration(context.Configuration);
    });
    

3、实现效果如下

  • Logs/Info/info.txt 指定的日志文件路径是位于项目根路径下

在这里插入图片描述

标签:asp,Name,Serilog,WriteTo,Args,日志,Logs
From: https://blog.csdn.net/m0_60198258/article/details/143725832

相关文章

  • 当然不是草台班子-冲刺日志1
    作业所属课程软件工程2024作业要求2024秋软工实践团队作业-第三次(Alpha冲刺)作业目标alpha冲刺完成项目核心功能团队名称当然不是草台班子团队成员学号姓名102201427侯丽珂102201426郑嘉祺102201241戴康怡102201218肖晗涵11220032......
  • 鸿蒙开发实战:智能日志定位与高效调试技巧
    在鸿蒙系统的开发过程中,日志定位是一个关键的调试步骤。想象一下,如果你能够轻松地在繁杂的代码中快速定位到日志产生的位置,那将会极大地提高你的开发效率。今天,我将分享一套代码,它能帮助你实现这一目标。效果展示当你使用这套代码时,日志的打印效果将如下所示:W1234at(ent......
  • 世界第一大厨-冲刺日志(第二天)
    冲刺日志-第二天①冲刺分工与进度更新成员完成的任务完成任务的时长(小时)剩余时间(小时)杨美荔任务分配与进度跟踪1.50张静雯主界面细节优化3.51.5郭心怡大厨日记页面功能完善52王勤琛食谱广场页面功能增强53王子聪功能美化与细节调整85.5......
  • 旺仔水饺-冲刺日志 Day2
    作业所属课程https://edu.cnblogs.com/campus/fzu/SE2024作业要求https://edu.cnblogs.com/campus/fzu/SE2024/homework/13305团队名称旺仔水饺102201140黎曼102201138黄俊瑶102201127罗永辉102201130郑哲浩102202144傅钰102202147赖越1722090......
  • 高性能日志结构化引擎 — GreptimeDB Piepline 设计与实现技术揭秘
    在GreptimeDBv0.9版本我们加入了对日志相关的支持:Pipeline引擎和全文索引。GreptimeDB致力于成为统一处理指标(Metric)、日志(Log)、事件(Event)和追踪(Trace)的时序数据库。在v0.9之前,用户虽然可以写入文本(string)类型的数据,但无法进行专门的解析和查询。有了Pipeline引擎和全文......
  • 全面指南:OpenSSH和日志管理策略,轻松提升安全与运维效率
    目录日志管理配置rsyslog服务器opensshSecureShell示例SSH主机密钥配置基于SSH密钥的身份验证 [root@lnh~]#cat/etc/redhat-releaseCentOSStreamrelease8//查看当前系统版本[root@lnh~]#uname-r4.18.0-257.el8.x86_64//查看当前系统......
  • Nginx的日志切割 logrotate 方式
    基本centos7系统已自带logrotate,其他系统并未测试新建nginx日志任务vi/etc/logrotate.d/nginx/usr/local/nginx/logs/access.log {dailyrotate7missingokdateextnocompressdelaycompressnotifemptysharedscriptspostrotate  [-e/usr/local/nginx/logs/ng......
  • Ubuntu环境下Flink的日志如何查看与分析
    Ubuntu环境下Flink的日志如何查看与分析在生产环境中,建议将Flink日志发送到集中式日志系统(如ELKStack、Splunk等),以便于长期存储和分析。在Ubuntu环境下查看和分析Flink日志,你需要首先找到日志文件的存放位置查找Flink安装目录:通常情况下,Flink安装在/opt/flink或者/usr/lo......
  • 旺仔水饺-冲刺日志 Day1
    作业所属课程https://edu.cnblogs.com/campus/fzu/SE2024作业要求https://edu.cnblogs.com/campus/fzu/SE2024/homework/13305团队名称旺仔水饺102201140黎曼102201138黄俊瑶102201127罗永辉102201130郑哲浩102202144傅钰102202147赖越1722090......
  • 【nginx安全】Nginx日志安全分析脚本
    Nginx日志的重要性和必要性我们知道Nginx属于是程序日志的范畴,相对于系统日志来说层级要低一些了,但对于站长来说是至关重要的。因为Nginx日志里记录着站点来访的所有信息,无论是正常访客还是恶意请求都会在日志里留下痕迹,比如:被采集、恶意刷流量、暴力破解、漏洞扫描、恶意代......