请教,如何在tomcat启动时把struts2的debug信息去掉

时间:2022-06-27 08:31:04
我有个项目是用struts2写的,现在问题是当启动tomcat部署war包时,控制台会出现很多debug信息,如下:

[2012-02-02 14:19:46,511 DEBUG main] Loading action configurations from: struts-default.xml
[2012-02-02 14:19:46,527 DEBUG main] Creating revision for URL: jar:file:/D:/workspace/cis/webroot/WEB-INF/lib/struts2-core-2.2.1.jar!/struts-default.xml
[2012-02-02 14:19:46,589 DEBUG main] Loaded action configuration from: struts-default.xml
[2012-02-02 14:19:46,605  INFO main] Parsing configuration file [struts-default.xml]
[2012-02-02 14:19:46,605 DEBUG main] Loaded type: name:xwork impl:com.opensymphony.xwork2.ObjectFactory
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.ObjectFactory name:struts impl:org.apache.struts2.impl.StrutsObjectFactory
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.ActionProxyFactory name:xwork impl:com.opensymphony.xwork2.DefaultActionProxyFactory
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.ActionProxyFactory name:struts impl:org.apache.struts2.impl.StrutsActionProxyFactory
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.conversion.ObjectTypeDeterminer name:tiger impl:com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.conversion.ObjectTypeDeterminer name:notiger impl:com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.conversion.ObjectTypeDeterminer name:struts impl:com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.util.PatternMatcher name:struts impl:com.opensymphony.xwork2.util.WildcardHelper
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.util.PatternMatcher name:namedVariable impl:com.opensymphony.xwork2.util.NamedVariablePatternMatcher
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:com.opensymphony.xwork2.util.PatternMatcher name:regex impl:org.apache.struts2.util.RegexPatternMatcher
[2012-02-02 14:19:46,620 DEBUG main] Loaded type:org.apache.struts2.dispatcher.mapper.ActionMapper name:struts impl:org.apache.struts2.dispatcher.mapper.DefaultActionMapper
[2012-02-02 14:19:46,636 DEBUG main] Loaded type:org.apache.struts2.dispatcher.mapper.ActionMapper name:composite impl:org.apache.struts2.dispatcher.mapper.CompositeActionMapper
[2012-02-02 14:19:46,636 DEBUG main] Loaded type:org.apache.struts2.dispatcher.mapper.ActionMapper name:restful impl:org.apache.struts2.dispatcher.mapper.RestfulActionMapper
[2012-02-02 14:19:46,636 DEBUG main] Loaded type:org.apache.struts2.dispatcher.mapper.ActionMapper name:restful2 impl:org.apache.struts2.dispatcher.mapper.Restful2ActionMapper
[2012-02-02 14:19:46,636 DEBUG main] Loaded type:org.apache.struts2.dispatcher.multipart.MultiPartRequest name:struts impl:org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest
[2012-02-02 14:19:46,636 DEBUG main] Loaded type:org.apache.struts2.dispatcher.multipart.MultiPartRequest name:jakarta impl:org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest
[2012-02-02 14:19:46,636 DEBUG main] Loaded type:org.apache.struts2.views.TagLibrary name:s impl:org.apache.struts2.views.DefaultTagLibrary
[2012-02-02 14:19:46,636 DEBUG main] Loaded type: name:struts impl:org.apache.struts2.views.freemarker.FreemarkerManager
[2012-02-02 14:19:46,636 DEBUG main] Unable to load optional class: java.lang.NoClassDefFoundError: org/apache/velocity/tools/view/ToolboxManager
[2012-02-02 14:19:46,652 DEBUG main] Loaded type: name:default impl:org.apache.struts2.components.template.TemplateEngineManager
[2012-02-02 14:19:46,652 DEBUG main] Loaded type:org.apache.struts2.components.template.TemplateEngine name:ftl impl:org.apache.struts2.components.template.FreemarkerTemplateEngine
[2012-02-02 14:19:46,652 DEBUG main] Loaded type:org.apache.struts2.components.template.TemplateEngine name:vm impl:org.apache.struts2.components.template.VelocityTemplateEngine
[2012-02-02 14:19:46,652 DEBUG main] Loaded type:org.apache.struts2.components.template.TemplateEngine name:jsp impl:org.apache.struts2.components.template.JspTemplateEngine
[2012-02-02 14:19:46,652 DEBUG main] Loaded type:com.opensymphony.xwork2.conversion.impl.XWorkConverter name:struts impl:com.opensymphony.xwork2.conversion.impl.XWorkConverter
[2012-02-02 14:19:46,652 DEBUG main] Loaded type:com.opensymphony.xwork2.conversion.impl.XWorkConverter name:xwork1 impl:com.opensymphony.xwork2.conversion.impl.XWorkConverter
[2012-02-02 14:19:46,652 DEBUG main] Loaded type: name:default impl:com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter
[2012-02-02 14:19:46,667 DEBUG main] Loaded type:com.opensymphony.xwork2.TextProvider name:xwork1 impl:com.opensymphony.xwork2.TextProviderSupport
[2012-02-02 14:19:46,667 DEBUG main] Loaded type:com.opensymphony.xwork2.TextProvider name:struts impl:com.opensymphony.xwork2.TextProviderSupport
[2012-02-02 14:19:46,667 DEBUG main] Loaded type:org.apache.struts2.components.UrlRenderer name:struts impl:org.apache.struts2.components.ServletUrlRenderer
[2012-02-02 14:19:46,667 DEBUG main] Loaded type:com.opensymphony.xwork2.util.ValueStackFactory name:struts impl:com.opensymphony.xwork2.ognl.OgnlValueStackFactory
[2012-02-02 14:19:46,667 DEBUG main] Loaded type:com.opensymphony.xwork2.util.reflection.ReflectionProvider name:struts impl:com.opensymphony.xwork2.ognl.OgnlReflectionProvider
[2012-02-02 14:19:46,667 DEBUG main] Loaded type:com.opensymphony.xwork2.util.reflection.ReflectionContextFactory name:struts impl:com.opensymphony.xwork2.ognl.OgnlReflectionContextFactory
[2012-02-02 14:19:46,667 DEBUG main] Loaded type:com.opensymphony.xwork2.TextProvider name:system impl:com.opensymphony.xwork2.DefaultTextProvider
[2012-02-02 14:19:46,667 DEBUG main] Loaded type:com.opensymphony.xwork2.conversion.NullHandler name:java.lang.Object impl:com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler
[2012-02-02 14:19:46,683 DEBUG main] Loaded type:com.opensymphony.xwork2.validator.ActionValidatorManager name:struts impl:com.opensymphony.xwork2.validator.AnnotationActionValidatorManager
[2012-02-02 14:19:46,683 DEBUG main] Loaded type:com.opensymphony.xwork2.validator.ActionValidatorManager name:no-annotations impl:com.opensymphony.xwork2.validator.DefaultActionValidatorManager
[2012-02-02 14:19:46,683 DEBUG main] Loaded type:com.opensymphony.xwork2.validator.ValidatorFactory name:default impl:com.opensymphony.xwork2.validator.DefaultValidatorFactory
[2012-02-02 14:19:46,683 DEBUG main] Loaded type:com.opensymphony.xwork2.validator.ValidatorFileParser name:default impl:com.opensymphony.xwork2.validator.DefaultValidatorFileParser
[2012-02-02 14:19:46,683 DEBUG main] Loaded type: name:default impl:com.opensymphony.xwork2.ognl.OgnlUtil
[2012-02-02 14:19:46,683 DEBUG main] Loaded type:ognl.PropertyAccessor name:com.opensymphony.xwork2.util.CompoundRoot impl:com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor
[2012-02-02 14:19:46,714 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.lang.Object impl:com.opensymphony.xwork2.ognl.accessor.ObjectAccessor
[2012-02-02 14:19:46,745 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.Iterator impl:com.opensymphony.xwork2.ognl.accessor.XWorkIteratorPropertyAccessor
[2012-02-02 14:19:46,745 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.Enumeration impl:com.opensymphony.xwork2.ognl.accessor.XWorkEnumerationAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.List impl:com.opensymphony.xwork2.ognl.accessor.XWorkListPropertyAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.Set impl:com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.Map impl:com.opensymphony.xwork2.ognl.accessor.XWorkMapPropertyAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.Collection impl:com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.PropertyAccessor name:com.opensymphony.xwork2.ognl.ObjectProxy impl:com.opensymphony.xwork2.ognl.accessor.ObjectProxyPropertyAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.MethodAccessor name:java.lang.Object impl:com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.MethodAccessor name:com.opensymphony.xwork2.util.CompoundRoot impl:com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type: name:default impl:org.apache.struts2.views.jsp.ui.OgnlTool
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:org.apache.struts2.dispatcher.StaticContentLoader name:struts impl:org.apache.struts2.dispatcher.DefaultStaticContentLoader
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:com.opensymphony.xwork2.UnknownHandlerManager name:struts impl:com.opensymphony.xwork2.DefaultUnknownHandlerManager
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.ArrayList impl:com.opensymphony.xwork2.ognl.accessor.XWorkListPropertyAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.HashSet impl:com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loaded type:ognl.PropertyAccessor name:java.util.HashMap impl:com.opensymphony.xwork2.ognl.accessor.XWorkMapPropertyAccessor
[2012-02-02 14:19:46,761 DEBUG main] Loading action configurations from: struts-plugin.xml
...

这个倒是并没有报任何异常,也不影响项目使用,想请教下有没有办法把这些信息去掉?我google过都说改下log4j的级别,但是我改成error什么的都不可以,有高手知道该如何做吗?

13 个解决方案

#1


不如把你Log4j的配置贴出来,另外要确保Struts2用的确实是你修改的那个Log4j.xml,而不是来自于CLASSPATH或某个Jar包里面的另一个配置文件。

#2


log4j日志级别改为error是比较正规的。。只打印出错的日志。。。

#3


引用 1 楼 ldh911 的回复:
不如把你Log4j的配置贴出来,另外要确保Struts2用的确实是你修改的那个Log4j.xml,而不是来自于CLASSPATH或某个Jar包里面的另一个配置文件。


回一楼,我的log4j配置为

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] %c{2} - %m%n" />
</layout>
</appender>

<appender name="CISLog" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/home/tnuser/logs/cis/cis.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] %c{2} - %m%n" />
</layout>
</appender>

<logger name="CisActionLogger" additivity="false">
<level value="debug" />
<appender-ref ref="console" />
<appender-ref ref="CISLog" />
</logger>

<root>
<level value="info" />
<appender-ref ref="console" />
</root>

</log4j:configuration>

用的是log4j.xml方式,我当初也怀疑就是哪个jar包里的log4j才导致出现这些debug信息。

#4


你这里面。。。根本没有跟Struts有关的Log配置项啊?

#5


引用 4 楼 ldh911 的回复:
你这里面。。。根本没有跟Struts有关的Log配置项啊?


所以这个问题很奇怪,我一个另外的项目和这个项目差不多,那个项目就没有那些debug信息,这个项目就会有

#6


找到你的log4j的配置文件,把级别设置为info 这样你可以看到info以上的信息了包括info信息

#7


引用 6 楼 wel_sky 的回复:
找到你的log4j的配置文件,把级别设置为info 这样你可以看到info以上的信息了包括info信息


改过了,不管用的

#8


<logger name="CisActionLogger" additivity="false">
<level value="debug" />
<appender-ref ref="console" />
<appender-ref ref="CISLog" />
</logger>

删掉试试。

#9



<interceptors>
  <interceptor-stack name="appDefaultStack">
    <interceptor-ref name="defaultStack">
     <param name="exception.logEnabled">true</param>
     <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>
 </interceptor-stack>
</interceptors>

<default-interceptor-ref name="appDefaultStack" />



检查一下struts.xml里有没有关于 ExceptionMappingInterceptor 的配置,如果有就把logLevel改为ERROR,如果没有,那加上上面这句,再试试 。

#10


引用 8 楼 intargc 的回复:
<logger name="CisActionLogger" additivity="false">
<level value="debug" />
<appender-ref ref="console" />
<appender-ref ref="CISLog" />
</logger>

删掉试试。


试了不管用,你看它显示的log信息和我定义的格式不一样,它显示的有毫秒,我定义的格式里就没有毫秒,所以感觉它调了其他的log文件

#11


把log的level全部改为ERROR试试看。

#12


那个项目测试了一下,没找出方案,围观求解!

#13


引用 9 楼 joeduke 的回复:
XML code

<interceptors>
  <interceptor-stack name="appDefaultStack">
    <interceptor-ref name="defaultStack">
     <param name="exception.logEnabled">true</param>
     <param name="exception.logLe……



试过了,没用,初步感觉是这个项目调用了另外jar包里的配置文件,你看它打印的log格式都和我定义的不一样,我定义的格式里并没有毫秒。

#1


不如把你Log4j的配置贴出来,另外要确保Struts2用的确实是你修改的那个Log4j.xml,而不是来自于CLASSPATH或某个Jar包里面的另一个配置文件。

#2


log4j日志级别改为error是比较正规的。。只打印出错的日志。。。

#3


引用 1 楼 ldh911 的回复:
不如把你Log4j的配置贴出来,另外要确保Struts2用的确实是你修改的那个Log4j.xml,而不是来自于CLASSPATH或某个Jar包里面的另一个配置文件。


回一楼,我的log4j配置为

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] %c{2} - %m%n" />
</layout>
</appender>

