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

如何配置Seq实现实时日志展示并显示异常堆栈跟踪

Sitecore + Seq 日志问题解决方案

1. 配置实时日志(消除3分钟延迟)

日志延迟源于Serilog.Sinks.Seq默认的批量发送策略,调整以下配置即可实现实时推送:

  • 修改Sitecore配置文件(通常路径:App_Config/Include/Serilog/Serilog.config):
    添加或更新Seq sink的批量参数:

    <add key="serilog:write-to:Seq.batchPostingLimit" value="1" />
    <add key="serilog:write-to:Seq.period" value="00:00:01" />
    
    • batchPostingLimit=1:每条日志单独发送,不攒批
    • period=00:00:01:最多等待1秒发送,确保实时性
  • 代码配置方式(若用代码初始化Serilog):
    在LoggerConfiguration中指定Seq sink参数:

    new LoggerConfiguration()
        .WriteTo.Seq("http://your-seq-instance-url", 
                     batchPostingLimit: 1, 
                     period: TimeSpan.FromSeconds(1))
        // 其他配置...
        .CreateLogger();
    

注意:若Sitecore使用了日志桥接组件(如Log4Net转Serilog),需确认桥接器无额外延迟配置。

2. 显示完整异常消息与堆栈跟踪

确认Serilog.Exceptions配置正确

  1. 版本兼容检查:确保Serilog.Exceptions与当前项目的Serilog、Serilog.Sinks.Seq版本匹配,避免版本冲突。
  2. 正确添加异常增强器:
    • 配置文件方式:在Serilog.config中添加:
      <add key="serilog:enrich:WithExceptionDetails" />
      
    • 代码配置方式:在LoggerConfiguration中加入(需在WriteTo之前配置):
      new LoggerConfiguration()
          .Enrich.WithExceptionDetails()
          .WriteTo.Seq("http://your-seq-instance-url")
          // 其他配置...
          .CreateLogger();
      

规范日志记录方式

必须使用带Exception参数的日志方法,才能让Serilog捕获完整异常信息:

try
{
    // 业务逻辑代码
}
catch (Exception ex)
{
    // 正确写法:传入Exception对象,保留堆栈信息
    Log.Error(ex, "STRATUM_ERROR Input string was not in a correct format");
    // 错误写法:仅传递消息,丢失堆栈
    // Log.Error("STRATUM_ERROR {Message}", ex.Message);
}

Seq门户视图调整

在Seq中确保事件视图识别异常字段:

  • 打开事件详情页,检查是否显示Exception属性(Serilog.Exceptions会将完整异常信息序列化到该字段)
  • 若未自动显示,可自定义视图模板,添加{Exception}字段,Seq会自动将其渲染为可折叠的堆栈跟踪面板

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:50:37