为什么我的Windows服务不会写入我的日志文件?

Mik*_*osa 25 c# service logging windows-services nlog

我有一个Windows服务并使用nlog进行日志记录.当我从visual studio ide运行时,一切正常.日志文件更新没有问题.当我安装该服务时,该服务运行正常,但日志文件永远不会更新.如果有帮助,我在LOCAL SERVICE下运行.是的,我在我的应用程序文件夹下创建了logs目录.

 <?xml version="1.0" encoding="utf-8" ?>
 <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

  <targets>
    <target name="file" xsi:type="File" fileName="${basedir}/logs/${shortdate}_info.txt"
            layout="${date} ${logger} ${message}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Info" maxlevel="Info" writeTo="file" />
  </rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)

小智 28

我也遇到过这个问题.正如genki所提到的,您可能正在登录\ Windows\System32目录.也许先检查一下你期望的日志文件.在编写服务时,我经常在开头添加这样一行,以使当前目录的行为与普通应用程序类似

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
Run Code Online (Sandbox Code Playgroud)


Ste*_*ski 12

如果您使用的是x64版本的Windows,则日志文件保存在C:\ Windows\SysWOW64文件夹中

如果使用AnyCPU配置构建项目并部署到64位操作系统,则这是默认情况.


Mic*_*ows 10

您的本地服务帐户无权写入指定的文件位置.您将其设置为使用服务属性对话框的"登录"选项卡中的系统帐户,或者您可以在设置过程中设置用户帐户.

  • 或者只是授予本地服务权限以在安装程序中写入该目录. (2认同)
  • 我如何在安装程序中授予权限?nlog.config也在项目bin目录中,但没有移动到安装文件.我怎么能做到这一点 (2认同)