2013-07-26 75 views
2

這是我第一次使用Log4net。它不顯示任何錯誤,但不寫入文件。我添加下面我AppConfig文件:Log4net for windows服務

<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/> 
    </configSections> 

<log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/> 
     </layout> 
    </appender> 

    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\CE\FileControllerLog.txt"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <!--<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>--> 
     <param name="ConversionPattern" value="%d %m%n"/> 
     </layout> 
     <appendToFile value="true"/> 
     <rollingStyle value="Composite"/> 
     <maxSizeRollBackups value="2"/> 
     <maximumFileSize value="10MB"/> 
     <staticLogFileName value="true"/> 
    </appender> 
    <logger name="FileControllerLog"> 
     <level value="INFO"/> 
     <appender-ref ref="LogFileAppender" /> 
     <appender-ref ref="ConsoleAppender"/> 
    </logger> 
[assembly: log4net.Config.XmlConfigurator(Watch = true)] //added in assembly info file 

和代碼:

ILog logger = log4net.LogManager.GetLogger("FileControllerLog"); 
logger.Info("Method starts"); 

它不記錄。

+0

嘗試在常規控制檯應用程序代碼和配置,看看它的工作原理。 –

回答

5

試試這個:

<log4net> 
    <root> 
     <level value="Error" /> 
     <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="<FilePath>" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Composite" /> 
     <maxSizeRollBackups value="14" /> 
     <countDirection value="1" /> 
     <maximumFileSize value="4096KB" /> 
     <lockingModel type="log4net.Appender.FileAppender.MinimalLock" /> 
     <staticLogFileName value="true" /> 
     <PreserveLogFileNameExtension value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%newlineDate[%date] ThreadID[%thread] Level[%-5level] Logger[%logger]] - %message%newline" /> 
     </layout> 
    </appender> 
    </log4net> 

除了這個應該有log4net的在配置部分一個條目,例如:

<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> 
    </configSections> 
</configuration> 

在您的記錄器類有ILog變量,並在構造函數中配置logger like this:

private ILog log; 

public Log4NetLogger() 
{ 
    log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
    log4net.Config.XmlConfigurator.Configure(); 
} 
+0

問題出在配置文件上。該項目不讀取配置文件。爲了解決這個問題,我在彙編文件中添加了 [assembly:log4net.Config.XmlConfigurator(ConfigFile = @「fullpath \ App.config」,Watch = true)]。 我怎麼能直接在程序集文件中給根路徑 – Sanjeev

+1

檢查這個,它肯定會解決你的問題:http://logging.apache.org/log4net/release/manual/configuration.html#attributes –

0

確保用戶在他的c下您正在運行您的服務的重新激活已寫入您嘗試保存日誌的位置的權限

1

它可能是用戶權限問題。

Windows服務通常以沒有寫入權限的NetworkService憑證開始。

您可以添加寫入和midify特權C:\ CE文件夾或使用其他追加程序(如事件日誌追加程序)

好運