Log4net не записывает в файл

Я хочу добавить новый журнал в файл.это мое приложение:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="mylogfile.txt"/>
  <appendToFile value="true"/>
  <rollingStyle value="Size"/>
  <maxSizeRollBackups value="5"/>
  <maximumFileSize value="10MB"/>
  <staticLogFileName value="true"/>
  <filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="test"/>
  </filter>
  <filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="error"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/>
  </layout>
</appender>
<root>
  <level value="All"/>
  <appender-ref ref="RollingFileAppender"/>
</root>

и на моем классе я добавляю

[assembly: XmlConfigurator(Watch = true)]

и я добавляю access everyone для файла, но: log4net не записывает в файл. Почему?

4 ответов


Log4net терпит неудачу молча, когда есть проблема. Тщеславие дизайна заключается в том, что никакое ведение журнала не предпочтительнее снятия приложения. Чтобы выяснить, что не так, включите внутреннюю отладку Log4net, добавив этот ключ в [app / web].конфигурационный файл:

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

сообщения отладки будут записаны на консоль или в


вам просто нужно позвонить Configure:

log4net.Config.XmlConfigurator.Configure();

вы можете увидеть более подробную информацию здесь: Log4net не записывает файл журнала


вам нужно инициализировать ведение журнала как самый первый шаг в вашем приложении, и из той же сборки, что у вас есть [assembly] tag:

С docs:

поэтому, если вы используете атрибуты конфигурации, вы должны вызвать log4net чтобы позволить ему читать атрибуты. Простой вызов LogManager.GetLogger вызовет атрибуты вызывающей сборки для чтения и обработки. поэтому необходимо сделать ведение журнала называем как можно раньше во время запуска приложения, и конечно, перед загрузкой и вызовом любых внешних сборок.

добавьте что-то вроде этого в свой код запуска:

LogManager.GetLogger("Initialises logging from assembly attributes");

вы должны добавить этот раздел config:

<configSections>
<section name="log4net"     type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>

для ссылки на конфигурацию log4net.