我想配置 Serilog 以 UTC 格式记录日期,但当前使用服务器的时区。我们使用以下配置文件:
{
"Serilog": {
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"LevelSwitches": { "$controlSwitch": "Verbose" },
"MinimumLevel": { "ControlledBy": "$controlSwitch" },
"WriteTo": [
{
"Name": "Logger",
"Args": {
"configureLogger": {
"WriteTo": [
{
"Name": "File",
"Args": {
"outputTemplate": "{Timestamp:yyyy-MM-dd:HH:mm:ss.ffff} - {Message,-20:l}{NewLine}{Exception}",
"path": "./logs/my.log"
}
}
]
}
}
}
],
"Enrich": [ "FromLogContext", "WithExceptionDetails", "ProcessId" ]
}
}
我知道可以通过编写自定义丰富器来完成,但是有没有使用模板的简单解决方案?
您可以将时间转换为 UTC。但您没有任何格式选项。
"outputTemplate": "{Timestamp:u} - {Message,-20:l}{NewLine}{Exception}"
会给你
2024-04-16 22:47:09Z - Message
这是对我有用的 json。
{
"Serilog": {
"MinimumLevel": "Verbose",
"WriteTo": [
{
"Name": "Console",
"Args": {
"restrictedToMinimumLevel": "Debug",
"outputTemplate": "{Timestamp:u} - {Message,-20:l}{NewLine}{Exception}"
}
}
],
"Enrich": [ "FromLogContext" ]
}
}
尝试
{Timestamp:G}
所以,在你的代码中:
"outputTemplate": "{Timestamp:G} - {Message,-20:l}{NewLine}{Exception}",