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

标签 spring log4j velocity

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

环境:

  • 我有一个速度属性文件。
  • 我有一个 log4j.xml 文件
  • 我有一个类路径可能会出错,因为它的类比预期的要多,比如来自 commons-logging 的 LogKitLogger,所以它可能无关紧要,因为它不是 Logkit。 Velocity Configuring_Logging page中提到了Logkit

  • 这是一个示例消息
    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
    

    为了关闭我们现在不想看到的速度消息,似乎需要执行以下操作。我们还希望在需要时轻松地重新打开速度消息:
  • 使用 log4j 连接速度
  • 指定我们只想看到 ERROR 及以上。

  • 我读到的东西:
  • Stackoverflow Spit Velocity Out To Console帖子看起来很有希望。然而,我越是查看 log4j.xml 并将其与码头配置进行比较,我看到的消息就越像是通过码头传来的。
  • 我还阅读了 Velocity Configuring_Logging page

  • 在我做更多之前 Yak Shaving在这一点上,我想确保我按照上面概述的方法走上正轨

    顺便说一下,我们使用的是 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
    

    最佳答案

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

    我的猜测是速度正在使用烘焙的 logkit 和日志记录到标准输出,由 Jetty 重定向到 log4j 基础设施。

    Here you can see how Jetty can be reconfigured for redirecting 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();
    

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

    关于spring - 如何在我的 Jetty/log4j 环境中禁用速度调试和信息日志消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5531443/

    相关文章:

    java - Spring动态bean定义 Autowiring

    java - 春分应用程序 : log4j broken eclipse console output

    java - MDC 在日志文件中记录错误的 session ID

    java - log4j 失败 - 无法刷新 servlet 中的编写器(java.io.IOException : Bad file descriptor)

    java - 速度模板中的增量映射

    带有 Jboss eap 6.4 的 Spring Boot 2.0.1

    java - H2 数据库在内存中 - 通过 Spring/Hibernate 初始化模式

    java - 如何在 Spring 上下文初始化之前模拟 REST 服务器?

    java - 更改上游项目中的速度日志文件位置

    java - 如何自动从html页面创建模板?