1

我有一个标准的企业库文本格式化程序,具有默认格式。日志文件已正确创建,但仍为空。如果我删除最后一个格式选项,使用扩展属性(见下文)它开始工作。如果我把它放回去,日志仍然是空的,我不知道在哪里搜索错误。

template="Tim...
Extended Properties: {dictionary({key} - {value}{newline})}"

(是的,我可以使用确切的缩写模板运行它来触发错误)。如果我删除{dictionary({key} - {value}{newline})}它开始记录的部分。该问题仅发生在测试服务器上,在我的本地开发机器上它按预期工作,输出我的扩展属性。

我尝试设置一个单独的日志记录错误目的地,但没有运气。那里没有任何记录。

4

3 回答 3

2

我认为@TimB 可能是对的。

有一个与此相关的未解决问题“未报告原始异常的原因是在报告异常时使用了另一个 TextFormatter 并引发了另一个异常,该异常被捕获并吞下(尽管触发了日志记录失败事件)。”

解决方法是不在 ExtendedProperties 中填充空值。或者也许是自定义格式化程序。

于 2012-05-25T08:12:23.820 回答
1

ExtendedProperties 字典不能包含空值。这会导致日志记录失败,因为 Enterprise Library 不希望此字典中有空对象。要诊断这是否是您的问题,您将“记录错误和警告”类别配置为在某处记录,然后您应该能够看到记录时发生的任何错误。

于 2012-05-30T20:25:45.447 回答
0

我遇到的另一个导致缺少扩展属性的问题是某些重载Logger.Write不将对象视为异常,因此不记录扩展属性。

一种选择是将 exception.Data 转换为 Dictionary 并将其作为第三个properties参数传递。

第二个选项是ExceptionPolicy.HandleException用于记录异常(假设您的异常策略将异常发送到适当的日志类别)。

于 2019-08-09T17:06:45.493 回答