Enterprise library Enterprise Library 5.0日志记录应用程序块:使用DatabaseTraceListener记录自定义消息

Enterprise library Enterprise Library 5.0日志记录应用程序块:使用DatabaseTraceListener记录自定义消息,enterprise-library,logging-application-block,Enterprise Library,Logging Application Block,我正在使用Enterprise Library 5.0,我的任务是将信息记录到数据库中。为此,我使用了带有数据库跟踪侦听器的企业库日志记录应用程序块 现在,几天后我发现我需要更多的信息才能登录到Logging.Log表。它们是:用户ID、会话ID等 根据业务需求,我不能使用LogEntry类的ExtendedProperty属性并将此信息存储在XML fomrat中日志表的FormattedMessage列中。我希望在日志数据库的日志表中有一个名为“User\u ID”和“Session\u I

我正在使用Enterprise Library 5.0,我的任务是将信息记录到数据库中。为此,我使用了带有数据库跟踪侦听器的企业库日志记录应用程序块

现在,几天后我发现我需要更多的信息才能登录到Logging.Log表。它们是:用户ID、会话ID等

根据业务需求,我不能使用LogEntry类的ExtendedProperty属性并将此信息存储在XML fomrat中日志表的FormattedMessage列中。我希望在日志数据库的日志表中有一个名为“User\u ID”和“Session\u ID”的正确列

问题是:如何在日志表中推送自定义信息

为此,我找到了一个名为“CustomTraceListener”的东西,我们需要覆盖两个方法,即Write(字符串消息)和WriteLog(字符串消息)

  • 如何使用此CustomeTraceListener将custome消息推送到日志表

  • Write方法采用string类型的单个参数,这意味着我将得到一个具体的字符串,我需要使用自己的代码将其分解成不同的信息并推入数据库

有人能给我发一个CustomeTraceListener到-->数据库的实现示例吗

请帮帮我

谢谢


Suraj

按照以下步骤创建自定义跟踪侦听器:

然后,您可以使用Fluent配置执行类似操作(代码不起作用,但给您一个想法):

var builder=new ConfigurationSourceBuilder();
var serviceConfig=new NameValueCollection();
serviceConfig.Add(“键”、“数据”);
builder.ConfigureLogging()
.LogToCategoryNamed(“一般”)
.WithOptions.SetAsDefaultCategory()
.SendTo.Custom(“ServiceTraceListener”,serviceConfig)
.FormatWith(新FormatterBuilder()
.TextFormatterNamed(“文本格式化程序”)
.UsingTemplate(“时间戳:{Timestamp}…{newline}”);
var configSource=new DictionaryConfigurationSource();
添加(LoggingSettings.SectionName,builder.Get(LoggingSettings.SectionName));
var cont=EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
返回cont.GetInstance();
(代码±从:)

以下是您可以在中使用的数据概述。使用模板方法:

然后在CustomTraceListener TraceData覆盖方法中使用此模板(如果您遵循此处链接的MSDN I中的演练)

另见: 额外格式:

    var builder = new ConfigurationSourceBuilder();
    var serviceConfig = new NameValueCollection();
    serviceConfig.Add("Key", "data");
    builder.ConfigureLogging()
        .LogToCategoryNamed("General")
        .WithOptions.SetAsDefaultCategory()
        .SendTo.Custom<ServiceTraceListener>("ServiceTraceListener", serviceConfig)
        .FormatWith(new FormatterBuilder()
        .TextFormatterNamed("Text Formatter")
        .UsingTemplate("Timestamp: {timestamp}...{newline})}"));

    var configSource = new DictionaryConfigurationSource();
    configSource.Add(LoggingSettings.SectionName, builder.Get(LoggingSettings.SectionName));
    var cont = EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
    return cont.GetInstance<LogWriter>();