Log4Net:将 C# 对象(异常除外)写入日志?
我在 Log4Net 中看到您可以编写一条消息并将异常对象作为第二个参数传递。
是否可以将另一种类型的对象发送到 log4net,以便我可以查看对象日志中的值?
如果我有一个已填充的类的实例,并且我去发送该实例以进行记录,
这可能吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以实现自定义格式化程序< /a>. (首先尝试谷歌搜索,看看是否有人制作了适合您场景的东西)。
You can implement a custom formatter. (Try Googling first to see if anyone has made something that fits your scenario).
你总是可以自己写出来,这样可以提供一些控制。您可以使用 Reflection 来获取对象的类型,获取属性并将其写为“调试”或“信息”。
您可以进一步扩展获取属性的方法,以仅写出您想要的内容,并递归地深入对象运行 n 层,或者直到它没有属性为止。
You could always write it out yourself, which gives a bit of control. You can use Reflection to get the type of the object, get the properties and write them out as Debug or Info.
You could further extend the method that gets you the properties to only write out what you want and run recursively n-levels deep into the object or until it has no properties.
ILog
接口的各种方法接受对象作为“消息”参数,因此获取 log4net“写入”对象的最简单方法是实现ToString()
方法。另一种方法是提供 IObjectRenderer 实现。我不确定如何在配置文件中注册它,但这展示了如何在代码中进行操作。
如果您需要该对象作为附加程序中的单独实体,那么您应该使用 记录事件上下文(也适用于
ToString()
实现。The various methods of the
ILog
interface accept an object as "message" parameter, therefore the easiest way to get an object "written" by log4net is to implement aToString()
method.Another way would be to provide an
IObjectRenderer
implementation. I am not sure how to register this in a configuration file, but this shows how to do in code.If you need the object as separate entity in an appender then you should use log event context (also works well with a
ToString()
implementation.