2009-08-24 7 views
14

Я попытался настроить log4net для записи всего на консольный вывод. У меня есть конфигурационный файл с именем Log4Net.configКонфигурирование log4net с xml-файлом

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="ConsoleAppender" /> 
    </root> 
    </log4net> 
</configuration> 

и у меня есть основной класс (только тестирование случай)

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

     static void Main(string[] args) { 
      log.Info("Info"); 
      log.Error("Error"); 
      Console.ReadKey(); 
     } 
    } 
} 

Я добавил эти строки в AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(
ConfigFile = "Log4Net.config", Watch = true)] 

Но теперь ничего регистрируется, может кто-нибудь объяснить это?

+0

Я получаю точно такую ​​же проблему. У меня такая же реализация, и я все еще не могу решить проблему. Можете ли вы помочь мне исправить это? – Karthikeyan

+2

Убедитесь, что файл log4net.config помечен как «Копировать на вывод» -> «Копировать всегда» в свойствах. – Amit

ответ

18

Если у вас есть конфигурация log4net в отдельном файле конфигурации, вы не должны включать элементы конфигурации и конфигурации. log4net должен быть элементом верхнего уровня после объявления xml.

17

попробуйте этот способ. работал на меня ..

string logFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "\\Config\\Log4Net.config"); 
    FileInfo finfo = new FileInfo(logFilePath); 
    log4net.Config.XmlConfigurator.ConfigureAndWatch(finfo); 

Я знаю очень поздний ответ. но будет полезен для одних.

Смежные вопросы