Ros*_*son 2 .net xml asp.net configuration serilog
我们正在将日志记录从 log4net 转移到 Serilog。我们从 log4net 登录到我们的远程 MSSQL 服务器。我们需要保持该表和列完整,因为其他团队正在使用它,但我们需要将我们的 Serilog 日志发送到其中。查看https://github.com/serilog/serilog-sinks-mssqlserver我看不到我们如何将旧列链接到日志数据。我可以在 Columns 标记中添加列并删除所有标准列,但我不知道如何将 serilog 数据记录到这些列中。
所以这是我们当前的日志表:
CREATE TABLE [dbo].[EventLog]
(
[EventID] [INT] IDENTITY(1,1) NOT NULL,
[Date] [DATETIME] NOT NULL,
[Type] [VARCHAR](10) NOT NULL,
[Logger] [VARCHAR](255) NOT NULL,
[Thread] [VARCHAR](255) NOT NULL,
[Message] [VARCHAR](MAX) NOT NULL,
[MoResponse] [VARCHAR](MAX) NULL,
[StackTrace] [VARCHAR](MAX) NULL,
[MoStatus] [VARCHAR](255) NULL,
[MoTransactionID] [VARCHAR](255) NULL,
CONSTRAINT [PK_EventLog]
PRIMARY KEY CLUSTERED ([EventID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
我宁愿不必创建新的日志表。我只是不知道如何将弹出的数据 serilog 映射到这些列(尤其是在 Web.config xml 中)。提前致谢。
映射是通过可用属性的名称完成的,可以是通过消息模板,也可以是通过丰富器添加的属性。
Log.Logger("{EventID} some message", eventId);
Run Code Online (Sandbox Code Playgroud)
以上将属性映射EventID到EventID数据库中调用的字段。
即每条日志消息都需要具有与表中字段完全相同名称的属性(区分大小写):
EventIDDateTypeLoggerThreadMessageMoResponseStackTraceMoStatusMoTransactionID您可能希望使用一组扩充器来自动定义大多数这些属性。编写您自己的扩充器可能更容易,它负责添加可以自动包含的属性,并根据需要调用其他扩充器。
我建议您仔细阅读自定义属性列的文档,以了解它们是如何在代码中以及通过配置文件进行配置的。
ps:编写自己的自定义接收器可能更容易,借用您需要的Serilog.Sinks.MSSqlServer的基本部分。
| 归档时间: |
|
| 查看次数: |
5713 次 |
| 最近记录: |