Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否设置log4net appenders以按上下文属性或上下文堆栈级别创建文件?_Log4net_Appender - Fatal编程技术网

是否设置log4net appenders以按上下文属性或上下文堆栈级别创建文件?

是否设置log4net appenders以按上下文属性或上下文堆栈级别创建文件?,log4net,appender,Log4net,Appender,我使用log4net记录对API的调用。很多电话。我调用的方法具有多兆字节的请求/响应对数据,并且无论使用何种日志模式,都很难读取将多个调用写入同一文件的日志。所以,我觉得最好的方法是登录到多个文件 我很难弄明白如何让log4net做到这一点,或者它是否支持它 从Log4Net常见问题解答- 许多开发人员都面临着区分来自同一类但不同客户端请求的日志输出的问题。他们想出了巧妙的机制将日志输出扇出到不同的文件中。在大多数情况下,这不是正确的方法 使用上下文属性或堆栈(ThreadContext)更简

我使用log4net记录对API的调用。很多电话。我调用的方法具有多兆字节的请求/响应对数据,并且无论使用何种日志模式,都很难读取将多个调用写入同一文件的日志。所以,我觉得最好的方法是登录到多个文件

我很难弄明白如何让log4net做到这一点,或者它是否支持它

从Log4Net常见问题解答-

许多开发人员都面临着区分来自同一类但不同客户端请求的日志输出的问题。他们想出了巧妙的机制将日志输出扇出到不同的文件中。在大多数情况下,这不是正确的方法

使用上下文属性或堆栈(ThreadContext)更简单。。。此后,日志输出将自动包括上下文数据,以便您可以区分不同客户机请求的日志,即使它们输出到同一文件中

我查看了有关上下文和上下文属性的文档。似乎事件上下文最适合,但我也试着阅读其他上下文的文档。它们似乎只允许我在日志文件中添加附加属性,而不是日志文件名的一部分,或者允许我自动附加到不同的文件

有没有一种方法可以配置Appender为不同的上下文属性或上下文堆栈级别等创建不同的文件

编辑:

我正在通过Castle Windsor伐木设施使用log4net,我正在考虑切换到NLog来解决这个问题

NLog似乎通过使用
文件
目标的
文件名
属性中的
{logger}
布局呈现程序来支持此行为。我可以通过使用Windsor的
ILogger.CreateChildLogger
方法生成一个子记录器,并设置
{logger.shortName=True}
来有效地设置此属性

见:


如果可能的话,我仍然更喜欢使用log4net,因为我正在测试的项目使用它。也许我的NLog示例可以给一些人一些关于如何在log4net上实现这一点的灵感,也许他们可以帮助我解决:)

这篇文章可能会引起您的兴趣:

此外,如果您只担心可读性,那么可能会有日志文件查看器,它可以按线程名称分隔日志条目


另一种可能是将条目记录在数据库中,包括线程名称,这些条目可以使用sql轻松过滤。

我认为以编程方式指定记录器会使log4net的设计失去一些实用性。我希望这可以独立于我的代码进行配置,唯一的代码更改是为每个请求提供不同的上下文/属性。我开始认为,在这个场景中,剩下的答案(稍后使用日志查看器工具进行过滤)是使用log4net的唯一选择+那一部分是1。