我目前正在做一个使用NLog的项目,该协议在日志文件中发送文档。
我想把所有的非错误信息都放进“sending.json”文件中,而不需要清除或存档。然而,出于某种原因,NLog一直在创建编号文件,如“sending1.json”,“sending2.json”,即使没有配置这样做。我在NLog的早期版本中有预期的行为,我目前使用5.2.5。
注意事项:日志文件位置的路径是一个网络路径,这是否会导致某种文件锁定,NLog试图通过写入新文件来解决它?(在更新日志中提到的从版本4.x到5.2的一些变化)
此外,应用程序作为一个重新打包的服务工作,一般的日志工作,所以我怀疑这会导致这个问题。
我尝试从文档中明确添加一些与归档相关的配置选项到目标,并使用旧的4.2版本,但没有预期的效果。
NLog.config:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true">
<targets>
<!-- JSON Info Logging -->
<target name="jsonInfo" xsi:type="File" fileName="\\***\logs\sending.json" enableFileDelete="false" replaceFileContentsOnEachWrite="false" deleteOldFileOnStartup="false">
<layout xsi:type="JsonLayout">
...
</layout>
</target>
<!-- JSON Error Logging -->
<target name="jsonError" xsi:type="File" fileName="\\***\logs\error.json">
...
</layout>
</target>
</targets>
<rules>
<logger name="*" minlevel="Info" maxlevel="Info" writeTo="jsonInfo" />
<logger name="*" minlevel="Warn" writeTo="jsonError" />
</rules>
</nlog>
字符串
1条答案
按热度按时间wecizke31#
NLog v5包括several breaking changes。其中之一是更改FileTarget KeepFileOpen=true的默认值
当写入远程机器主机上的网络路径时,必须使用NLog v5显式配置
KeepFileOpen="false"
:字符串
但好奇是什么原因导致创建
"sending1.json"
,"sending2.json"
,因为它只发生在有一个应用程序通过使用FileTarget选项ArchiveAboveSize
或ArchiveEvery
启用归档时。标签:https://github.com/NLog/NLog/wiki/File-target