<appender name="CISLog" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/home/tnuser/logs/cis/cis.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] %c{2} - %m%n" />
</layout>
</appender>

<logger name="CisActionLogger" additivity="false">
<level value="debug" />
<appender-ref ref="console" />
<appender-ref ref="CISLog" />
</logger>

<root>
<level value="info" />
<appender-ref ref="console" />
</root>

</log4j:configuration>

用的是log4j.xml方式,我当初也怀疑就是哪个jar包里的log4j才导致出现这些debug信息。

#4


你这里面。。。根本没有跟Struts有关的Log配置项啊?

#5


引用 4 楼 ldh911 的回复:
你这里面。。。根本没有跟Struts有关的Log配置项啊?


所以这个问题很奇怪,我一个另外的项目和这个项目差不多,那个项目就没有那些debug信息,这个项目就会有

#6


找到你的log4j的配置文件,把级别设置为info 这样你可以看到info以上的信息了包括info信息

#7


引用 6 楼 wel_sky 的回复:
找到你的log4j的配置文件,把级别设置为info 这样你可以看到info以上的信息了包括info信息


改过了,不管用的

#8


<logger name="CisActionLogger" additivity="false">
<level value="debug" />
<appender-ref ref="console" />
<appender-ref ref="CISLog" />
</logger>

