我有个项目是用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.freeer.FreeerManager
[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.FreeerTemplateEngine
[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什么的都不可以,有高手知道该如何做吗?

解决方案 »

  1.   

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

  2.   

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

  3.   


    回一楼,我的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.   


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

  6.   

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

  7.   

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

  8.   


    <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,如果没有,那加上上面这句,再试试 。
      

  9.   


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

  10.   

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

  11.   

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