当使用“NT AUTHORITY\NETWORK SERVICE”凭据启动我的 Windows 服务时,我遇到了一个奇怪的 NLog 问题:如果文件名包含点,它根本不会将任何内容记录到文件目标。
我在启用了 .NET Framework 3.5 SP1 功能的 WinServer 2008 R2 Standard 上运行 Windows 服务,NLog.config 如下:
<targets>
<target xsi:type="File"
name="f"
fileName="${basedir}/logs/${shortdate}.txt"
encoding="utf-8"
concurrentWrites="true"
keepFileOpen="false"
layout="${longdate} ${uppercase:${level}} ${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="f" />
</rules>
经过一些谷歌搜索和配置试验后,我想出了一个解决方法,在fileName
参数中不包含文件扩展名,它工作得很好,解决了问题,但看起来不像是一个体面的解决方案。
让这个问题对我来说更像是一个奇怪的魔法的原因是,我设法解决了我的第二个 Windows 服务(它在具有相同凭据的同一台机器上运行)的配置中的日志文件扩展名的问题,只需通过更改项目选项中的装配信息。
有任何想法吗?