通过NLog配置文件xml修改Configuration API指定的NLog配置

时间:2017-03-13 09:16:02

标签: c# nlog nlog-configuration

我有一个使用以下代码创建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文件覆盖这些配置?任何帮助将不胜感激。

2 个答案:

答案 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