在app.config上设置ApplicationData文件夹,并在Nlog.config上获取它

时间:2019-02-12 11:29:24

标签: c# visual-studio app-config nlog nlog.config

我想在app.config上设置NLog日志文件的路径。

我知道如何在NLog.config上设置applicationData文件夹。就像这样:

<target xsi:type="File" 
    name="logFileCsv" 
    fileName="${specialfolder:folder=ApplicationData}/something/something.log">

如果我使用NLog.Extended,我知道如何从app.config获取键值并在NLog.config上使用它们,如下所示:

<target xsi:type="File" name="logFileCsv" fileName="${appsetting:name=LogPath">

在app.config上应该是这样

<add key="LogPath" value="${APPDATA}/something/something.log" />

但是它不能按照我想要的方式工作。 NLog正在c:\..\${APPDATA}/something/something.log"

上创建日志文件

因此,我想知道如何在app.config上设置ApplicationData文件夹,以使NLog可以理解它?

2 个答案:

答案 0 :(得分:1)

不幸的是,${appsetting}不会评估该值。

随着工作的进行,您可以这样做:

<target fileName="${APPDATA}/${appsetting:name=LogPath}" />

注意:使用$ {replace}换行也将无效

答案 1 :(得分:1)

我尝试了answer of Julian,但并没有完全成功:

Error FileTarget(Name=logFileCsv): Failed write to file '\\something\something.log

但是,借助该帮助和解决方法,我弄清楚了如何做到这一点: 因此,在App.config中只需添加最终路径:

<add key="LogPath" value="\something\something.log"/>

,并且在NLog.Config中,我做到了:

<target xsi:type="File" name="logFileCsv" fileName="${specialfolder:folder=ApplicationData}/${appsetting:name=LogPath}">

现在,日志被写在正确的路径上:C:\ Users \ user \ AppData \ Roaming \ something \ something.log