首页 > 其他分享 >造轮子之日志

造轮子之日志

时间:2023-10-08 11:58:32浏览次数:39  
标签:输出 Sinks Serilog 轮子 Async 日志 MinimumLevel

在日常使用中日志也是我们必不可少的一环,在原生日志组件中支持的日志驱动比较少,所以我们需要使用一些三方日志组件来扩展我们的日志记录。

集成Serilog

三方日志组件有很多,如NLOG,LOG4NET等等,这里个人习惯,使用Serilog。
Serilog的集成方式非常简单。

安装Nuget包

Serilog.AspNetCore
Serilog.Sinks.Async
Serilog.Sinks.File

在Program中添加代码:

var builder = WebApplication.CreateBuilder(args);

// logging
Log.Logger = new LoggerConfiguration()
#if DEBUG
    .MinimumLevel.Debug()
#else
    .MinimumLevel.Information()
#endif
    .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
    .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
    .WriteTo.Async(c=>c.Console())
    .WriteTo.Async(c=>c.File("Logs/log.txt", rollingInterval: RollingInterval.Day))
    .CreateLogger();

builder.Host.UseSerilog();

就这样最简单的完成了我们Serilog的集成。
上面代码我们配置了日志记录级别,和相关过滤条件,以及控制台输出和文件输出,文件输出自动按每天分文件。
这里使用了一个Serilog.Sinks.Async的包,这个包把日志采用异步的方式写入,可以提高我们日志的写入性能。

当然,如果追求日志更灵活配置,可以使用Serilog.Settings.Configuration这个包,这个包可以从配置文件中读取我们的日志配置。

同时Serilog.Sinks提供了很多日志输出方式,包括日志输出到ELK,SqlServer,Email等等,当然,我们也可以自定义Sinks将日志写入我们自己的日志系统中。按照实际需求场景配置即可。

欢迎进群催更。

image.png

标签:输出,Sinks,Serilog,轮子,Async,日志,MinimumLevel
From: https://www.cnblogs.com/fanshaoO/p/17748528.html

相关文章

  • 造轮子之统一业务异常处理
    异常处理也是我们必不可少的一环,借助Asp.netCore的UseExceptionHandler中间件,我们可以很轻易的配置我们的业务异常处理逻辑。自定义业务异常类首先我们定义一个业务异常类,继承Exception,添加一个Code状态码属性,和MessageData数组,这个数组用于Format异常信息。在实际业务场景中可......
  • 造轮子之统一请求响应格式
    在上文中我们实现了统一业务异常处理,在异常响应中我们也使用了统一的响应格式返回给客户端。接下来我们就讲一下约定统一的氢气响应格式。在业务开发中,一个规范统一的请求响应格式可以提高我们的前后端开发对接效率,同时清晰的结构提高了可读性。响应基类首先定义一个最基础的只......
  • JAVA工作日志
    你好我好大家好,今天带大家一起完成工作日志这个模块,每天努力一点点,将来成就一大步。首先我们先来完成提交统计这一块,从图中可以看出来我们需要日志的类型和统计值,统计值又包括应提交数和已提交数。我们来定义一个类用来展示。 编写逻辑代码,注意红色字体提醒!!! 这个时候我们......
  • MySQL日志各类总结
    Mysql的日志分类: 事务日志:transactionlog 错误日志:errorlog 通用日志:generallog 慢查询日志:showquerylog 二进制日志:binarylog 中继日志releylog1)事务日志的写入类型为"追加",因此其操作为“顺序IO”;通常也被称为:预写式日志writeaheadlogging事务日志文件:ib......
  • python日志logger
    写代码过程中,为了方便问题定位,经常需要打印信息,但是太多的print()不好,所以可以用到loggerLogger通常分为两类:一类是StreamHandler,将日志信息输出到控制台;另一类是FileHandler,将日志信息输出到文件。Python标准库中的logging模块提供了强大的Logger功能。importloggingcla......
  • 解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时
    方法一:在awk中已经判断好并发连接数量的ip地址,传给whileread执行防火墙规则封掉对应的ip。root@centos8~]#catddos.sh#!/bin/bashss-nt|awk-F '[:]+''/ESTAB/{ip[$(NF-2)]++}END{for(iinip)if(ip[i]>100)printi}'|awk-F']''{print$1}'|whilere......
  • 【RocketMQ】Dledger模式下的日志复制
    RocketMQ在开启Dledger时,使用DLedgerCommitLog,其他情况使用的是CommitLog来管理消息的存储。在Dledger模式下,消息写入时Leader节点还需要将消息转发给Follower节点,有过半的节点响应成功,消息才算写入成功。Leader消息写入Dledger下有DLedgerMemoryStore(基于内存存储)和DLedgerMmap......
  • SQLServer数据库三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式介绍
    SQLServer数据库三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式介绍  1.Simple简单恢复模式,Simple模式的旧称叫”Checkpointwithtruncatelog“,其实这个名字更形象,在Simple模式下,SQLServer会在每次checkpoint或backup之后自动截断log,也就是丢弃所有的in......
  • Sql server 使用DBCC Shrinkfile 收缩日志文件
    ​磁盘空间有限,需要收缩日志文件释放空间。数据库名称上右击属性->文件,逻辑名称日志文件默认名称为“_log”结尾。 ​编辑 alterdatabase数据库setrecoverysimpledbccshrinkfile('XXX_log',2,truncateonly)alterdatabase数据库setrecoveryfull​......
  • 日志级别
    log输出级别分为五种:DEBUG、INFO、WARN、ERROR、FATAL(从小到大)。DEBUG(调试)输出细粒度信息,对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。输出一些系统信息日志以及SQL执行的更加详细日志,一般是开发的程序员前期开发调试中使用,在正式环境中不应该显示。INFO......