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

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}/

使用“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}/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))