ASP.NET Core 中的 Serilog - 在其自己的列中记录 EventId
Serilog in ASP.NET Core - logging the EventId in its own column
ASP.NET Core logging有'Log event ID',
这个概念
这样我们就可以像这样记录行(来自他们的文档);
_logger.LogInformation(LoggingEvents.GET_ITEM, "Getting item {ID}", id);
Serilog 在属性列
中写入此信息 LoggingEvents.GET_ITEM
<property key='EventId'>
<structure type=''>
<property key='Id'>1002</property>
</structure>
我在数据库的 table 中添加了一个新列 'EventId',并将此 ColumnOptions 添加到记录器
columnOptions.AdditionalDataColumns = new List<DataColumn>
{
new DataColumn {DataType = typeof(byte), ColumnName = "EventId"},
new DataColumn {DataType = typeof(string), ColumnName = "SessionId"}
};
但是Serilog 不会向数据库写入任何内容。仅当我删除此行时:
new DataColumn {DataType = typeof(byte), ColumnName = "EventId"},
Serilog 是否将行写入数据库,但没有 EventId 列。
事件id怎么写?
EventId
in ASP.NET Core 不是一个整数,而是一个结构,它可能包含一个整数、一个字符串,(实际上)两者都不是,或两者都包含。
https://github.com/aspnet/Logging/blob/dev/src/Microsoft.Extensions.Logging.Abstractions/EventId.cs
当它到达 SQL 服务器接收器时,不幸的是,它无法转换为数字列。我认为您需要将列指定为文本才能正常工作。
ASP.NET Core logging有'Log event ID',
这个概念
这样我们就可以像这样记录行(来自他们的文档);
_logger.LogInformation(LoggingEvents.GET_ITEM, "Getting item {ID}", id);
Serilog 在属性列
中写入此信息 LoggingEvents.GET_ITEM<property key='EventId'>
<structure type=''>
<property key='Id'>1002</property>
</structure>
我在数据库的 table 中添加了一个新列 'EventId',并将此 ColumnOptions 添加到记录器
columnOptions.AdditionalDataColumns = new List<DataColumn>
{
new DataColumn {DataType = typeof(byte), ColumnName = "EventId"},
new DataColumn {DataType = typeof(string), ColumnName = "SessionId"}
};
但是Serilog 不会向数据库写入任何内容。仅当我删除此行时:
new DataColumn {DataType = typeof(byte), ColumnName = "EventId"},
Serilog 是否将行写入数据库,但没有 EventId 列。
事件id怎么写?
EventId
in ASP.NET Core 不是一个整数,而是一个结构,它可能包含一个整数、一个字符串,(实际上)两者都不是,或两者都包含。
https://github.com/aspnet/Logging/blob/dev/src/Microsoft.Extensions.Logging.Abstractions/EventId.cs
当它到达 SQL 服务器接收器时,不幸的是,它无法转换为数字列。我认为您需要将列指定为文本才能正常工作。