Omar Kooheji
Omar Kooheji

Reputation: 55760

Why is my windows service not logging anything?

<?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>

I have the above config for my windows service when it's installed, and I'm initializing my logger like so in the Progam.cs file on the service that I'm installing:

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

When I use pretty much the same configuration in an application that communicates with this service it creates a log directory and writes logs to that directory. But when I run the service nothing happens.

Upvotes: 1

Views: 3380

Answers (1)

Omar Kooheji
Omar Kooheji

Reputation: 55760

Turns out that the reason I couldn't see the logs is because I'd configured the logger the log in the active directory, which is Windows\system32 and windows wouldn't let me do that.

I changed the following line:

<file value="logs\" />

To:

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

And it works fine.

Upvotes: 3

Related Questions