使用NLog登录到不同的文件,并使用NLog Config XML进行配置

时间:2014-12-23 09:58:19

标签: logging nlog

出于某些商业目的,我必须创建不同的日志文件并将它们写入不同的文件。 [1到1000动态变化]。它可能很疯狂,但这正是企业想要的。

我能够以编程方式使用NLog管理它:我以编程方式为不同的日志文件创建不同的Target,并为每个日志文件创建命名记录器。

问题是现在我无法在外部配置NLog:假设我将更改日志文件布局。 [现在我应该从代码中执行此操作]我应该创建自己的配置文件,这是我不想要的。

我尝试编写使用NConfig文件变量定义,但NLog不允许从代码中获取变量定义。

是否有可能[任何技巧]使用NLog Config文件创建具有不同文件的记录器,而无需将所有日志目标写入NLog文件? [我无法将所有记录器添加到Nlog配置中,因为我不知道我将创建多少个,但我有一个模式来创建它们]

我的日志文件创建模式:

我的应用中有不同的频道:对于每个请求,我都会创建一个有自己频道的新频道:

  • Channel1.log Channel2.log Channel3.log .... ChannelN.log

1 个答案:

答案 0 :(得分:2)

您可以使用单个文件目标并将布局渲染器合并到其fileName参数中。此目标将根据布局渲染器提供的值选择几个文件中的一个。

<target xsi:type="File"
          layout="${message}"
          fileName="${baseDir}\Log\channel${channelId}.log"
          createDirs="true" />

其中${channelId}是布局渲染器,它为每个通道提供不同的值。应该从请求的上下文中以某种方式获得该值。

您可以查找现有的layout renderers,看看它们是否符合您的需求,或者编写您自己的特定渲染器。