【问题标题】:Log4net not logging if its start by windows service如果 Log4net 由 Windows 服务启动,则不会记录日志
【发布时间】:2018-07-30 02:43:32
【问题描述】:

如果 log4net 由另一个 Windows 服务启动,我会遇到 log4net 无法记录的问题。

// MonitorConsole Path
string pathToConsole = "C:\Monitor\MonitorConsole.exe";

// Start the console
Process.Start(pathToConsole);

控制台运行正常,但唯一的问题是没有记录。

但是,如果控制台应用程序是通过单击 MonitorConsole.exe 手动启动的,那么它会登录到一个文本文件中。

【问题讨论】:

  • 很可能是权限问题
  • @TheGeneral 我遵循this 方法。也不行。
  • 除了权限问题,如果您的 log4net 配置与您的 app.config 位于不同的文件中,那么您的程序可能找不到它。当您通过在资源管理器中单击它来启动程序时,您的工作目录将是您的程序所在的目录,但是当作为服务运行时可能不是这种情况,默认工作文件夹是 windows\system32。您可以查看使用 ProcessStartInfo 并设置 ProcessStartInfo.WorkingDirectory

标签: c# windows-services log4net


【解决方案1】:

可能是权限问题,运行windows服务的用户没有写入日志文件夹的权限。
尝试以您的身份运行 Windows 服务;那么它应该记录。然后你知道它记录好了。 然后查看您要用于 Windows 服务的用户的权限。

有点题外话:通常有一个“服务帐户”来运行 Windows 服务。设置为首次登录无需更改密码,密码永不过期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    相关资源
    最近更新 更多