如何自定义loggingConfiguration的格式化程序?

时间:2012-12-21 20:33:32

标签: asp.net logging exception-handling enterprise-library

我是EnterpriseLibrary.Logging的新手。在web.config中,在loggingConfiguration下,我们有以下格式化程序:

<formatters>
    <add name="Default Formatter" template="&#xA;Timestamp: {timestamp(local)}&#xA;&#xA;Message: {message}&#xA;&#xA;Category: {category}&#xA;&#xA;Priority: {priority}&#xA;&#xA;EventId: {eventid}&#xA;&#xA;Severity: {severity}&#xA;&#xA;Title:{title}&#xA;&#xA;Machine: {machine}&#xA;&#xA;Application Domain: {appDomain}&#xA;&#xA;Process Id: {processId}&#xA;&#xA;Process Name: {processName}&#xA;&#xA;Win32 Thread Id: {win32ThreadId}&#xA;&#xA;Thread Name: {threadName}&#xA;&#xA;User Name: {userName}&#xA;&#xA; extended Properties: {dictionary({key} - {value}&#xA;)}" 
             type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <add name="DBA Formatter" template="&#xA;Timestamp: {timestamp(local)}&#xA;&#xA;Message: {message}&#xA;&#xA;Category: {category}&#xA;&#xA;Priority: {priority}&#xA;&#xA;EventId: {eventid}&#xA;&#xA;Severity: {severity}&#xA;&#xA;Title:{title}&#xA;&#xA;Machine: {machine}&#xA;&#xA;Extended Properties: {dictionary({key} - {value}&#xA;)}" 
             type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</formatters>

在后面的代码中,我们只将消息设置为LogEntry。我想知道其他参数是如何设置的,例如时间戳,类别,优先级等。我添加了用户名,但不起作用。任何人都可以对我有所了解吗?

1 个答案:

答案 0 :(得分:3)

以下是有关这些参数的Microsoft文章:Configuring Formatters。它讨论了可以在格式化程序中插入的各种标记。

“用户名”不是预定义标记之一。但是你可以(可能)使用LogEntry的ExtendedProperties属性来解决这个问题:

 LogEntry le = new LogEntry();
 le.ExtendedProperties.Add("username", "jsmith");