首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Serilog依赖注入

Serilog依赖注入
EN

Stack Overflow用户
提问于 2020-10-09 12:51:39
回答 1查看 14.4K关注 0票数 6

我正在尝试将Serilog注入到我的WebAPI项目中的.Net Core3.1中的所有项目中。

在我的startup.cs中,我正在设置serilog,但可能是错误的:

我有:using Serilog;

然后在:public void ConfigureServices(IServiceCollection services),我有:

services.AddSingleton(Log.Logger);

我也有:

代码语言:javascript
复制
            var configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                        .AddJsonFile("appsettings.json")
                        .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
                        .Build();

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

在我的控制器类中,我通常这样做:

using Microsoft.Extensions.Logging;

private readonly ILogger _log;

代码语言:javascript
复制
public AuthorisationController(IConfiguration config, ISecurityService securityService, ILogger<AuthorisationController> log)
        {
            Configuration = config;
            _securityService = securityService;
            _log = log;
        }

配置和SecurityService都可以。

但在我的第一种方法中,我尝试记录:

_log.LogInformation("Login attempt");

但我的日志里什么都没有。

有人能发现这个错误吗?

这并不重要,但我的应用程序设置如下:

代码语言:javascript
复制
    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "===> {Timestamp:HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}"
        }
      },
      {
        "Name": "Loggly",
        "Args": {
          "customerToken": "MySuperSecretKey"
        }
      }
    ]
  }```
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-09 12:59:36

您还没有发布任何日志配置代码,所以我想它已经丢失了。有几个将Serilog与日志扩展集成在一起的包,一些用于通用主机,有些则添加了特定于ASP.NET核心的扩展。

一种选择是使用Serilog.AspNetCore。一旦创建了记录器,就可以将其与主机构建器本身一起使用:

代码语言:javascript
复制
public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseSerilog() // <-- Add this line
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });

这将在应用程序和主机构建过程中使用静态记录器。

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

https://stackoverflow.com/questions/64280467

复制
相关文章

相似问题

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