Serilog 没有显示我的自定义上下文属性



我正在使用Serilog和WebApi。我想为每个错误消息添加用户名和类名。

这是我的代码:

public partial class Repo : BaseRepo<db>
{
public Repo(ILogger logger) : base(logger)
{
/// Not working
//  Logger.ForContext("UserId", currentuser).ForContext<Repo>();
logger.ForContext("UserId", currentuser).Information("message")
}

消息呈现为:

INF message

如何获得userid: <currentUser>展示?

为你显示的消息取决于你正在使用的接收器的输出模板(如果支持(。例如,如果使用控制台接收器,则需要在配置接收器时向outputTemplate参数添加{Properties:j}

Log.Logger = new LoggerConfiguration()
.WriteTo.Console(LogEventLevel.Debug,
outputTemplate: "[{Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}")
.CreateLogger();

此外,如果要显示将通过LogContext添加的自定义属性,则还需要Enrich.FromLogContext()

Log.Logger = new LoggerConfiguration()
.WriteTo.Console(LogEventLevel.Debug,
outputTemplate: "[{Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}")
.Enrich.FromLogContext()
.CreateLogger();

同样,如果要显示将通过GlobalLogContext添加的自定义属性,则还需要Enrich.FromGlobalLogContext()

Log.Logger = new LoggerConfiguration()
.WriteTo.Console(LogEventLevel.Debug,
outputTemplate: "[{Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}")
.Enrich.FromGlobalLogContext()
.CreateLogger();

最新更新