0

我有一个项目,它使用下面的代码来创建一个 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 文件覆盖这些配置?任何帮助将非常感激。

4

2 回答 2

0

要在您的 XML 配置中使用FileTargetfrom CreateNLogFileTarget,您应该首先找出FileTarget它可能在代码的其他部分中的目标名称。然后你可以在你的配置中使用目标:

<logger name='*' minlevel="Trace" writeTo='theTarget' />

于 2017-03-13T23:04:30.727 回答
0

也许通过使用 NLog 变量。更改您的 CreateNLogFileTarget 以设置参数以从 NLog 变量中获取它们的值。

然后在启动时检查这些 NLog 变量是否已经存在于加载的 NLog 配置中。如果不是,则它们由运行时设置,然后调用 CreateNLogFileTarget。

https://github.com/NLog/NLog/wiki/Configuration-file#variables

于 2017-03-19T20:46:13.833 回答