删掉试试。

#9



<interceptors>
  <interceptor-stack name="appDefaultStack">
    <interceptor-ref name="defaultStack">
     <param name="exception.logEnabled">true</param>
     <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>
 </interceptor-stack>
</interceptors>

<default-interceptor-ref name="appDefaultStack" />



检查一下struts.xml里有没有关于 ExceptionMappingInterceptor 的配置,如果有就把logLevel改为ERROR,如果没有,那加上上面这句,再试试 。

#10


引用 8 楼 intargc 的回复:
<logger name="CisActionLogger" additivity="false">
<level value="debug" />
<appender-ref ref="console" />
<appender-ref ref="CISLog" />
</logger>

删掉试试。


试了不管用,你看它显示的log信息和我定义的格式不一样,它显示的有毫秒,我定义的格式里就没有毫秒,所以感觉它调了其他的log文件

#11


把log的level全部改为ERROR试试看。

#12


那个项目测试了一下,没找出方案,围观求解!

#13


引用 9 楼 joeduke 的回复:
XML code

<interceptors>
  <interceptor-stack name="appDefaultStack">
    <interceptor-ref name="defaultStack">
     <param name="exception.logEnabled">true</param>
     <param name="exception.logLe……



试过了,没用,初步感觉是这个项目调用了另外jar包里的配置文件,你看它打印的log格式都和我定义的不一样,我定义的格式里并没有毫秒。