我在 Log4Net 中看到您可以编写一条消息并将异常对象作为第二个参数传递。
是否可以将另一种类型的对象发送到 log4net,以便我可以查看对象日志中的值?
如果我有一个已填充的类的实例,并且我去发送该实例以进行记录,
这可能吗?
您可以实现自定义格式化程序。 (首先尝试谷歌搜索,看看是否有人制作了适合您场景的东西)。
你总是可以自己写出来,这样可以提供一些控制。您可以使用 Reflection 来获取对象的类型,获取属性并将其写为 Debug 或 Info。
您可以进一步扩展获取属性的方法,以仅写出您想要的内容,并递归运行到对象深处 n 层或直到它没有属性。
ILog
接口的各种方法都接受一个对象作为“消息”参数,因此获取由log4net“写入”的对象的最简单方法是实现一个ToString()
方法。
另一种方法是提供
IObjectRenderer
实现。我不确定如何在配置文件中注册它,但是 this 显示了如何在代码中进行操作。
如果您需要该对象作为附加程序中的单独实体,那么您应该使用 log event context (也适用于
ToString()
实现。