2016-02-17 5 views
-1

У меня есть проект с использованием Topshelf и Log4net, когда я запускаю проект, я вижу новый файл журнала, содержащий информацию о создании службы, запуске и т. Д., Ни одна из записей журналов, которые я пытаюсь вручную, добавлен в файл.Topshelf log4net не работает должным образом

App.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<configSections> 
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" requirePermission="false"/> 
</configSections> 
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
</startup> 
<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="Common.Logging.Core" publicKeyToken="af08829b84f0328e" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="Topshelf" publicKeyToken="b800c4cfcdeea87b" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.3.154.0" newVersion="3.3.154.0" /> 
    </dependentAssembly> 
</assemblyBinding> 
</runtime> 

<log4net> 

<appender name="LogFileAppender" 
     type="log4net.Appender.RollingFileAppender" > 
    <param name="AppendToFile" 
     value="true" /> 
    <file type="log4net.Util.PatternString" value="..\..\log\Topshelf.Host.%appdomain.log" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="4" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" 
     value="%-5p %d{yyyy-MM-dd hh:mm:ss} - %m%n" /> 
    </layout> 
</appender> 
<root> 
    <level value="ALL" /> 
    <appender-ref ref="LogFileAppender" /> 
</root> 
</log4net> 
</configuration> 

Program.cs

public class Program 
{ 
    private static readonly ILog log = LogManager.GetLogger(typeof(Job)); 

    static void Main(string[] args) 
    { 
     HostFactory.Run(c =>         
     { 
      log4net.Config.XmlConfigurator.Configure(); 

      c.UseLog4Net(); 

      c.ScheduleQuartzJobAsService(q => 
        q.WithJob(() => 
         JobBuilder.Create<Job>().Build()) 
        .AddTrigger(() => 
         TriggerBuilder.Create() 
          .WithSimpleSchedule(builder => builder 
           .WithIntervalInSeconds(5) 
           .RepeatForever()) 
          .Build()) 
           );  

      log.Info("Setting up the service"); 
     });   
    } 
} 

Job.cs

public class Job : IJob 
{ 
    private readonly ILog log = LogManager.GetLogger(typeof(Job)); 

    public void Execute(IJobExecutionContext context) 
    { 
     log.ErrorFormat("The current time is: {0}", DateTime.Now);    
    } 
} 

ответ

3

Ваша конфигурация кажется нормально, поэтому наиболее распространенной ошибкой является то, что у вас нет разрешений для записи в вашем каталоге регистрации: ..\..\log\Topshelf.Host.%appdomain.log

+0

Я бы предложил писать в эту папку, поскольку разрешения обычно не являются проблемой: '' –

+0

Я переместил папку журнала в c: \ logs, журнал создан, но я не вижу сообщений, которые я пытаюсь выполнить, только сообщения журнала верхнего уровня: INFO 2016 -03-03 03:51:08 - Topshelf v3.3.154.0, .NET Framework v4.0.30319.42000 DEBUG 2016-03-03 03:51:08 - Запуск в качестве консольного приложения, создающего консольный хост. – irokhes