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.