2012-08-13 162 views
1

我正在使用log4net來記錄我的項目。我需要在應用程序中創建多個日誌文件。我能夠創建日誌文件,但似乎log4net無法寫入。Log4net無法寫入文件

請參閱我下面的編碼:

public void Execute(IJobExecutionContext context) 
{ 
    strLoadFilePath = @"E:\lewre\excel\stock\"; 
    strLoadFileName = @"iCenterProductConcept_*.xls"; 

    strCopyFilePath = @"E:\lewre\excel\stock\Processed\"; 
    strCopyFileName = @"iCenterProductConceptProcess_" + DateTime.Now.ToString("yyyyMMddHHmm") + ".xls"; 

    //--Assign log4net path -- 
    log4net.GlobalContext.Properties["fileName"] = strCopyFilePath + "GeneralLog_" + DateTime.Now.ToString("yyyyMMddHHmm"); 
    //log4net.GlobalContext.Properties["errorFileName"] = strCopyFilePath +"ErrorLog_"+ DateTime.Now.ToString("yyyyMMddHHmm"); 
    log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("App.config")); 
    ////**Assign log4net path ** 

    logger.Debug("test"); 
} 

log4net的配置:

<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <sectionGroup name="common"> 
     <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /> 
    </sectionGroup> 
    </configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <sectionGroup name="common"> 
     <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /> 
    </sectionGroup> 
    </configSections> 
    <appSettings> 
    <add key="log4net.Internal.Debug" value="false" /> 
    <add key="ClientSettingsProvider.ServiceUri" value="" /> 
    </appSettings> 
    <!--<common> 
    <logging> 
     <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,&#xD;&#xA;      Common.Logging.Log4Net"> 
     <arg key="configType" value="INLINE" /> 
     <arg key="configFile" value="E:\\lewre\LewrerpLog\LewreQuartzLog.log" /> 
     <arg key="level" value="ALL" /> 
     </factoryAdapter> 
    </logging> 
    </common>--> 
    <log4net> 


<appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="%property{fileName}.txt"/> 
    <appendToFile value="false"/> 
    <rollingStyle value="Size"/> 
    <maxSizeRollBackups value="-1"/> 
    <maximumFileSize value="1024KB"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date %-5level %logger - %message%newline"/> 
    </layout> 

    <filter type="log4net.Filter.PropertyFilter"> 
    <Key value="Version" /> 
    <StringToMatch value="1" /> 
    </filter> 
</appender> 

    <root> 
    <level value="All" /> 
    <appender-ref ref="FileAppender" />  
    </root> 
</log4net> 
+0

你有你的logger.Debug方法內嘗試follwing EventLog.WriteEntry(源,文本,EventLogEntryType.Error); – 2012-08-13 09:39:36

+0

對不起。無法工作 – user998405 2012-08-13 09:41:42

回答

1

配置日誌淨,你只需要添加

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 
[assembly: log4net.Config.Repository()] 
namespace MyApp 
{ 
    public class Main 
    { 
     private static readonly ILog log = LogManager.GetLogger(typeof(Main)); 
    } 
} 

這需要執行只有一次爲您的應用程序。

要編寫日誌文件的日期模式可以使用DatePattern創建。

<appender name="A1" type="log4net.Appender.RollingFileAppender"> 
    <file value="E:\lewre\excel\stock\Processed\GeneralLog_" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Date" /> 
    <staticLogFileName value="false" /> 
    <param name="DatePattern" value="yyyyMMddHHmm'.txt'" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
    </appender> 
+0

嗨,我需要創建動態文件。例如,我可能創建GeneralLog_1234.log或ErrorLog_1234.log – user998405 2012-08-13 09:45:03

+0

這也可以通過配置來處理。你需要有多個appender,並且每個appender都應該記錄過濾消息。您可以根據需要更改哪些消息通過配置進行登錄。看看這個例子開始:http://ondotnet.com/pub/a/dotnet/2003/06/16/log4net.html?page=2 – nunespascal 2012-08-13 09:52:10

+0

嗨。我只能創建日誌文件但不能寫任何文本 – user998405 2012-08-14 09:52:55