c# - 在日志中包含时区
问题描述
如何在日志中包含时区,以便条目显示如下:
2020-07-08 08:03:35.677 EST [INF] This is the entry text.
请注意,没有 UTC 参考;它已被替换为“EST”或适合时区的任何内容。
解决方案
.NET 不提供发出时区缩写的内置方式。如果您真的需要它们,您可以导入我的TimeZoneNames库并执行以下操作:
static string GetTimeZoneAbbreviation(DateTimeOffset dto, TimeZoneInfo tzi)
{
var abbreviations = TZNames.GetAbbreviationsForTimeZone(tzi.Id, CultureInfo.CurrentUICulture.Name);
return tzi.IsDaylightSavingTime(dto) ? abbreviations.Daylight : abbreviations.Standard;
}
TimeZoneInfo.Local
如果您输入了要使用的本地时区,则通过。
我将把它连接到 Serilog 到你(或其他人)。
也就是说 - 你可能想重新考虑你为什么想要这个。zzz
在大多数情况下,在日志文件中首选与 UTC 的偏移量(使用说明符)。一个原因是并非每个时区都有唯一的缩写。
例如,如果"CST"
出现在您的日志中,您如何知道是美国中部标准时间、古巴标准时间还是中国标准时间?没有偏移量,将无法分辨。
此外,请注意,并非每个时区都有缩写。许多时区,即使我的图书馆已经到位,也会返回一个偏移量来代替缩写词。
换言之,时区缩写的概念并未被普遍接受。这主要是西方的想法。
推荐阅读
- python - 将一个数据框列中的值与同一 df 中其他列中的值进行比较?
- c# - 在 Linq 中访问导航属性返回 - “由于对象的当前状态,操作无效”
- spring-boot - 如何在 Spring Boot 应用程序中使用“li-apache-kafka-clients”从 Kafka 生产者发送大消息(1MB 以上)?
- asp.net-mvc - 安全只读和禁用的 HTML 助手
- formio - formio:如何在没有自定义 javascript 代码的情况下填充字段?
- node.js - 为什么异步函数返回 Promise
控制台中的错误 - vue.js - Vue路由器在构建后失败
- javascript - 为什么我不能在 Nightmare.evaluate() 中使用我的课程?
- reactjs - 我可以像 React-Route 一样将属性或状态添加到 Next JS Router 中吗?
- json - 如何使用 Spark 和 Scala 解析嵌套的 Json?