2014-01-16 4 views
18

Я получаю сообщение об ошибке в программе с настройкой log4net, но файл журнала не создается. Я уверен, что регистрация запущена в программе, потому что другие пользователи создали файлы журналов из того же самого, используя идентичный файл конфигурации для того, что я публикую ниже (за исключением пути к файлу). Я уверен, что у меня есть права на запись в путь. В момент, когда программа терпит неудачу, она обязательно должна была пройти инициализацию регистрации.Log4net Не создает файл журнала

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

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="AutoTag" type="System.Configuration.NameValueSectionHandler"/> 
    <section name="WindwardReports" type="System.Configuration.NameValueSectionHandler"/> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"/> 
    </configSections> 

    <AutoTag> 
    <add key="_debug" value="true"/> 
    </AutoTag> 

    <WindwardReports> 
    <add key="line.break" value="internal"/> 
    </WindwardReports> 

    <appSettings> 
    <add key="sql.timeout" value="240"/> 
    </appSettings> 

    <log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 

     <param name="File" value="C:\Users\loganm\Documents\Catapult.log"/> 

     <param name="AppendToFile" value="true"/> 
     <param name="MaxSizeRollBackups" value="2"/> 
     <param name="MaximumFileSize" value="100KB"/> 
     <param name="RollingStyle" value="Size"/> 
     <param name="StaticLogFileName" value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] ac.server %-5p %c - %m%n"/> 
     </layout> 
    </appender> 

    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 
    </log4net> 
</configuration> 

ответ

35

Дайте следующий код в приложение, прежде чем поместить ваш код протоколирования:

log4net.Config.XmlConfigurator.Configure(); 

Вы можете определить его в Global.asax:

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 

    // Initialize log4net. 
    log4net.Config.XmlConfigurator.Configure(); 
} 

Вы также можете добавить следующую строку Kevin (либо упоминание вашего имени файла конфигурации, либо нет):

[assembly: log4net.Config.XmlConfigurator] 

или

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

Надеюсь, это поможет !!!

5

Вот некоторые возможные вещи, чтобы рассмотреть следующие вопросы:

  1. Может быть, вы используете другую версию log4net DLL, чем ваши коллеги? Попробуйте удалить версию и общественную информацию ключа из раздела конфигурации, то есть сократить его:

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> 
    
  2. Попробуйте изменить имя файла, чтобы использовать сбежавшие обратный косые черты, т.е. «C: \\ Users \\ loganm \ ... ». Кроме того, вы можете попробовать использовать косые черты: «C:/Users/loganm/...»

  3. Если вы перестроили программу перед ее запуском, убедитесь, что вы фактически используете тот же AssemblyInfo.cs, что и ваши коллеги , Одна из распространенных ошибок заключается в том, чтобы пренебречь инициализацией регистратора там. Он должен иметь что-то вроде этого в нижней части:

    // Log4Net активации
    [сборка: log4net.Config.XmlConfigurator]

+1

Это идеальное решение. –

-2

Я нашел эту проблему, и, к сожалению, это было просто, что ведение журнала не было фактически был установлен в программе, и мне была предоставлена ​​некорректная информация.

+0

Пожалуйста, сделайте это комментарием, а не ответом. – granadaCoder

3

убедитесь, что файл log4net.config, свойство Copy to Output Directory не является «Не копировать».

На самом деле лучшим решением является добавление

<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

отслеживать, что происходит на обратной стороне. Это поможет вам обнаружить проблему.

+0

Внутренние журналы log4net печатаются в окне «Выход». – matrix

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