如何在我的Jetty/log4j环境中禁用速度调试和INFO日志消息?

fin*_*elp 6 spring velocity log4j

我在Jetty控制台中显示了大量的速度调试和INFO消息.我想关闭信息和调试速度吐出的消息.

环境:

  • 我有一个速度属性文件.
  • 我有一个log4j.xml文件
  • 我有一个类路径,可能会出现错误,因为有更多的类比LogKitLogger更多,因为LogKitLogger来自commons-logging所以它可能并不重要,因为它不是Logkit.Logocity在Velocity Configuration_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
Run Code Online (Sandbox Code Playgroud)

为了关闭我们现在不想看到的速度消息,似乎需要发生以下情况.我们还想让我们在需要时轻松打开速度信息:

  1. 用log4j连接速度
  2. 指定我们只想看ERROR及以上.

我读过的东西:

在我对此进行更多牦牛剃须之前,我想确保我按照上述方法进行

顺便说一下,我们正在使用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>
Run Code Online (Sandbox Code Playgroud)

具有次要名称调整的速度属性

#
# 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
Run Code Online (Sandbox Code Playgroud)

Pet*_*ans 5

让我感到震惊的是,您显示的消息显示消息中的[debug],并以Log4J格式记录为[INFO]

我的猜测是,速度是使用logkit中的烘焙并记录到标准输出,由Jetty重定向到log4j基础结构.

在这里,您可以看到Jetty如何重新配置​​以重定向stdout.

如果是这种情况,我会检查配置.

然后你应该用速度jar替换速度jar而不依赖(根据速度记录指令)并添加所有其他依赖项,除了logkit(并祈祷没有其他库需要logkit).然后它将切换到使用Log4J,并且可以使用类别org.apache.velocity进行配置

如果无法避免Logkit,则必须告知velocity直接登录到Log4j:

VelocityEngine ve = new VelocityEngine();

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

ve.init();
Run Code Online (Sandbox Code Playgroud)

我有类似的运行,但是使用JBoss,而不是Jetty.


小智 5

修改彼得春天的答案给了我一个看起来像的豆子

<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>
Run Code Online (Sandbox Code Playgroud)

这对我很有用.