2011-02-10 2 views
2

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

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> 

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

ответ

2

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

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

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

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

+0

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

0

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

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

0

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

1

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

<appendToFile value="true" /> 
Смежные вопросы