Serilog:如何记录,将带有不同“来源”的消息记录到不同的文件中

时间:2019-12-05 11:15:10

标签: c# asp.net-core serilog

我想使用.NET Core 3.0在ASP.NET Core Web应用程序中记录信息-Serilog致命错误

我想将此数据记录到不同的文件中(已经问过并回答了,但是我的情况与我认为有些不同):

  • information.log =>有关应用程序操作的信息(仅 使用Serilog / Microsoft的自动日志记录
  • error.log =>发生的所有错误/未处理的异常
  • other_information.log =>(实际上没有这个名称)有关程序的信息,但仅记录我创建的消息

我只是不知道如何区分Microsoft和我自己的信息日志。

我找到了一个有关如何从Serilog / Microsoft禁用日志记录的问题/答案,但是这样做会禁用所有LogWriter How to turn off the logging done by the ASP.NET core framework 的日志记录。

然后我找到了另一个问题的答案,也许正是我要的东西,但是我不知道会发生什么,所以我不想使用它,因为我不喜欢魔术,因为如果有问题,修复它会花费更多时间,Can I log to separate files using Serilog?

我还发现了另一个类似的问题:Serilog : Log to different files 但我也不明白。

因此,如果其中一个确实是我的问题的解决方案,那么如果有人可以向我解释一下,我将不胜感激。

这是我到目前为止所拥有的Logger Configuration,它所做的只是将所有信息记录在一个文件中,并将所有错误记录在另一个文件中。

            using Serilog;
            using Serilog.Events;            

            ...

            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Information()
                .WriteTo.Console()
                .WriteTo.Logger(l => l
                    .Filter.ByIncludingOnly(e => e
                    .Level == LogEventLevel.Information)
                    .WriteTo.File(@"Logs\Info.log"))
                .WriteTo.Logger(l => l
                    .Filter.ByIncludingOnly(e => e
                    .Level == LogEventLevel.Error)
                    .WriteTo.File(@"Logs\Error.log"))
                .CreateLogger();

正如我所说,将所有信息记录在一个文件中并将所有错误记录在另一个文件中是很好的方法,但是我不知道如何继续。

编辑:我从此问题的答案中发现了目前所拥有的配置:Serilog - multiple log files ‌‌ ‌‌ ‌‌

1 个答案:

答案 0 :(得分:1)

我相信您只需要基于SourceContext属性过滤日志,这在这里进行了解释:Filter Serilog logs to different sinks depending on context source?