You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Serilog sink包装器及被包装sink并迁移配置到配置文件

配置迁移方案(优先使用Serilog.Settings.Xml)

首先你需要提前安装所需NuGet依赖:

  • Serilog.Settings.Xml
  • Serilog.Sinks.File
  • Serilog.Sinks.Seq
  • 包含LogLevelModifierSink的对应包(通常为Serilog.Sinks.LogLevelModifier)

然后你可以新建一个xml格式的配置文件(比如命名为Serilog.config),示例配置如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <serilog>
    <writeTo>
      <sink name="LogLevelModifierSink">
        <writeTo>
          <sink name="File">
            <argument name="path" value="C:\inetpub\logs\serilog.txt" />
            <argument name="rollingInterval" value="Day" />
            <argument name="shared" value="true" />
            <argument name="outputTemplate" value="{Timestamp:HH:mm:ss.fff} [{Level:u3}] {SourceContext} {Message:lj}{NewLine}{Exception}{NewLine}{ThreadId}" />
          </sink>
          <sink name="Seq">
            <argument name="serverUrl" value="http://localhost/seq/" />
          </sink>
        </writeTo>
      </sink>
    </writeTo>
  </serilog>
</configuration>

调整完配置文件后,原本的C#代码可以简化为:

Log.Logger = new LoggerConfiguration()
    .ReadFrom.Xml("Serilog.config")
    .CreateLogger();

注意:如果配置文件没有放在程序运行目录,需要传入完整的文件路径,同时要把配置文件的「复制到输出目录」属性设置为「如果较新则复制」,避免运行时找不到配置文件。


多sink写入问题说明

早期版本的LogLevelModifierSink确实存在嵌套配置多sink时,仅第一个sink生效的bug,该问题在后续维护版本中已经完成修复。只要你使用的是最新版的对应sink包,同时配置File和Seq两个sink不会有冲突,两个目的地都能正常收到日志。

内容的提问来源于stack exchange,提问作者Phil Friedman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:00:04