NLog OnNewLogFile 处理程序?

NLog OnNewLogFile Handler?

每次 NLog 启动一个新的日志文件时,是否有任何事件处理程序或类似的事件处理程序可以连接到 运行 一些代码?


我有这样的 NLog 配置:

    <target name="logfile" xsi:type="File"
            fileName="[stuff]"
            layout="[more Stuff]"
            maxArchiveFiles="4"
            archiveAboveSize="102400"  />

我有点想在每个日志文件的开头添加一些元数据(版本号、机器名称等,以便每个日志文件都包含一些上下文信息)

我不希望能够在 NLog 本身中配置此文本,但我希望我可以告诉 NLog 每次要创建新日志文件时 运行 某种方法。

这是一回事吗?

您可以使用 FileSystemWatcher

FileSystemWatcher 正在监视特定的(您想要的)目录,如果创建了新文件,请使用 FileSystemWatcher

处理此事件

更多详情:https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=netframework-4.8

此问题 "What version?" 方面的另一个部分解决方案可能来自:

https://github.com/NLog/NLog/wiki/AssemblyVersion-Layout-Renderer

听起来你真的在寻找 FileTarget 上的 Header-Layout。

<target name="logfile" xsi:type="File">
         <header>--- ${assembly-version} started on ${longdate} ---</header>
</target>

另见 https://github.com/NLog/NLog/wiki/File-target

有些将其与 archiveOldFileOnStartup="true" 结合使用,因为 Header 仅在创建文件时打印(确保应用程序重新启动将创建新文件)。