按项目配置文件设置Nlog unc路径

时间:2015-05-14 00:27:04

标签: c# nlog

假设我将NLog目标定义为:

<variable name="day" value="${date:format=dddd}"/>
  <targets>
    <target name="file" xsi:type="File" layout="${verbose}" fileName="${basedir}/${day}.log" />
 </targets>

但是我真的想将文件位置放在app配置文件或其他xml文件中。我不知道如何以编程方式而不是在NLog配置文件中设置C#代码中的unc路径。

修改

假设该应用程序将在美国不同地点的100个客户端中分发。每个客户端都更喜欢自己的日志文件位置。该应用程序有自己的app.config或相应的xml文件来存储其位置。因此,似乎无法对NLog配置文件中的位置进行硬编码。

1 个答案:

答案 0 :(得分:0)

所以我需要做一些与连接字符串和数据库目标类似的事情(this is my original question and self answer,可能会增加一些额外的帮助)。通过一些修改来解决这个问题,您可以尝试类似

的方法
  

注意:
   1.这尚未经过测试,但应该让你接近    2.我正在使用Castle Windsor,这就是为什么我有工厂级设置,你可能不需要所有这些,只是foreach

public class OwnNLogFactory : NLogFactory
{
    public OwnNLogFactory(string filePath)
    {
        foreach (var dbTarget in LogManager.Configuration.AllTargets.OfType<FileTarget>().Select(aTarget => aTarget))
        {
            dbTarget.FileName = filePath;
        }
    }
}

希望这会有所帮助,我意识到这是在不久前被问到的,但偶然发现了这个寻找其他东西