通过项目配置文件设置Nlog unc路径
Setup Nlog unc path by project configuration file
假设我将 NLog 目标定义为:
<variable name="day" value="${date:format=dddd}"/>
<targets>
<target name="file" xsi:type="File" layout="${verbose}" fileName="${basedir}/${day}.log" />
</targets>
但是我真的想将文件位置放在应用程序配置文件或其他 xml 文件中。我不知道如何以编程方式在 C# 代码中而不是在 NLog 配置文件中设置 unc 路径。
编辑:
假设该应用程序将分布在美国不同位置的 100 个客户端中。每个客户端都希望有自己的日志文件位置。该应用程序有自己的 app.config 或相应的 xml 文件来存储其位置。所以似乎没有办法硬编码 NLog 配置文件中的位置。
所以我需要对连接字符串和数据库目标做一些类似的事情(this is my original question and self answer,可能会添加一些额外的帮助)。对该解决方案稍作修改,您可以尝试
NOTES:
1. this has not been tested but should get you close.
2. I am using Castle Windsor so this is why I have the factory class setup, you probably dont need all that, just the foreach
public class OwnNLogFactory : NLogFactory
{
public OwnNLogFactory(string filePath)
{
foreach (var dbTarget in LogManager.Configuration.AllTargets.OfType<FileTarget>().Select(aTarget => aTarget))
{
dbTarget.FileName = filePath;
}
}
}
希望这会有所帮助,我意识到不久前有人问过这个问题,但在寻找其他东西时偶然发现了这个问题
假设我将 NLog 目标定义为:
<variable name="day" value="${date:format=dddd}"/>
<targets>
<target name="file" xsi:type="File" layout="${verbose}" fileName="${basedir}/${day}.log" />
</targets>
但是我真的想将文件位置放在应用程序配置文件或其他 xml 文件中。我不知道如何以编程方式在 C# 代码中而不是在 NLog 配置文件中设置 unc 路径。
编辑:
假设该应用程序将分布在美国不同位置的 100 个客户端中。每个客户端都希望有自己的日志文件位置。该应用程序有自己的 app.config 或相应的 xml 文件来存储其位置。所以似乎没有办法硬编码 NLog 配置文件中的位置。
所以我需要对连接字符串和数据库目标做一些类似的事情(this is my original question and self answer,可能会添加一些额外的帮助)。对该解决方案稍作修改,您可以尝试
NOTES:
1. this has not been tested but should get you close.
2. I am using Castle Windsor so this is why I have the factory class setup, you probably dont need all that, just the foreach
public class OwnNLogFactory : NLogFactory
{
public OwnNLogFactory(string filePath)
{
foreach (var dbTarget in LogManager.Configuration.AllTargets.OfType<FileTarget>().Select(aTarget => aTarget))
{
dbTarget.FileName = filePath;
}
}
}
希望这会有所帮助,我意识到不久前有人问过这个问题,但在寻找其他东西时偶然发现了这个问题