出于某些商业目的,我必须创建不同的日志文件并将它们写入不同的文件。 [1到1000动态变化]。它可能很疯狂,但这正是企业想要的。
我能够以编程方式使用NLog管理它:我以编程方式为不同的日志文件创建不同的Target,并为每个日志文件创建命名记录器。
问题是现在我无法在外部配置NLog:假设我将更改日志文件布局。 [现在我应该从代码中执行此操作]我应该创建自己的配置文件,这是我不想要的。
我尝试编写使用NConfig文件变量定义,但NLog不允许从代码中获取变量定义。
是否有可能[任何技巧]使用NLog Config文件创建具有不同文件的记录器,而无需将所有日志目标写入NLog文件? [我无法将所有记录器添加到Nlog配置中,因为我不知道我将创建多少个,但我有一个模式来创建它们]
我的日志文件创建模式:
我的应用中有不同的频道:对于每个请求,我都会创建一个有自己频道的新频道:
答案 0 :(得分:2)
您可以使用单个文件目标并将布局渲染器合并到其fileName
参数中。此目标将根据布局渲染器提供的值选择几个文件中的一个。
<target xsi:type="File"
layout="${message}"
fileName="${baseDir}\Log\channel${channelId}.log"
createDirs="true" />
其中${channelId}
是布局渲染器,它为每个通道提供不同的值。应该从请求的上下文中以某种方式获得该值。
您可以查找现有的layout renderers,看看它们是否符合您的需求,或者编写您自己的特定渲染器。