Spring 如何在Jetty/log4j环境中禁用velocity调试和信息日志消息?
我的Jetty控制台上显示了大量velocity调试和信息消息。我想关闭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
- 我有一个速度属性文件
- 我有一个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.xml并将其与jetty配置进行比较,就越觉得我看到的消息是通过jetty发送的
- 我也读过
<?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>