填充企业库记录器中的严重性级别字段

本文关键字:字段 严重性 企业库 记录器 填充 | 更新日期: 2023-09-27 18:36:01

我正在尝试找到一种在企业记录器库文本格式化程序中填充字段的方法。

我的日志文件条目的当前格式如下:

2015/02/01 15:36:43.946|资讯|测试信息消息2015/02/01 15:36:43.946|错误|测试错误消息

但是,为了在记事本等基于文本的查看器中易于阅读,我希望它们的格式如下:

2015/02/01 15:36:43.946|资讯|测试信息消息2015/02/01 15:36:43.946|错误 |测试错误消息

这是可以在令牌配置中实现的,还是需要自定义格式化程序,如果是这样,是否有任何好的例子可以为我想要实现的目标提供一个起点。

另外,是否可以在日志条目中显示扩展属性集合中的单个值?

填充企业库记录器中的严重性级别字段

有几种方法可以做你想做的事。 一种方法是自定义格式化程序(如您所提到的)。 另一种选择是创建自定义LogEntry

[System.Xml.Serialization.XmlRoot("paddedLogEntry")]
[Serializable]
public class PaddedLogEntry : LogEntry
{
    public string PaddedSeverity
    {
        get
        {
            return this.Severity.ToString().PadRight(11);
        }
    }
}
LogWriter logger = new LogWriterFactory().Create();
PaddedLogEntry logEntry1 = new PaddedLogEntry()
{
    Message = "Testing 123...",
    Severity = System.Diagnostics.TraceEventType.Information
};
logEntry1.Categories.Add("General");
logger.Write(logEntry1);

使用模板字符串:{timestamp}|{property(PaddedSeverity)}|{message} .

除了创建自定义日志条目,您还可以搭载扩展属性:

LogEntry logEntry3 = new LogEntry()
{
    Message = "Oops!",
    Severity = System.Diagnostics.TraceEventType.Error
};
logEntry3.Categories.Add("General");
var extendedProperties = new Dictionary<string, object>();
extendedProperties.Add("PaddedSeverity", logEntry3.Severity.ToString().PadRight(11));
logEntry3.ExtendedProperties = extendedProperties;
logger.Write(logEntry3);

使用模板字符串:{timestamp}|{keyvalue(PaddedSeverity)}|{message} .

另外,是否可以在日志条目中显示扩展属性集合中的单个值?

答案是肯定的。 在最后一个模板中,我将该方法与 {keyvalue(PaddedSeverity)} 令牌一起使用。