2010-09-08 99 views
4

所以我有一個網站和一個控制檯應用程序,每天運行。Log4Net配置問題

它們都調用一個名爲ProcessIncident()的函數。該網站允許您爲個別事件手動執行此操作,並且控制檯應用程序每晚都會執行一次批處理。

在函數我有不同的log4net的Log.InfoFormat()和Log.DebugFormat()調用

當我從網站上運行它記錄罰款

當我從控制檯應用程序它不」跑噸數在所有

definatly指定的路徑存在

控制檯應用程序配置是如下

<?xml version="1.0" encoding="utf-8" ?> 
<log4net xmlns="urn:log4net"> 



    <logger name="NHibernate"> 
    <level value="OFF" /> 
    <appender-ref ref="NHibernateFileAppender" /> 
    </logger> 


    <logger name="SMS"> 
    <level value="ALL" /> 
    <appender-ref ref="SmsFileAppender" /> 
    </logger> 




<appender name="SmsFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="D:\XXXX\SMS.IncidentBilling.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="2" /> 
    <maximumFileSize value="1MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="[%date] %-5level %logger %message %newline" /> 
    </layout> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
</appender> 







    <appender name="NHibernateFileAppender" type="log4net.Appender.FileAppender"> 
    <file type="log4net.Util.PatternString" value="D:\Dev\SMS\Main\Source\SMS.Website\Logs\nhibernate.log" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="[%date] %appdomain %-5level %c %message %newline" /> 
    </layout> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    </appender> 








</log4net> 

在控制檯應用程序,我已經refereneced log4net的DLL和我declareing amember作爲

private ILog Log = LogManager.GetLogger(typeof(Task)); 

任何人都可以看到什麼愚蠢的,我做的事情。這是沒有實際的錯誤,只是沒有什麼是通過控制檯應用程序記錄gettign

回答

2

我不記得我確實做了什麼,但我認爲你應該在使用它之前初始化log4net。

事情是這樣的一行:

log4net.Config.XmlConfigurator.Configure(); 

看看這裏的更多信息:

Have log4net use application config file for configuration data.

看到太多這樣一個(他叫log4net.Config.BasicConfigurator.Configure();):

Log4Net Tutorial in C# .net (How can I show log in a file?)

+0

我結束了通話 log4net.Config.XmlConfigurator.ConfigureAndWatch(log4netConfigFile); 但是你也可以不帶參數地調用它,並且它會在你的app.config文件中看到 – 2010-09-08 05:21:32

3

Leniel Macaferi's answer一起,使用web應用程序與控制檯應用程序注意到的一個區別是,如果您正在爲log4net使用單獨的自定義配置文件(即,它不是App.config文件的一部分),那麼您需要在構建和編譯時設置要複製的文件的屬性。否則,它不會找到它。這通常不是Web應用程序的問題,因爲它可以在根目錄中找到該文件。

要改變它,在Visual Studio:

Find the config file in Solution Explorer -> right-click the file -> select Properties -> Copy to Output Directory -> "Copy always"

+0

另一種適用於我的方法是將構建操作更改爲* content *,然後日誌將始終創建。但是我在Visual Studio 2015中工作,目前我正在寫這篇文章,所以誰知道...... – Snoopy 2017-02-03 16:08:59