使用 Serilog 将数据添加到 SQL Server 中的新列

Posted

技术标签:

【中文标题】使用 Serilog 将数据添加到 SQL Server 中的新列【英文标题】:Add data to new columns in SQL Server with Serilog 【发布时间】:2021-12-07 12:34:44 【问题描述】:

我在 SQL Server 中使用 SerlLog,配置后我在 SQL Server 中有下表:

我想将数据添加到 Message LikeExpression 列和其他列以供出现。

我尝试了以下代码

Log.ForContext("Message", "Some Message")
   .ForContext("LikeExpression", ex.Message)
   .Fatal("StackTrace", ex.Message, ex.StackTrace);

这会将以下数据添加到表中

我必须在消息列中有Some Message 字符串,但它没有任何帮助吗?

【问题讨论】:

根据指南,请不要为架构和数据发布图片。以文本格式发布。你可以编辑你的问题,我建议这样做。 这是一个 - 不是“culomn” .... 您的问题没问题,但我们需要您遵循有关代码的准则。请避免在代码、架构和数据上使用图像,并将其转换为文本格式。 好的,坦克来帮你 【参考方案1】:

终于找到了答案: 我刚刚从表中删除了 Message 列,因为它使用这样的 xml 配置认为是一个令人震惊的列

<RemoveStandardColumns>
      **<remove Name="Message"/>**
      <remove Name="MessageTemplate"/>
      <remove Name="Level"/>
      <remove Name="LogEvent"/>
      <remove Name="Exception"/>
      <remove Name="TimeStamp"/>
    </RemoveStandardColumns>

然后在c#中再次将其添加为普通列

new SqlColumn
                        ColumnName = "Message", DataType = SqlDbType.VarChar, DataLength = 1024,

然后使用 serilog 将数据日志添加到此表中,我使用了以下内容

         try
            
                int b = 0;
                int a = 1 / b;
            
            catch (Exception ex)
            
                int x = OccuranceCalc("SCA");
                Log.ForContext("Message", "some Message")
                    .ForContext("LikeExpression", ex.Message)
                    .ForContext("OccurrenceCount", 1)
                    .ForContext("LastOccurrence", DateTime.Now)
                    .Fatal("StackTrace", ex.StackTrace);
            

【讨论】:

以上是关于使用 Serilog 将数据添加到 SQL Server 中的新列的主要内容,如果未能解决你的问题,请参考以下文章

Serilog 记录 web-api 方法,在中间件中添加上下文属性

SeriLog 使用经典 .net 框架从 sql server 读取属性值

Serilog:无法使用 MongoDb 接收器登录到 MongoDb

根据上下文源将 Serilog 日志过滤到不同的接收器?

.NET Worker Service 添加 Serilog 日志记录

无法使用 Serilog 登录 MS SQL