2016-02-17 47 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