c# - 如果我从 Startup.cs 而不是从 Program.cs 注入(inject) Serilog,这是一种不好的做法吗?

标签 c# .net dependencies code-injection serilog

我正在尝试在 .NET 5 WebApi 项目中配置 Serilog。

我不明白为什么每个人都在 Program.cs 中注入(inject) Serilog,而不是像这样在 Startup.cs 文件中注入(inject):

public void ConfigureServices(IServiceCollection services)
        {
            // inject serilog logger.
            services.AddScoped<ILogger>(factory =>
            {
                return new LoggerConfiguration()
                            .WriteTo.File(@"C:\mylogs\log.txt", rollingInterval: RollingInterval.Day)
                            .CreateLogger();

            });

            services.AddControllers();
        }

最佳答案

如果您在 DI 中注册 Logger 而不是配置 ILoggerFactory,则无法保证您的所有依赖项都将使用您在 startup.xml 中注册的依赖项。 .cs.

在下面的问题中,这正是 OP 在 startup.cs 中配置时发生的情况 .Net Core EventLog - override unhandled exception are written to Application log

关于c# - 如果我从 Startup.cs 而不是从 Program.cs 注入(inject) Serilog,这是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67201197/

相关文章:

c# - 打开表单时出现 ShowDialog 问题

c# - 用于验证数学方程式的正则表达式

java - 当 SoapAction 丢失时,.NET 2.0 Web 服务可以处理来自客户端的调用吗?

android - Gradle:添加依赖项的优点/缺点

c++ - 使用 cmake 处理头文件依赖项

c# - 如果我在 c# 中序列化一个类,Unrealscript 可以读回它吗?

c# - 无法获取 DisplayAttribute 名称

c# - 如何实现像 lock 语句中的互斥,但如果它被锁定,该 block 将被跳过?

AndroidX 依赖项和 XML 导致崩溃

c# - asp.net中如何显示警告框