使用通过SON文件配置的Serilog.Sinks. MSSql服务器时,时间戳不是以UTC为单位的.

在执行这项工作的代码中:

columnOptions.TimeStamp.ConvertToUtc = true;

如何在杨森配置文件中执行同样的事情?

以下是完整的当前SON配置文件:

{
    "Serilog": {
        "MinimumLevel": "Verbose",
        "WriteTo": [
            {
                "Name": "Console",
                "Args": {
                    "restrictedToMinimumLevel": "Debug"
                }
            },
            {
                "Name": "File",
                "Args": {
                    "path": "\\Logs\\log.log",
                    "rollingInterval": "Day",
                    "restrictedToMinimumLevel": "Error"
                }
            },
            {
                "Name": "MSSqlServer",
                "Args": {
                    "restrictedToMinimumLevel": "Debug",
                    "connectionString": "XXXX",
                    "sinkOptions": {
                        "autoCreateSqlTable": true,
                        "tableName": "Logs"
                    },
                    "columnOptionsSection": {
                        "disableTriggers": true,
                        "clusteredColumnstoreIndex": false,
                        // Add an id column
                        "primaryKey": { "ColumnName": "Id" },
                        // Add the event in json for searching
                        "addStandardColumns": [ "LogEvent" ],
                        // This is the same info as the LogEvnt but in XML.
                        "removeStandardColumns": [ "Properties" ],
                        // Add a Process column 
                        "additionalColumns": [
                            {
                                "ColumnName": "Process",
                                "DataType": "varchar",
                                "DataLength": 255
                            }
                        ]
                    }
                }
            }
        ],
        "Enrich": [ "FromLogContext" ]
    }
}

args.sinkOptions中添加UseUtcTimestamp是行不通的.

"Args": {
          "connectionString": "XXXX",
          "sinkOptions": {
            "UseUtcTimestamp": true
          }
        }

推荐答案

它应该在columnOptionsSection(docs)中:

"columnOptionsSection": {
    // ...
    "timeStamp": { "columnName": "Timestamp", "convertToUtc": true },
    // ...
}

Csharp相关问答推荐

Microsoft. SQLServer. Types(106.1000.6)在try 从用户定义的类型检索值时引发异常

找不到网址:https://localhost:7002/Category/Add?区域= Admin.为什么我的URL是这样生成的?area = Admin而不是/Admin/

SignalR客户端不会打印队列位置'

C#.NET依赖项注入顺序澄清

.NET HttpClient、JsonSerializer或误用的Stream中的内存泄漏?

S能够用DATETIME来计算,这有什么错呢?

查找表中的模式

C# CompareTo()和Compare()可以返回除-1和1以外的整数吗?

当索引和外键是不同的数据类型时,如何设置导航属性?

有空容错运算符的对立面吗?

为什么Docker中没有转发该端口?

如何实现有条件的自定义Json转换器隐藏属性

当我try 在与XAMP的MySQL服务器连接的ASP.NET核心应用程序中添加迁移时出现错误

是否可以从IQueryable T中获取一个IdentyEntry T>

Blazor服务器项目中的Blazor/.NET 8/Web API不工作

将J数组转换为列表,只保留一个嵌套的JToken

ASP.NET核心8:app.UseStaticFiles()管道执行顺序

在使用xUnit和Mock执行单元测试时,控制器ViewResult返回空的Model集合

反编译源代码时出现奇怪的字符

分别切换用于读取和写入的EF核心日志(log)