.net FileTarget无法使用NLog v5写入网络路径

vu8f3i0k  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(177)

我目前正在做一个使用NLog的项目,该协议在日志文件中发送文档。
我想把所有的非错误信息都放进“sending.json”文件中,而不需要清除或存档。然而,出于某种原因,NLog一直在创建编号文件,如“sending1.json”,“sending2.json”,即使没有配置这样做。我在NLog的早期版本中有预期的行为,我目前使用5.2.5。
注意事项:日志文件位置的路径是一个网络路径,这是否会导致某种文件锁定,NLog试图通过写入新文件来解决它?(在更新日志中提到的从版本4.x到5.2的一些变化)
此外,应用程序作为一个重新打包的服务工作,一般的日志工作,所以我怀疑这会导致这个问题。
我尝试从文档中明确添加一些与归档相关的配置选项到目标,并使用旧的4.2版本,但没有预期的效果。
NLog.config:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true">
  5. <targets>
  6. <!-- JSON Info Logging -->
  7. <target name="jsonInfo" xsi:type="File" fileName="\\***\logs\sending.json" enableFileDelete="false" replaceFileContentsOnEachWrite="false" deleteOldFileOnStartup="false">
  8. <layout xsi:type="JsonLayout">
  9. ...
  10. </layout>
  11. </target>
  12. <!-- JSON Error Logging -->
  13. <target name="jsonError" xsi:type="File" fileName="\\***\logs\error.json">
  14. ...
  15. </layout>
  16. </target>
  17. </targets>
  18. <rules>
  19. <logger name="*" minlevel="Info" maxlevel="Info" writeTo="jsonInfo" />
  20. <logger name="*" minlevel="Warn" writeTo="jsonError" />
  21. </rules>
  22. </nlog>

字符串

wecizke3

wecizke31#

NLog v5包括several breaking changes。其中之一是更改FileTarget KeepFileOpen=true的默认值
当写入远程机器主机上的网络路径时,必须使用NLog v5显式配置KeepFileOpen="false"

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" autoReload="true">
  5. <targets>
  6. <!-- JSON Info Logging -->
  7. <target name="jsonInfo" xsi:type="File" fileName="\\***\logs\sending.json" keepFileOpen="false">
  8. <layout xsi:type="JsonLayout">
  9. ...
  10. </layout>
  11. </target>
  12. <!-- JSON Error Logging -->
  13. <target name="jsonError" xsi:type="File" fileName="\\***\logs\error.json" keepFileOpen="false">
  14. ...
  15. </layout>
  16. </target>
  17. </targets>
  18. <rules>
  19. <logger name="*" minlevel="Info" maxlevel="Info" writeTo="jsonInfo" />
  20. <logger name="*" minlevel="Warn" writeTo="jsonError" />
  21. </rules>

字符串
但好奇是什么原因导致创建"sending1.json""sending2.json",因为它只发生在有一个应用程序通过使用FileTarget选项ArchiveAboveSizeArchiveEvery启用归档时。
标签:https://github.com/NLog/NLog/wiki/File-target

展开查看全部

相关问题