首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用serilog保存日志记录

使用serilog保存日志记录
EN

Stack Overflow用户
提问于 2022-01-14 01:04:18
回答 2查看 165关注 0票数 1

我想把打印出来的信息保存到txt文本中,这样我们就可以查看重要的信息了。

代码语言:javascript
复制
Loggers are created using a LoggerConfiguration object:

Log.Logger = new LoggerConfiguration().CreateLogger();
Log.Information("No one listens to me!");

// Finally, once just before the application exits...
Log.CloseAndFlush();

这是我查过的一些代码文件,我想用Json格式保存数据,这样结构就清晰了,便于我们查看,我需要做些什么,谢谢您的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-14 06:25:49

在ASP.NET内核中配置Serilog:

包:

代码语言:javascript
复制
<ItemGroup>
    <PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
    <PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" />
    <PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
    <PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
  </ItemGroup>

appsettings.json:

代码语言:javascript
复制
{

  "Serilog": {
    "MinimumLevel": "Information",
    "Override": {
      "Microsoft.AspNetCore": "Warning"
    },
    "WriteTo": [
      {
        "Name": "Console "
      },
      {
        "Name": "File",
        "Args": {
          "path": "Serilogs\\AppLogs.log",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
        }
      }
    ]
  }
}

如上所述,文件接收器需要一个参数,其中我们需要指定日志文件名和文件路径。这条路径可以是绝对的,也可以是相对的。在这里,我指定了一个相对路径,它将在应用程序文件夹中创建一个文件夹serilogs,并写入该文件夹中的文件AppLogs.log。

然后在startup.cs中添加代码以读取构造函数中的这些Serilog设置,如下所示:

代码语言:javascript
复制
public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

            Log.Logger = new LoggerConfiguration()
        .ReadFrom.Configuration(configuration)
        .CreateLogger();
        }

然后更改program.cs中的代码,指定Host在ASP.NET Core中使用Serilog,而不是默认的记录器:

代码语言:javascript
复制
 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)

            .UseSerilog()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

票数 0
EN

Stack Overflow用户

发布于 2022-01-14 02:54:23

首先,您需要通过nuget添加对Serilog.Sinks.File的引用。

下一步是添加Logger的目的地:

.WriteTo.File(new JsonFormatter(), "log.json")

完整的清单如下:

代码语言:javascript
复制
Log.Logger = new LoggerConfiguration()
    .WriteTo.File(new JsonFormatter(), "log.json")
    .CreateLogger();
Log.Information("No one listens to me!");
// Finally, once just before the application exits...
Log.CloseAndFlush();

log.json文件中的输出是:

代码语言:javascript
复制
{"Timestamp":"2022-01-14T02:49:31.5111479+00:00","Level":"Information","MessageTemplate":"No one listens to me!"}

这就是你需要的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70704937

复制
相关文章

相似问题

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