Dot-Net
是否可以在輸出模板中獲取時間戳作為 DateTimeKind.Utc?
目前,當我
{Timestamp}在 outputTemplate 中使用它時,它似乎是由它生成的DateTime.Now,因此很有DateTimeKind.Local味道,因為當我給它一個“o”說明符時,它會產生類似於2016-02-12T09:51:34.4477761-08:00對於上面的例子,我想得到的是,
2016-02-12T17:51:34.4477761Z如果.Timestamp``DateTimeKind.Utc更新
看起來它實際上是DateTimeOffset 在那裡被實例化,所以沒有
DateTimeKind生效,而是看起來底層DateTime總是DateTimeKind.Unspecified. MSDN指出,格式化DateTimeOffsetvs時的行為存在一些差異DateTime,特別是:“u” – 將 DateTimeOffset 值轉換為 UTC 並使用格式 yyyy-MM-dd HH:mm:ssZ 輸出。
轉換正是我想要的,但我也需要分數。
格式的限制似乎
DateTimeOffset會阻礙這一點。另一種選擇(只要附加屬性不會在其他地方膨脹輸出)是將 Serilog 添加
ILogEventEnricher到管道中:class UtcTimestampEnricher : ILogEventEnricher { public void Enrich(LogEvent logEvent, ILogEventPropertyFactory lepf) { logEvent.AddPropertyIfAbsent( lepf.CreateProperty("UtcTimestamp", logEvent.Timestamp.UtcDateTime)); } }然後,您可以
{UtcTimestamp:o}在輸出模板中使用以獲取所需的值。