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

Akka.NET 1.5中GetLogger()调用ForContext无法添加日志额外属性

Akka.NET 1.5 无需显式引用SerilogLoggingAdapter使用ForContext的解决方案

问题背景

在Akka.NET 1.5版本中,按照官方文档建议使用Context.GetLogger()替代Context.GetLogger<SerilogLoggingAdapter>()添加日志上下文属性时,发现ForContext()设置的属性无法显示;只有显式指定SerilogLoggingAdapter泛型参数的旧方式才能正常输出上下文属性。

原因分析

  1. 版本兼容性问题:你的Akka.Logger.Serilog版本(1.5.12.1)与Akka核心版本(1.5.19)不一致,导致针对Akka.Event.ILogger的ForContext扩展方法无法正确工作。
  2. 扩展方法未正确引用:若未在代码中引入Akka.Logger.Serilog命名空间,Akka.Event.ILogger无法识别ForContext扩展方法,可能误调用其他组件的同名方法导致失效。

解决方案

1. 对齐Akka与日志适配器版本

将Akka.Logger.Serilog版本升级至与Akka核心版本一致(即1.5.19),确保组件间兼容性。更新后的包引用如下:

<ItemGroup>
  <PackageReference Include="Akka" Version="1.5.19" />
  <PackageReference Include="Akka.Logger.Serilog" Version="1.5.19" />
  <PackageReference Include="Serilog" Version="3.1.1" />
  <PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
</ItemGroup>

2. 确保引用正确的命名空间

在Actor类文件顶部添加Akka.Logger.Serilog命名空间,使Akka.Event.ILogger能够使用Serilog提供的ForContext扩展方法:

using Akka.Logger.Serilog;

3. 使用扩展方法简化调用

完成上述两步后,即可直接通过Context.GetLogger()调用ForContext,无需显式指定SerilogLoggingAdapter:

Context.GetLogger()
       .ForContext("FromContextProperty", "bbb")
       .Error("NEW WAY {FromMessageProperty}", txt);

验证结果

更新后运行代码,两种日志输出方式均能正确显示FromContextProperty属性,与预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:22:45