gpt4 book ai didi

log4net - 扩展 log4net - 向每个日志添加额外的数据

转载 作者:行者123 更新时间:2023-12-02 02:27:20 25 4
gpt4 key购买 nike

我们正致力于使用 log4net 登录我们的应用程序。我们希望在每次通话时自动捕获某些信息。调用 log.Info 或 log.Warn 的代码应该正常调用它们,无需指定此信息。

我正在寻找一种方法来创建我们可以插入 log4net 的东西。 ILog 应用程序用于记录和附加程序之间的某种东西,以便我们可以以某种方式将此信息放入日志消息中。进入 ThreadContext 或 LogEventInfo。

我们要捕获的信息与 asp.net 相关;请求 URL、用户代理等。还有一些来 self 们要包含的应用程序 .config 文件的信息(应用程序 ID)。

我想在正常的 ILog.Info 和 appender 之间进行操作,以便该信息也自动包含在也使用 log4net(Nhibernate、NServiceBus 等)的第 3 方库中。

关于我想要的可扩展性有什么建议吗?

谢谢

最佳答案

您正在寻找的是所谓的日志事件上下文。本教程解释了它是如何工作的:

http://www.beefycode.com/post/Log4Net-Tutorial-pt-6-Log-Event-Context.aspx

特别是“计算的上下文值”一章会让您感兴趣。

更新:

我的想法是使用全局上下文。很容易看出这对于应用程序 ID 之类的东西是如何工作的(事实上,您甚至不需要计算的上下文对象)。像请求 url 这样的动态信息可以这样完成:

public class RequestUrlContext
{
public override string ToString()
{
string url;
// retrieve url from request
return url;
}
}

该对象是全局的,但是在处理请求的线程上调用该方法,因此您可以获得正确的信息。我还建议您为每个“信息实体”创建一个类,这样您就可以灵活地处理日志目标中的输出。

关于log4net - 扩展 log4net - 向每个日志添加额外的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5359266/

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