Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何在Jetty/log4j环境中禁用velocity调试和信息日志消息?_Spring_Log4j_Velocity - Fatal编程技术网

Spring 如何在Jetty/log4j环境中禁用velocity调试和信息日志消息?

Spring 如何在Jetty/log4j环境中禁用velocity调试和信息日志消息?,spring,log4j,velocity,Spring,Log4j,Velocity,我的Jetty控制台上显示了大量velocity调试和信息消息。我想关闭velocity发出的信息和调试消息 环境: 我有一个速度属性文件 我有一个log4j.xml文件 我有一个类路径,它可能会出现错误,比如LogKitLogger,它来自commons日志,因此它可能不重要,因为它不是Logkit。日志文件中提到了Logkit 这是一条示例消息 2011-04-03 13:00:14.627:/myproject:INFO: Velocity [debug] ResourceMan

我的Jetty控制台上显示了大量velocity调试和信息消息。我想关闭velocity发出的信息和调试消息

环境:

  • 我有一个速度属性文件
  • 我有一个log4j.xml文件
  • 我有一个类路径,它可能会出现错误,比如LogKitLogger,它来自commons日志,因此它可能不重要,因为它不是Logkit。日志文件中提到了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
为了关闭我们现在不想看到的velocity消息,似乎需要执行以下操作。我们还希望在需要velocity消息时能够轻松地将其重新打开:

  • 与log4j的连接速度
  • 指定我们只希望看到错误及以上
  • 我读到的东西:

    • 这个职位看起来很有前途。然而,我越是查看log4j.xml并将其与jetty配置进行比较,就越觉得我看到的消息是通过jetty发送的

    • 我也读过

    在我做更多这方面的工作之前,我想确保我已经走上了上述方法的轨道

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

    让我印象深刻的是,您显示的消息在消息中显示[debug],并以Log4J格式记录为[INFO]

    我的猜测是velocity正在使用baked in logkit并登录到standard out,Jetty将其重定向到log4j基础设施

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

    然后,您应该将velocity jar替换为没有依赖项的velocity jar(按照velocity日志说明),并添加除logkit之外的所有其他依赖项(并且祈祷没有其他库需要logkit)。然后,它将切换到使用Log4J,并可以使用category 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();
    

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

    修改Peter对spring的回答后,我得到了一个bean def,看起来像

    <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>
    
    
    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.log4jLog
    

    这对我来说非常有用。

    你能发布你的log4j.xml文件和velocity属性文件吗?当然!将文章作为对原始文章或评论的编辑发布,还是有关系?编辑文章,在评论中您没有格式。log4j.xml和velocity属性发布在上面。我不得不改一些名字。然而,基本的东西在那里。我们提出了一个问题。看起来很有趣!我会尽快尝试的!asap=还无法尝试此操作。我会继续寻找我能尝试这个的时刻。谢谢这看起来是一个很好的答案,我不想再坚持奖励积分了。因此,我选择以下答案作为最佳答案。谢谢
    <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>