首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以根据日志记录级别过滤掉serilog事件的属性

是否可以根据日志记录级别过滤掉serilog事件的属性
EN

Stack Overflow用户
提问于 2021-05-27 22:32:42
回答 1查看 95关注 0票数 1

在Serilog中,我们可以根据日志记录级别或使用serilog expressions过滤掉事件。

代码语言:javascript
复制
"Serilog": {
    "MinimumLevel": {
      "Default": "Debug"
    },

我想知道是否可以根据日志级别过滤掉事件的属性。我们有这样的场景,我们想要记录通信详细信息。在大多数情况下,以ASCII格式通信文本已经足够好了,但有时hex格式可能会有所帮助。我希望只有当日志记录级别为Verbose时,我们才能记录hex格式属性。有可能吗?

代码语言:javascript
复制
Event
{
  "ascii": "Hello World
",
  "hex": "48 65 6c 6c 6f 20 57 6f 72 6c 64 0d 0a"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 04:23:24

您可以通过添加自定义解构策略来转换事件来完成此操作。获取当前日志级别。检测是否启用了Verbose。如果是,则返回一个包含十六进制值的对象。如果不是,则返回一个不包含十六进制值的对象。下面是一个有效的示例:

代码语言:javascript
复制
using System;
using Serilog;
using Serilog.Events;

namespace HelloConsoleCore
{
    class MyEventToLog
    {
        public string SomeText { get; set; }

        public string SomeHex { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                //.MinimumLevel.Verbose //change your minimum level to see the effect
                .MinimumLevel.Debug()
                .WriteTo.Console()
                .Destructure.ByTransforming((MyEventToLog ev) => {

                    if (Log.IsEnabled(LogEventLevel.Verbose))
                    {
                        return new { ev.SomeHex, ev.SomeText };
                    }

                    return new { ev.SomeText };
                    })
                .CreateLogger();

            var eventIWantToLog = new MyEventToLog
            {
                SomeHex = "48 65 6c 6c 6f 20 57 6f 72 6c 64 0d 0a",
                SomeText = "Hello World"
            };

            Log.Information("Let's log an event... {@EventIWantToLog}", eventIWantToLog);

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67724305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档