Проблема с Log4Net при использовании RollingFileAppender

Я использую log4net для ведения журнала в моем приложении. Я привязал свой проект к TFS. Я создал оболочку для log4net, как показано ниже:

public static class TestLogger
{
    private static readonly ILog log = LogManager.GetLogger("TestLogger");

    static TestLogger()
    {
        log4net.Config.XmlConfigurator.Configure();
    }

    public static void LogInfo(string information)
    {
        log.Info(information);
    }

    public static void LogError(string erroMessage, Exception ex)
    {
        log.Error(erroMessage, ex);
    }

    public static void LogWarnings(string warningText)
    {
        log.Warn(warningText);            
    }
}

Когда я попытался запустить программу из VS2010, я обнаружил, что файл журнала не создается. Я создаю другой проект (не привязанный к TFS) и выполняю некоторое протоколирование, он преуспел и создал файл в bin / debug приложения.

Ниже мой файл конфигурации log4net.

<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
    <file value="Log.txt" />
    <appendToFile value="false" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="3" />
    <maximumFileSize value="1GB" />
    <layout type="log4net.Layout.PatternLayout, log4net">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <logger name="TestLogger">
    <level value="ALL" />
    <appender-ref ref="RollingFileAppender" />
  </logger>
</log4net>

Кто-нибудь может помочь в этом вопросе?


person Omkar    schedule 10.02.2011    source источник


Ответы (4)


Некоторые советы по устранению неполадок:

  1. определите абсолютный путь к файлу журнала в вашем файле конфигурации.

  2. проверьте текущий рабочий каталог в вашем коде (Environment.CurrentDirectory). Если вы работаете в отладчике VS и не указали рабочий каталог на вкладке «Отладка» в свойствах проекта, по умолчанию может использоваться текущий рабочий каталог Visual Studio.

Я не думаю, что привязка к TFS уместна.

person Joe    schedule 10.02.2011
comment
Да, я проверил этот Путь. Он указывает на каталог по умолчанию, то есть bin \ debug. Но проблема все еще существует. Я попытался указать абсолютный путь, но файл не создается в этом месте. - person Omkar; 10.02.2011

Просто измените эту часть

<appendToFile value="true" />
person Sumit    schedule 13.04.2011

Возможно, ваше приложение уже использует некоторую декларативную конфигурацию, которая где-то скрыта в код. Найдите что-то вроде этого: [assembly: log4net.Config.XmlConfigurator(Watch=true)]

В противном случае попробуйте получить репозиторий log4net с помощью log4net.LogManager.GetRepository(). Он возвращает объект типа ILoggerRepository. Вы можете попробовать использовать этот объект, чтобы записать некоторую информацию о текущей конфигурации log4net в Консоль или где-нибудь еще.

person Theo Lenndorff    schedule 10.02.2011

Попробуйте включить внутреннюю отладку, как описано здесь. Это должно сказать вам, в чем проблема. Если нет результатов внутренней отладки, вероятно, вы не настраивали log4net.

person Stefan Egli    schedule 10.02.2011