Что у вас в конфигурации log4net? Взломы, оптимизация, наблюдения?
Это мой конфигурационный файл log4net
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %5rms [%-17.17t] %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<appender name="SmtpAppender" type="MySmtpClientSmtpAppender">
<to value="[email protected]" />
<from value="[email protected]" />
<subject value="Game Server Monitoring Failed!" />
<smtpHost value="smtp.x.com" />
<username value="admin" />
<password value="x" />
<bufferSize value="256" />
<lossy value="true" />
<evaluator type="log4net.spi.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d [ThreadId: %t] Class:%c{1} Method:%M %nMESSAGE:%n%m%n%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\\wwwlog" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<maximumFileSize value="10MB" />
<!--<rollingStyle value="Date" />-->
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="MySmtpAppender" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
Я что-то пропустил? Любые советы/советы по уменьшению размера журнала при сохранении ясности, улучшении схем конверсии? Любые интересные хаки?
Изменить: файл XMl не попал в блок кода. Обновление. Какие-либо перегрузки?
Ответы
Ответ 1
Одно предложение для RollingLogFileAppender - использовать минимальную блокировкуModel. С помощью этого параметра файл журнала не заблокирован, а он открывается и затем закрывается для каждой записи.
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
Ответ 2
Никто не упомянул кодировку. Это очень важно, если вы регистрируете сообщения на китайском, японском, арабском или любом двухбайтовом языке.
Вот пример:
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<encoding value="utf-8" />
<!-- etc. -->
</appender>
Ответ 3
Для ведения журнала с разными цветами при показе на консоли в зависимости от уровня сообщений (отладка, информация, ошибка или фатальный). Второе приложение должно сохранить его в файле:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net debug="false">
<appender name="trace" type="log4net.Appender.TraceAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender,log4net">
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Red" />
</mapping>
<mapping>
<level value="DEBUG" />
<foreColor value="White" />
</mapping>
<mapping>
<level value="INFO" />
<foreColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="Logs/NSCurrent.log" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<datePattern value="yyyy-MM-dd" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<root>
<priority value="DEBUG" />
<appender-ref ref="RollingFile" />
<appender-ref ref="ColoredConsoleAppender" />
</root>
</log4net>
</configuration>
Ответ 4
Чтобы уменьшить размер файла журнала, вы можете попробовать настроить ConversionPattern:
здесь формат, который я использую:
<layout type="log4net.Layout.PatternLayout,log4net">
<!-- a reduced format, saves bit of log space: -->
<param name="ConversionPattern" value="%date{MM/dd HH:mm:ss,fff}-{%level}-%message%newline"/>
</layout>
ДО:
2012-06-05 10: 58: 40,819 [1] INFO My App [(null)] - My App - === star
тин....
ПОСЛЕ:
06/05 11:17: 29,151- {INFO} -Мое приложение - === начало...
Примечание: документация из Apache, по-видимому, неверна для log4net - поскольку она говорит, что использует SSS для миллисекунд, тогда как log4net использует fff
Небольшая экономия на строку может иметь большую разницу:)
Ответ 5
Я запускаю довольно минимальную конфигурацию log4net и предпочитаю использовать формат XML, но одна вещь, которую я предлагаю добавить (для веб-приложений), - это приложение для отслеживания ASP.NET. Вам просто нужно добавить следующее:
<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
<layout type="log4net.Layout.PatternLayout" />
</appender>
Затем вниз в корневом журнале или где вы решите его активировать:
<root>
<level value="WARN" />
<appender-ref ref="XmlSchemaFileAppender" />
<appender-ref ref="AspNetTraceAppender" />
</root>
Это позволяет мне собрать все мои данные отладки вместе на одной странице, когда я отлаживаю некоторые детали ASP.NET. В большинстве случаев у меня есть приложение ASP.NET для отслеживания трассировки, чтобы отключить его, но действительно помогло в нескольких случаях, особенно когда вы пытаетесь выяснить, какой именно метод обратной почты сервера вызывает зависание в вашем приложении.
Ответ 6
Это может немного помочь, в зависимости от того, насколько похожи log4j и log4net, я думаю, что они основаны на той же спецификации, но я точно не знаю.
Ну, я не могу сказать вам, что у меня есть в моей конфигурации log4net, но я могу рассказать вам, что у меня есть в моей конфигурации log4j, если это достаточно...
<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!--
<appender name="CHAINSAW_APPENDER"
class="org.apache.log4j.net.SocketAppender">
<param name="RemoteHost" value="localhost" />
<param name="Port" value="4445" />
<param name="LocationInfo" value="true"/>
<param name="ReconnectionDelay" value="10000"/>
</appender>
-->
<appender name="FILE_APPENDER"
class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:/dev/logs/OSB.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p [[[[%c]]]] (((%F:%L))) ___%C___ - %m%n"/>
</layout>
</appender>
<logger name="org.apache">
<level value="WARN"/>
</logger>
<!--
<logger name="com.conciliarpress.webapp.filter.GZIPFilte">
<level value="WARN"/>
</logger>
<logger name="com.conciliarpress">
<level value="DEBUG"/>
</logger>
<logger name="BibleFormControllerTest">
<level value="DEBUG"/>
</logger>
<logger name="com.conciliarpress.webapp.action.sample.jmesa.JMesaSampleController">
<level value="DEBUG"/>
</logger>
<logger name="com.conciliarpress.webapp.action.binding">
<level value="DEBUG"/>
</logger>
<logger name="org.springframework.web.servlet.mvc">
<level value="DEBUG"/>
</logger>
<logger name="org.directwebremoting">
<level value="DEBUG"/>
</logger>
<logger name="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<level value="DEBUG"/>
</logger>
-->
<logger name="com.conciliarpress.dao.hibernate">
<level value="DEBUG"/>
</logger>
<logger name="com.conciliarpress.service.impl">
<level value="DEBUG"/>
</logger>
<logger name="com.conciliarpress.service.dwr">
<level value="DEBUG"/>
</logger>
<logger name="com.conciliarpress.webapp.action">
<level value="DEBUG" />
</logger>
<root>
<level value="WARN" />
<appender-ref ref="FILE_APPENDER"/>
</root>
</log4j:configuration>
Также у меня есть соответствующий файл конфигурации бензопилы:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<plugin name="logFileReceiver" class="org.apache.log4j.varia.LogFilePatternReceiver">
<param name="fileURL" value="file:///c:/dev/logs/OSB.log" />
<param name="timestampFormat" value="yyyy-MM-d HH:mm:ss,SSS"/>
<param name="logFormat" value="TIMESTAMP [THREAD] LEVEL [[[[LOGGER]]]] (((FILE:LINE))) ___CLASS___ - MESSAGE"/>
<param name="name" value="DLA_M_LogFile" />
<param name="tailing" value="true" />
</plugin>
<root>
<level value="debug"/>
</root>
</log4j:configuration>
Также приведена некоторая информация, которая может помочь вам разрешить последний файл:
http://wiki.apache.org/logging-log4j/Configuring_a_log4j_RollingFileAppender_with_Chainsaw