Log4net не может писать, только создает пустые файлы, но не записывает реальные журналы - PullRequest
7 голосов
/ 20 июня 2011

Я не могу записать в журнал какую-либо информацию, ошибку, отладку с использованием log4net, я пробовал все, что давало разрешение сетевой службе, каждому, каталоги, временная папка asp.net, папка журнала, даже c: \,

это просто создать пустой файл.но не пишите лог

в чем может быть проблема

Thx Raj

Ответы [ 3 ]

9 голосов
/ 21 июня 2011

Полагаю, в вашем конфигурационном файле вы не указали шаблон макета.Обычно у вас есть нечто, похожее на это внутри вашего appender:

<layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>

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

Я согласен с теми в комментариях, которые сказали, что это, вероятно, не проблема с разрешениями, потому что файл создается.Чтобы проверить, что это правда, вы можете добавить в свою конфигурацию appender, который выводит данные на консоль.Затем вы можете посмотреть вывод, как вы отлаживаете свое приложение.Если это тоже не сработает, вы знаете, что проблема не связана с разрешениями.

Лучшее предложение, которое я могу дать, - сравнить ваш файл конфигурации с рабочим.Убедитесь, что у каждого раздела есть аналог в рабочем конфиге или что вы знаете, почему он не нужен.Вот статья, которую я написал в log4net, которая содержит пояснения по каждому разделу конфигурации и показывает, как их написать:

http://www.codeproject.com/KB/dotnet/Log4net_Tutorial.aspx

Если все это не помогает, пожалуйста,опубликуйте текст вашего файла конфигурации в своем вопросе, чтобы мы могли его просмотреть.

2 голосов
/ 16 февраля 2014

Одной из возможных причин этой проблемы может быть Уровень ведения журнала . Проверьте, установлен ли уровень ведения журнала FATAL, и если это так, попробуйте заменить эту часть web.config:

 <log4net>
         .....
         <root>
              <level value="FATAL" /> 
              <appender-ref ref="RollingFileAppender" />
            </root>
         .....
    </log4net>

с этим:

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

Кроме того, не забудьте проверить в разделе web.config возможные случаи

 <filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="test" />
  </filter>

подразделы. В этом случае, даже если уровень ведения журнала установлен на DEBUG (например), и вы вставьте в свой код что-то вроде:

log.Debug("Db quering...");

всегда будет пустым, но если вы напишите, например:

log.Debug("test: Db quering...");

Поэтому попробуйте закомментировать разделы фильтра, а также эту строку

  <filter type="log4net.Filter.DenyAllFilter" />

В этот момент, наконец, вы должны заставить его работать !!

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

0 голосов
/ 07 октября 2018

Если вы используете собственный PatternLayout, см. В конфигурационном файле пространство имен класса шаблонов:

<layout type="My.PatternClass.Namespace.MyPatternLayout">
    ...
</layout>
...