проблема log4net под моим решением - PullRequest
2 голосов
/ 27 мая 2011

В моем решении VS2010 я имею такую ​​ситуацию:

  • ВЕБ-САЙТ
  • Библиотека1
  • Библиотека2

На global.asax.cs Я инициализирую конфигурацию log4net, используя:

private static log4net.ILog _logger = log4net.LogManager.GetLogger("globalASAX");

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    log4net.Config.XmlConfigurator.Configure();
    _logger.Info("[APPLICATION START] " + DateTime.Now.ToString());
} 

Он работает нормально, и сообщение о запуске приложения доступно для файла log.txt.Проблема возникает, когда я пытаюсь использовать log что-то в классах, доступных в DLL Library1 или Library2.

Я добавил строку:

private static log4net.ILog _logger = log4net.LogManager.GetLogger(typeof(ImageRepository));

, но когда я пытаюсь все _logger.error ("blabla") ничего не происходит в файле журнала;все свойства _logger являются ложными (то есть isdebugenable = false).Как я могу это исправить?Я следовал инструкции, доступной здесь:

http://logging.apache.org/log4net/release/manual/configuration.html

Конфигурация log4net находится в файле web.config:

<log4net>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString">
            <conversionPattern value="log\explorer-log-%date{ yyyy.MM.dd.HH.mm.ss}-[%processid].log"/>
        </file>
        <appendToFile value="true"/>
        <maximumFileSize value="1024KB"/>
        <maxSizeRollBackups value="5"/>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %level %logger - %message%newline"/>
        </layout>
    </appender>
    <root>
        <level value="DEBUG"/>
        <appender-ref ref="RollingFile"/>
    </root>
</log4net>

Кто-нибудь может мне помочь?спасибо, Андреа

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Я подозреваю, что log4net не может найти регистратор для вашего типа ImageRepository . Для быстрой проверки создайте именованный регистратор и попробуйте вызвать его.

private static log4net.ILog _logger = log4net.LogManager.GetLogger("FooLog");

и конфиг

<root>
    <level value="DEBUG"/>
    <appender-ref ref="RollingFile"/>
</root>
<logger name="FooLog">
    <level value="DEBUG"/>
    <appender-ref ref="RollingFile"/>
</logger>
0 голосов
/ 28 мая 2011

Теоретически это должно работать (как я уверен, вы знаете).В целом, однако, есть две области, которые нужно проверить, когда вы ничего не записали в файл.Первой областью, которую я бы проверил, был бы сам файл appender.Текстовые файлы могут быть заблокированы, что может привести к потере сообщений.Другая вещь, которую я хотел бы проверить, - убедиться, что log4net правильно инициализирован в библиотеке.Так и должно быть, но это не помешает проверить.Если ни одно из этих решений не помогло, попробуйте включить отладку самого log4net, чтобы увидеть, какие сообщения об ошибках появляются.Вот ссылка, которая показывает, как включить эти сообщения:

http://haacked.com/archive/2006/09/27/Log4Net_Troubleshooting.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...