【问题标题】:How to use Serilog with Raygun and Autofac differentiating between logs and errors如何使用 Serilog 与 Raygun 和 Autofac 区分日志和错误
【发布时间】:2021-01-06 21:36:27
【问题描述】:

我正在尝试通过 AutoFac 将 Serilog 与 Raygun 接收器一起使用

我使用 https://groups.google.com/forum/#!topic/serilog/R23B8CLso9Q 成功配置了带有 AutoFact 的 Serilog

如果我只想将 trace/debug/info 记录到日志滚动文件并将 warning/error/fatal 记录到滚动文件和 raygun

如何配置日志?

这是我的实际配置:

public static ILogger CreateLogger()
        {
            var config = new LoggerConfiguration()
                            .ReadAppSettings();

            InitialiseGlobalContext(config);

            return config.CreateLogger();
        }

使用此 web.config 条目:

<add key="serilog:minimum-level" value="Verbose" />
<add key="serilog:write-to:RollingFile.path" value="D:\WebRole\Logs\file-{Date}.txt" />
<add key="serilog:write-to:RollingFile.fileSizeLimitBytes" value="1024" />
<add key="serilog:write-to:RollingFile.retainedFileCountLimit" value="10" />
<add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp} [{Level}] [{MachineName},{ApplicationName},{RuntimeVersion}] {Message}{NewLine}{Exception}" />

由于 conf 是全局的,如果我添加 .WriteTo.Raygun(),它会将 trace/debug/info 记录到我不想要的 raygun 中。

任何想法

【问题讨论】:

    标签: autofac serilog raygun.io


    【解决方案1】:

    您应该能够添加额外的配置条目以通过 Raygun 接收器限制事件:

    <add key="serilog:write-to:Raygun.restrictedToMinimumLevel" value="Warning" />
    

    您还需要确保 Raygun 程序集位于项目的构建输出目录中,并使用“使用”条目引用,例如:

    <add key="serilog:using" value="Serilog.Sinks.Raygun" />
    

    【讨论】:

    • 我添加了以下条目 &lt;add key="serilog:write-to:Raygun.applicationKey" value="mykey" /&gt; &lt;add key="serilog:write-to:Raygun.restrictedToMinimumLevel" value="Warning" /&gt;,它不会向 Raygun 记录任何内容。我正在使用以下 pkgs 版本"Mindscape.Raygun4Net.Signed" version="4.2.1" "Serilog" version="1.4.168" "Serilog.Extras.AppSettings" version="1.4.168" "Serilog.Extras.Web" version="1.4.168" "Serilog.Sinks.Raygun" version="1.4.168" 我需要 Mindscape.Raygun4Net.Mvc,因为它是一个 MVC 站点吗?我在这里错过了什么
    • 您可能需要serilog:using,如下所述:github.com/serilog/serilog/wiki/… - 已编辑答案。
    【解决方案2】:

    对于任何来这里的人(比如我),答案是@NicholasBlumhardt 所描述的。然而,我也犯了一个错误,即在使用后没有立即获得 applicationKey

    <add key="serilog:using:Raygun" value="Serilog.Sinks.Raygun" />
    <add key="serilog:write-to:Raygun.applicationKey" value="MYRAYGUNAPPLICATIONKEY" />
    <add key="serilog:write-to:Raygun.restrictedToMinimumLevel" value="Information" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多