Logging NLog不会写入文件名包含点的目标文件
使用“NT AUTHORITY\NETWORK service”凭据启动windows服务时,NLog遇到了一个奇怪的问题:如果文件名包含点,它就不会将任何内容记录到文件目标 我在启用.NET Framework 3.5 SP1功能的WinServer 2008 R2标准上运行windows服务,NLog.config如下所示:Logging NLog不会写入文件名包含点的目标文件,logging,windows-services,windows-server-2008-r2,nlog,Logging,Windows Services,Windows Server 2008 R2,Nlog,使用“NT AUTHORITY\NETWORK service”凭据启动windows服务时,NLog遇到了一个奇怪的问题:如果文件名包含点,它就不会将任何内容记录到文件目标 我在启用.NET Framework 3.5 SP1功能的WinServer 2008 R2标准上运行windows服务,NLog.config如下所示: <targets> <target xsi:type="File" name="f" fileName="${basedir}/
<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服务配置中的日志文件扩展名问题(它运行在具有相同credenials的同一台机器上),只需更改项目选项中的程序集信息
有什么想法吗?启用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">
这导致了我应该修复日志
文件夹权限的结论
终于不再有什么奇怪的魔法了,我只需要允许
网络服务
写入日志
文件夹。在我的例子中,是运行应用程序池的用户
似乎在某些情况下,您需要特定的用户,我的案例运行了一个IHttpHandler,我从ProcessRequest调用了其他方法,出于某种原因,从ProcessRequest本身来看,它工作得很好,但从子方法中,我得到了
Exception in asynchronous handler
NLog.NLogRuntimeException: Exception occurred in NLog --->
System.UnauthorizedAccessException: Access is denied.
(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
在阅读了7kun的答案后,我给了每个人完全的控制权,它起了作用,然后改变了,找到了真正失踪的用户你好,你能告诉我你是如何给每个人完全的控制权的吗?参见本教程,而不是特定的用户类型“每个人”
Exception in asynchronous handler
NLog.NLogRuntimeException: Exception occurred in NLog --->
System.UnauthorizedAccessException: Access is denied.
(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))