gpt4 book ai didi

logging - NLog 不会写入文件名包含点的目标文件

转载 作者:行者123 更新时间:2023-12-04 10:19:06 25 4
gpt4 key购买 nike

当使用“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 服务(它运行在具有相同凭据的同一台机器上)的配置中的日志文件扩展名的问题。更改项目选项中的程序集信息。

有任何想法吗?

最佳答案

启用 NLog 的内部日志文件后

<nlog 
internalLogFile="c:\temp\nlogproblems.txt"
throwExceptions="true"
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

我设法捕获了 UnathorizedAccessException
2013-04-17 11:06:14.0445 Error Exception in asynchronous handler 
NLog.NLogRuntimeException: Exception occurred in NLog --->
System.UnauthorizedAccessException: Access is denied.
(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

这导致我应该修复 logs 的结论文件夹权限。

终于没有更多奇怪的魔法了,我只好允许 NETWORK SERVICE写入 logs文件夹。

关于logging - NLog 不会写入文件名包含点的目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16051780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com