假设我将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配置文件中的位置进行硬编码。
答案 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;
}
}
}
希望这会有所帮助,我意识到这是在不久前被问到的,但偶然发现了这个寻找其他东西