Как отключить скорость отладки и сообщения журнала INFO в моей среде Jetty / log4j? - PullRequest
6 голосов
/ 03 апреля 2011

Я получаю множество сообщений об отладке скорости и INFO, которые отображаются на моей консоли Jetty. Я хотел бы отключить информацию и отладочные сообщения, которые выплевывает скорость.

Окружающая среда:

  • У меня есть файл свойств скорости.
  • У меня есть файл log4j.xml
  • У меня есть classpath, который может привести к ошибке при наличии большего количества классов, чем можно было бы ожидать, например, LogKitLogger, который поступает из общего журнала, так что это может не иметь значения, поскольку это не Logkit. Logkit упоминается на странице Velocity Configuring_Logging

Это пример сообщения

2011-04-03 13:00:14.627:/myproject:INFO:   Velocity  [debug] ResourceManager : found /com/somecompany/something/somefile_ok.vm with loader org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader

Кажется, что следующее должно произойти, чтобы отключить сообщения о скорости, которые мы не хотим видеть сейчас. Мы также хотим упростить включение сообщений о скорости, когда они нам понадобятся:

  1. скорость соединения с log4j
  2. указать, что мы хотим видеть только ОШИБКУ и выше.

Вещи, которые я прочитал:

Прежде чем я сделаю что-то еще Як для бритья , я хотел убедиться, что я на правильном пути с подходом, описанным выше

Кстати, мы используем Spring 3.x

Спасибо за любую помощь, которую вы можете предложить по этому вопросу. :)

Как и предполагалось, вот log4j.xml с небольшими изменениями в именах:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
   <!-- ===================================================================== -->
   <!--                                                                       -->
   <!--  Log4j Configuration                                                  -->
   <!--                                                                       -->
   <!-- ===================================================================== -->
   <!-- $Id: log4j.xml,v 1.6 2011-04-07 16:39:50 consumergear Exp $ -->
   <!--
   | For more configuration infromation and examples see the Jakarta Log4j
   | owebsite: http://jakarta.apache.org/log4j

   DEVELOPMENT CONFIGURATION

 -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

   <!-- ================================= -->
   <!-- Preserve messages in a local file -->
   <!-- ================================= -->

   <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
      <param name="Threshold" value="WARN" />
      <param name="file" value="G:/logs/somewebplatform/somewebapp-webapp_log4j.log" />
      <param name="append" value="true" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ISO8601} %5p %c:%L - %m%n" />
      </layout>
   </appender>

   <!-- ============================== -->
   <!-- Append messages to the console -->
   <!-- ============================== -->
   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
      <param name="Target" value="System.out" />
      <param name="Threshold" value="FATAL" />
      <layout class="org.apache.log4j.PatternLayout">
         <!-- The default pattern: Date Priority [Category] Message\n -->
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}:%L] %m%n" />
      </layout>
   </appender>

   <!-- Hide those pesky Hibernate logs. -->
   <logger name="net.sf">
      <level value="ERROR" />
   </logger>

   <!-- Hide those pesky apache commons logs. -->
   <logger name="org.apache.commons">
      <level value="ERROR" />
   </logger>

   <logger name="com.yesorganization">
      <level value="WARN" />
      <appender-ref ref="FILE" />
   </logger>

   <!-- ======================= -->
   <!-- Setup the Root category -->
   <!-- ======================= -->
   <root>
      <priority value="WARN" />
      <appender-ref ref="CONSOLE" />
      <appender-ref ref="FILE" />
   </root>

</log4j:configuration>

свойства скорости с незначительными именными изменениями

#
# specify two resource loaders to use
#
resource.loader = file, class
#
##
## for the loader we call 'file', set the FileResourceLoader as the
## class to use, turn off caching, and use 3 directories for templates
##
file.resource.loader.description = Velocity File Resource Loader
file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
file.resource.loader.path = d:/projects/somewebapp-webapp/src
file.resource.loader.cache = false
file.resource.loader.modificationCheckInterval = 0
#C:/Projectsyaya/someorg/src/core/java
##
##  for the loader we call 'class', use the ClasspathResourceLoader
##
class.resource.loader.description = Velocity Classpath Resource Loader
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
# 

#jar.resource.loader.path = jar:file:/myjarplace/myjar.jar
#jar.resource.loader.path = jar:file:/WEB-INF/lib/someorg-something-1.116.jar

Ответы [ 2 ]

5 голосов
/ 05 июля 2011

Изменение ответа Питера на весну дало мне определение bean, которое выглядело как

<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
    <property name="velocityProperties">
        <value>
            resource.loader=class
            class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
            velocimacro.permissions.allow.inline.local.scope
            runtime.log.logsystem.class=org.apache.velocity.runtime.log.Log4JLogChute
        </value>
    </property>
</bean>

Это прекрасно сработало для меня.

5 голосов
/ 06 июня 2011

Что меня поражает, так это то, что отображаемое вами сообщение показывает [debug] в сообщении и регистрируется в формате Log4J как [INFO]

Я предполагаю, что скорость использует запеченный в logkit и ведется запись в стандартный формат.out, который перенаправляется Jetty в инфраструктуру log4j.

Здесь вы можете увидеть, как Jetty можно перенастроить для перенаправления stdout.

Я бы проверил конфигурацию, если этослучай.

Затем вы должны заменить jar скорости на jar скорости без зависимостей (согласно инструкциям по регистрации скорости) и добавить все другие зависимости, КРОМЕ logkit (и, мол, никакой другой библиотеке не нужен logkit).Затем он переключится на использование Log4J и может быть настроен с использованием категории org.apache.velocity

Если нельзя избежать Logkit, то нужно указать скорость для прямого входа в Log4j:

VelocityEngine ve = new VelocityEngine();

ve.setProperty( RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,
  "org.apache.velocity.runtime.log.Log4JLogChute" );

ve.init();

IУ меня были похожие бега, как это, но с JBoss, а не с Jetty.

...