简体   繁体   English

ASP.NET Core登录2个不同的文件

[英]ASP.NET Core logging in 2 different files

When using the default ASP.NET core logging in combination with Serilog, is it possible to write errors to errors.log and information to informations.log 当将默认的ASP.NET核心日志记录与Serilog结合使用时,是否可以将错误写入errors.log,将信息写入informations.log

using Microsoft.Extensions.Logging;
using Serilog;

loggerFactory.AddSerilog();
loggerFactory.AddFile(Configuration.GetSection("Logging"));

Appsettings.json: Appsettings.json:

"Logging": {
    "PathFormat": "path-{Date}.log",
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Information",
      "System": "Information",
      "Microsoft": "Information"
    }
  }

I want one logging file where I can see the requests which are done and stuff like that, just the info log. 我想要一个日志文件,在其中可以看到已完成的请求以及诸如此类的信息,仅是信息日志。 And one log with errors for debugging purposes. 还有一个带有错误的日志,用于调试目的。 How can I log different things to 2 files? 如何将不同的东西记录到2个文件中?

If you want to use a single Logger object you can filter log type by level: 如果要使用单个Logger对象,则可以按级别过滤日志类型:

using Serilog;
using Serilog.Events;

Log.Logger = new LoggerConfiguration()
            // Restricts logs to: Debug, Information, Warning, Error and Fatal
            .MinimumLevel.Debug()
            // Logs Information, Warning, Error and Fatal to "info-logs.txt" file
            .WriteTo.File(path: "info-logs.txt", restrictedToMinimumLevel: LogEventLevel.Information)
            // Logs Error and Fatal to "error-logs.txt" file
            .WriteTo.File(path: "error-logs.txt", restrictedToMinimumLevel: LogEventLevel.Error) 
            .CreateLogger();

Log.Verbose("Loggin Verbose..."); // Won't log, because the Logger "MinimumLevel" is set to Debug
Log.Debug("Loggin Debug..."); // Won't log, because there is no sink that takes Debug
Log.Information("Loggin Information..."); // Logs into "info-logs.txt"
Log.Warning("Loggin Warning..."); // Logs into "info-logs.txt"
Log.Error("Loggin Error..."); // Logs into "info-logs.txt" and "error-logs.txt"
Log.Fatal("Loggin fatal..."); // Logs into "info-logs.txt" and "error-logs.txt"

The log levels and descriptions from the docs : 来自docs的日志级别和说明:

在此处输入图片说明

Serilog supports that but you seem to be missing relevant code. Serilog支持这一点,但是您似乎缺少相关的代码。 In your Startup method you should be setting up your SeriLog configuration. Startup方法中,您应该设置SeriLog配置。 There you can configure it to log different data into different files using sinks and filters. 您可以在那里配置它,以便使用接收器和过滤器将不同的数据记录到不同的文件中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM