使用 Serilog 跨命名空间和类以各种详细级别记录

问题描述 投票:0回答:1

我被引导相信我可以设置全局最低信息级别,然后在特定的命名空间或类中我可以将其提升到“调试”甚至“详细”。这是代码:

using Commons;
using Serilog;
using Serilog.Events;
using System;

namespace SerilogTesting
{
    internal class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Log.Logger = new LoggerConfiguration()
                    .MinimumLevel.Information()
                    .MinimumLevel.Override("SerilogTesting.Program", LogEventLevel.Debug)
                    .WriteTo.Console()
                    .CreateLogger();

                Log.Debug($"{nameof(Program.Main)} started.");

                var logic = new DoSomething();
                logic.Rain();
            }
            catch
            {

            }
            finally
            {
                Log.CloseAndFlush();
            }
        }
    }
}

这是图书馆课程

using Serilog;

namespace Commons
{
    public class DoSomething
    {
        public void Rain()
        {
            Log.Information("It is raining.");
        }
    }
}

期望的是,即使最低级别设置为信息,Main 中的 Log.Debug 语句仍将根据 Override 调用打印出来,据称该调用应该允许 SerilogTesting.Program 类中的 Log 调用通过(如果它们位于)最低调试级别。

.net serilog
1个回答
0
投票

以下代码有效:

            //In namesapce "SerilogTesting" of create a logger which has the source name "SerilogTesting.Program"
            var logger1 = Log.ForContext<Program>();
            logger1.Debug($"{nameof(Main)} started.");

            //Log.Debug($"{nameof(Main)} started.");
© www.soinside.com 2019 - 2024. All rights reserved.