2015-12-13 8 views
3

Я использую log4net, чтобы создать журнал, но он ничего не делает.Log4net - не создает файл журнала

Вот app.config:

<?xml version="1.0" encoding="utf-8"> 
<configuration> 
    <configSection> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSection> 
    <log4net> 
     <appender name="WriteToFile" type="log4net.Appender.FileAppender"> 
      <file value="log.txt" /> 
      <layout ="log4net.Layout.SimpleLayout" /> 
     </appender> 
     <root> 
      <level value="ALL" /> 
      <appender-ref ref="WriteToFile"/> 
     </root> 
    </log4net> 
</configuration> 

У меня есть следующая строка в AssemblyInfo.cs:

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

Вот попытка записать в файл:

private static readonly ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

public void write() 
{ 
    log.Info("Some text here"); 
} 

а также нижеследующая строка:

log4net.Config.XmlConfigurator.Configure(); 
+0

Попробуйте это, я думаю, это вам поможет. http://stackoverflow.com/questions/1321261/configuring-log4net-with-xml-file – Brian

+0

Вы запускаете свою программу в некоторой папке, где у вас нет прав на запись? – BeerBaron

ответ

3

Если это исполняемый файл, предположим, что ваш конфигурационный файл не вызван App.config в полученной папке bin, а скорее MyApp.exe.config. Таким образом, вы можете попытаться исправить эту проблему:

ConfigFile ="App.config" 

Вы также можете пропустить имя конфигурационного файла, если вы используете по умолчанию:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

Также убедитесь, что учетная запись запуска приложения под уже писать разрешение на папку, в которой вы ожидаете записать файл журнала.


UPDATE:

Шаг за шагом руководство:

  1. Создайте новое консольное приложение
  2. Установите log4net NuGet
  3. Используйте следующее в вашем App.config:

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <configSections> 
         <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
        </configSections> 
        <log4net> 
         <appender name="WriteToFile" type="log4net.Appender.FileAppender"> 
          <file value="log.txt" /> 
          <layout type="log4net.Layout.SimpleLayout" /> 
         </appender> 
         <root> 
          <level value="ALL" /> 
          <appender-ref ref="WriteToFile" /> 
         </root> 
        </log4net> 
    </configuration> 
    
  4. И в вашем Program.cs:

    using log4net; 
    using System.Reflection; 
    
    [assembly: log4net.Config.XmlConfigurator(Watch = true)] 
    
    namespace ConsoleApplication1 
    { 
        class Program 
        { 
         private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 
    
         static void Main(string[] args) 
         { 
          log.Info("Some text here"); 
         } 
        } 
    } 
    
+0

Пробовал оба пути и до сих пор не работает :(получил еще одну идею? – Pachu

+0

Я обновил свой ответ с помощью пошагового руководства к рабочему примеру.Я не совсем уверен, что это была опечатка на вашем посту, или, скорее, у вас есть это в вашем фактическом коде, но файл конфигурации XML, который вы показали, недействителен. Например, в декларации XML отсутствует закрытие '?', Также это недопустимо: '', ... –

+0

Пробовал, что все еще не работает – Pachu

1

я только был успешным с log4net, когда я побежал статический Configure метод:

 log4net.Config.XmlConfigurator.Configure(); 

завернув в одном методе ниже чтения по умолчанию конфигурации для приложение, будь то web.config или app.config:

private static void InitLogging() 
    { 
     log4net.Config.XmlConfigurator.Configure(); 
     _logger = Common.Logging.LogManager.GetLogger(typeof(Program)); 
     _logger.Debug("Logging initialized"); 
    } 

Это кажется более элегантным с атрибутом декоратора, как вы предлагаете, но вышеупомянутое может стоить попробовать.

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