【问题标题】:How can I capture logs from .net WebHost in our own logger?如何在我们自己的记录器中从 .net WebHost 捕获日志?
【发布时间】:2021-02-10 10:22:31
【问题描述】:

这可能有一些简单的答案,但是在互联网上搜索了几个小时后,我还没有找到答案

我们有自己的日志系统实现 我们想在我们自己的记录器中捕获记录在 WebHost 中的信息 但是如何将 WebHost 中生成的日志定向到我们的记录器?

我们的虚拟主机非常标准,如果这有什么不同的话 我们正在构建 .net 5

        _host = new WebHostBuilder()
            .AddHttpListener(_startUpConfig)
            .UseHttpSys(options =>
            {
                options.Authentication.Schemes = AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
                options.Authentication.AllowAnonymous = true;
                options.MaxConnections = -1;
                options.MaxAccepts = Environment.ProcessorCount * 2;
            })
            .UseUrls($"{_url}://+:{PortNo}/")
            .UseUnityServiceProvider(IocContainer)
            .ConfigureServices(services => { services.AddSingleton(_startUpConfig); })
            .UseStartup<StartUp>()
            .Build();

【问题讨论】:

  • 你的日志系统支持过滤器吗?
  • 没有。只是日志级别。我意识到我可能必须将我们的记录器包装在另一个对象中。只是不确定如何
  • 为什么不使用现有的过滤器可用的日志框架?在您的记录器中,您需要类似的功能来根据一些值(例如记录器名称或日志源)将条目记录到配置的通道。目前尚不清楚您的日志记录解决方案是如何实施和使用的。我相信您的问题的解决方案不会那么简单。
  • 最好登录到我们自己的日志系统,该系统集成到我们的 DevOps 等中。但是没关系。这可能是第二个选择。如何在我们的服务在 VM 上运行的生产环境中获取它们?具体来说,我需要了解为什么某些 Kerberos 令牌会被 WebHost 拒绝

标签: c# asp.net logging


【解决方案1】:

在网上搜索了更多之后,我终于找到了答案 微软实际上已经很好地制作了一份关于如何添加您自己的自定义记录器的文档

https://docs.microsoft.com/en-us/dotnet/core/extensions/custom-logging-provider

正如我所料,实际上非常简单。 谢谢微软:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多