我有一个使用以下代码创建NLog实例的项目。
public FileTarget CreateNLogFileTarget(string layout, FileArchivePeriod archiveMode, int maxArchiveFiles,
bool keepFileOpen, bool enableConcurrentWrites, ArchiveNumberingMode archiveNumberingMode, string fileName)
{
FileTarget fileTarget = new FileTarget();
fileTarget.Layout = layout;
fileTarget.ArchiveEvery = archiveMode;
fileTarget.MaxArchiveFiles = maxArchiveFiles;
fileTarget.KeepFileOpen = keepFileOpen;
fileTarget.ConcurrentWrites = enableConcurrentWrites;
fileTarget.ArchiveNumbering = archiveNumberingMode;
fileTarget.FileName = fileName;
return fileTarget;
}
FileTarget infoLogFileTarget = CreateNLogFileTarget(@"${longdate} ${message}",
FileArchivePeriod.Hour, 70, false, true, ArchiveNumberingMode.Rolling, "${basedir}/Logs/" + infoLogName + "/${shortdate}{#}.log");
我在另一个项目中使用这个项目,我需要使用这个NLog实用程序类来创建我的记录器。但我需要覆盖这些配置。如何通过xml文件覆盖这些配置?任何帮助将不胜感激。
答案 0 :(得分:0)
要在XML配置中使用FileTarget
中的CreateNLogFileTarget
,您应首先在代码的其他部分找到FileTarget
的目标名称。然后你可以在配置中使用目标:
<logger name='*' minlevel="Trace" writeTo='theTarget' />
答案 1 :(得分:0)
可能使用NLog变量。更改CreateNLogFileTarget以设置参数以从NLog变量中获取它们的值。
然后在启动时检查加载的NLog配置中是否已存在这些NLog变量。如果没有,则在调用CreateNLogFileTarget之前由运行时设置它们。
https://github.com/NLog/NLog/wiki/Configuration-file#variables