为什么我的Windows服务没有记录任何东西?

时间:2013-07-05 10:55:45

标签: windows-services log4net log4net-configuration

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, 
    log4net" />
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
    <system.serviceModel>
        <!-- Redacted -->
    </system.serviceModel>
  <log4net debug="true">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <file value="logs\" />
      <datePattern value="'Proxy_'dd.MM.yyyy'.log'" />
      <staticLogFileName value="false" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="5MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <priority value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
    <category name="Client.log">
      <priority value="ALL" />
    </category>
  </log4net>
  <applicationSettings>
    <!-- Redacted -->
  </applicationSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

安装后我的Windows服务有上面的配置,我正在我正在安装的服务的Progam.cs文件中初始化我的记录器:

static void Main()
{
    XmlConfigurator.Configure();
    _logger.Debug("ProxyServerService Started.");
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] 
    { 
        new ProxyServerService() 
    };
    ServiceBase.Run(ServicesToRun);
    _logger.Debug("ProxyServerService Terminated.");
}

当我在与此服务通信的应用程序中使用几乎相同的配置时,它会创建一个日志目录并将日志写入该目录。但是当我运行服务时没有任何反应。

1 个答案:

答案 0 :(得分:2)

原来我无法看到日志的原因是因为我将记录器配置为活动目录中的日志,即Windows \ system32,Windows不允许我这样做。

我更改了以下行:

<file value="logs\" />

要:

<file value="C:\AppName\logs\" />

它运作正常。