Предпочтительный способ ведения журнала при работе с пружинным каркасом
Вопрос
Я выполнил несколько поисковых запросов в поисках информации о том, как вести ведение журнала с помощью Spring Framework.
В настоящее время у нас есть приложение, в котором нет входа в систему, за исключением инструкций system.out (очень плохой способ).
Что я хотел бы сделать, так это добавить ведение журнала, но также хочу иметь возможность контролировать ведение журнала во время выполнения, скажем, с помощью JMX.
Мы используем Rad 7.0 / WebSphere 6.1
Мне интересно узнать, каков наилучший способ (ы) достижения этой цели (я полагаю, их может быть несколько).
Обновить:Мысли по поводу следующего Весеннее ведение журнала AOP Хороший идеал или нет.Это относится к вопросу, опубликованному здесь в разделе ведение журнала: Условное ведение журнала.Улучшает ли это ситуацию или просто усложняет ее в области ведения журнала?
Решение
Я бы использовал Ведение журнала на общем доступе и Log4j.На самом деле это не вопрос для Spring, однако исходный код Springframework также использует ведение журнала Commons.Если вы создадите log4j logger и appender в log4j, вы также можете включить ведение журнала в классах Springframework.Существует несколько способов контролировать ведение журнала во время выполнения.В песочнице Log4j есть JSP, который вы можете добавить в свое веб-приложение, что позволит вам контролировать уровни регистрации всех регистраторов в вашем приложении.
Другие советы
Смотрите другие ответы для log4j.Но также учитывайте ХАМон для мониторинг приложений.Его очень легко добавить в приложение spring, например:
<bean id="performanceMonitor" class="org.springframework.aop.interceptor.JamonPerformanceMonitorInterceptor">
<property name="useDynamicLogger" value="false"/>
<property name="trackAllInvocations" value="true"/>
</bean>
<bean id="txRequired" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributes" >
<props> <prop key="*">PROPAGATION_REQUIRED</prop> </props>
</property>
<property name="preInterceptors">
<list>
<ref bean="performanceMonitor"/>
</list>
</property>
</bean>
вот пример файла для настройки log4j для консоли и файлового регистратора.если этот файл находится в пути к классу, log4j автоматически прочитает его.Однако, поскольку вы находитесь внутри сервера приложений, может существовать другой предпочтительный способ настройки ведения журнала.Я помню, что внутри JBoss был xml-файл, который вы должны были изменить.Не уверен насчет конфигурации websphere.Но если вы хотите настроить его для простого тестового приложения, это поможет вам начать работу.
# Set root logger level to WARN and appenders to A1 & F1.
log4j.rootLogger=WARN, A1, F1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# logging to console only INFO
log4j.appender.A1.Threshold=INFO
# F1 is a file appender
log4j.appender.F1=org.apache.log4j.RollingFileAppender
# Tell Spring to be quiet
log4j.logger.org.springframework=WARN
# debug logging for my classes
log4j.logger.com.yourcorp=DEBUG
log4j.logger.org.hibernate=INFO
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r : %d{HH:mm:ss,SSS} [%t] %-5p %c{1} %x - %m%n
log4j.appender.F1.File=./log/mylogfile.log
log4j.appender.F1.MaxFileSize=10MB
log4j.appender.F1.MaxBackupIndex=5
log4j.appender.F1.layout=org.apache.log4j.PatternLayout
log4j.appender.F1.layout.ConversionPattern=%-4r : %d{HH:mm:ss,SSS} [%t] %-5p %c{1} %x - %m%n