2014-12-23 94 views
1

對於某些業務目的,我必須創建不同的日誌文件並將它們寫入不同的文件。 [1到1000動態變化]。它可能很瘋狂,但這是企業想要的。使用NLog登錄到不同的文件並使用NLog配置XML

我可以使用NLog以編程方式管理它:我以編程方式爲不同的日誌文件創建不同的目標,併爲它們中的每一個創建命名的記錄器。

問題是,現在我無法從外部配置NLog:假設我將更改日誌文件佈局。 [現在我應該從代碼執行]我應該創建我自己的配置文件,我不想要。

我嘗試寫入使用NConfig文件變量定義,但NLog不允許從代碼到達變量定義。

是否有可能[任何技巧]用NLog配置文件創建具有不同文件的記錄器,而無需將所有日誌目標寫入NLog File? [我不能夠把所有記錄器添加到NLOG配置,因爲我不知道有多少,我將創建,但我有一個模式來創建它們]

我的日誌文件創建模式:

我有不同的渠道在我的應用程序:對於每一個請求,我創建自己的渠道的新渠道:

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

回答

2

您可以使用唱le文件目標並將佈局渲染器合併到其參數fileName中。該目標將根據佈局渲染器提供的值選擇幾個文件中的一個。

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

其中${channelId}是爲每個通道提供不同值的佈局渲染器。這個值應該以某種方式從請求的上下文中獲得。

您可以查看現有的layout renderers,看看它們中的任何一個是否符合您的需求或編寫您自己的特定渲染器。