serilog初体验

log4net一直无法很好的同时在部分dotnet framework和部分为dotnet core上一份代码支持2种框架,

而我又很喜欢设置一个全局的log方法类,到处调用。

发现serilog很不错,而且source/sink的原理也很符合我的预期。

官网:

https://serilog.net/

此处记录一些配置,

appsetting.json

  "Serilog": {
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "Seq",
        "apiKey": "TTFO0yh5BGaLsuSTBwOO",

        "Args": { "serverUrl": "http://10.0.0.155:5341" }
      }
    ],
    "Properties": {
      "App": "Rd"
    }
  }

配合seq的api key和properties,可以同时查看几个程序了。

https://docs.datalust.co/docs/api-keys

https://github.com/serilog/serilog-settings-configuration

搭配 seq作为sink处理更佳。

https://datalust.co/download

 

Serilog是一个流行的.NET日志框架,它允许开发者精细控制日志记录的行为。过滤(Filtering)是Serilog的核心特性之一,其目的是为了根据特定条件仅记录某些级别的日志消息,提高应用的日志处理效率并保持信息的清晰。 在Serilog中,你可以通过配置规则来过滤日志记录。这通常涉及到以下几个步骤: 1. **启用过滤**:首先,在应用程序启动时,你需要创建一个`Serilog.Sinks.Console`或者其他sink实例,并配置一个过滤器。 ```csharp Log.Logger = new LoggerConfiguration() .Enrich.WithProperty("Source", "MyApp") .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Source}: {Message}{NewLine}{Exception}") .Filter.ByIncludingOnly(info => info.Level == LogEventLevel.Error) // 或者自定义过滤器函数 .Filter((logEvent) => logEvent.Message.Contains("critical error")) .CreateLogger(); ``` 2. **过滤级别**:可以基于日志级别如Debug、Info、Warning、Error等来选择记录哪些级别的消息。 3. **自定义过滤**:还可以编写Lambda表达式或匿名函数来自定义更复杂的过滤逻辑,比如根据日志内容、属性值等。 4. **全局或局部过滤**:可以在全局配置文件中设置默认过滤规则,也可以在代码中针对特定部分单独配置过滤。 通过这样的过滤机制,你可以更好地控制日志的可见性和详细程度,有助于分析和调试程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值