我在Jetty控制台中显示了很多速度调试和INFO消息。我想关闭信息和调试速度吐出的消息。
环境:
这是示例消息
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
为了关闭我们现在不想看到的速度消息,似乎需要发生以下情况。我们还想让我们在需要时轻松打开速度信息:
我读到的东西:
Stackoverflow Spit Velocity Out To Console帖子看起来很有希望。但是,我越是查看log4j.xml并将其与jetty配置进行比较,我看到的消息越来越像是来自码头。
在我对此进行更多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
答案 0 :(得分:5)
让我感到震惊的是,您显示的消息在消息中显示[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。
答案 1 :(得分:5)
修改Peter对春天的回答给了我一个看起来像
的豆子<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>
这对我很有用。