gpt4 book ai didi

logging - Enterprise Library 5.0 - 向 TextFormatter 添加自定义标记

转载 作者:行者123 更新时间:2023-12-04 06:28:26 26 4
gpt4 key购买 nike

我创建了一个自定义异常,其中包含与我们的应用程序有关的数据。我想确保在抛出异常并记录到事件日志时记录这些数据。

我尝试创建一个正在调用的自定义 TextFormatter,但不确定如何访问当前异常,以便我可以将我们的自定义信息添加到日志条目中。

有一些我不明白的地方,如果您能在将自定义 token (和数据)添加到 Enterprise Library 5.0 TextFormatters 方面得到任何帮助,我将不胜感激。

谢谢,
...马克

最佳答案

您可以扩展 TextFormatter .我认为问题在于 TextFormatter格式化 LogEntry :

public override string Format(
LogEntry log
)

因此,您需要将自定义数据放入 LogEntry。 (我认为这就是您的问题。)

另一种(我认为更简单)的方法是使用 ExtendedPropertiesLogEntry .如果您使用异常处理块 (EHAB) 来记录您的异常,那么您可以将所有自定义信息添加到 IDictionary Data属性(property)。在运行时,数据字典的内容被添加到 ExtendedProperties .然后可以通过在格式化程序定义中使用标记来记录特定属性。

例如

public class MyException : Exception
{
private string myCustomProperty;

public string MyCustomProperty
{
get
{
return myCustomProperty;
}
set
{
myCustomProperty = value;
Data["MyCustomProperty"] = value;
}
}
}

然后您可以使用带有日志记录策略的 EHAB 处理异常:

ExceptionPolicy.HandleException(ex, "Logging Exception Handler");

在您的模板中添加如下内容:

MyCustomProperty: {keyvalue(MyCustomProperty)}

这将记录您的自定义属性。

如果您没有使用 EHAB,那么您可以 不是 在您的异常类中设置 Data 值,然后创建小的帮助程序类以将您的自定义属性添加到 ExtendedProperties :

public void LogException(Exception ex)
{
LogEntry logEntry = new LogEntry();
//...
logEntry.ExtendedProperties.Add("MyCustomProperty", ex.MyCustomProperty);

Logger.Write(logEntry);
}

如果自定义异常属性的日志记录对您来说是一个普遍问题,那么您可以将所有自定义属性添加到数据字典中,然后在辅助方法中将所有数据键/值对复制到扩展属性。

关于logging - Enterprise Library 5.0 - 向 TextFormatter 添加自定义标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com