我是NLog的新手,之前我从未使用过高级日志库。我的问题可能看起来很愚蠢,但我真的想知道如何以及用自定义属性记录自定义异常的最佳方法是什么。我应该为每种异常类型创建一个LayoutRenderer,还是有更好的方法来做到这一点?感谢
答案 0 :(得分:2)
我首先猜测你不想为每种异常类型编写自定义LayoutRenderer。原因是您可能希望为日志文件定义单个日志记录格式。例如:
${date} | ${logger} | ${level} | ${message} | ${exception}
使用许多不同的LayoutRenderers管理格式非常困难。如果您有许多自定义LayoutRenderers,您可以考虑编写一个自定义LayoutRenderer,它可以理解您拥有的所有自定义异常。或者,您可以创建一个通用的LayoutRenderer,它可以通过反射解释任何异常。
有关如何使用NLog记录自定义异常信息的一些想法,请参阅此处的question and answers。
提出的一个想法是编写一个自定义LayoutRenderer,它使用反射来查找异常的属性和值并记录它们。
另一个不涉及编写任何额外代码的想法是尝试NLog's Exception renderer。其中一个选项是使用ToString选项(我认为您这样指定:${exception:tostring}
。如果您的自定义异常(以及“正常”异常)在其ToString
方法中提供了足够的信息,这可能就足够了。