• [JBoss]


    因为JBoss使用的是log4j,JBoss的系统日志级别默认是INFO。而Hibernate或IBatis要打印SQL,级别为DEBUG,所以,程序设置了log4j级别为DEBUG会被JBoss系统设置的INFO给覆盖了。

    要解决这个问题,需要手动的配置JBoss的Log4j日志级别:

    1、打开文件:jboss-as-7.1.1.Finalstandaloneconfigurationstandalone.xml

    2、找到这个节点:

    <subsystem xmlns="urn:jboss:domain:logging:1.1">
    :
    :
    </subsystem>

    3、把console-handler的<level name="INFO"/>

    4、在下面的一堆logger中,加入这几个:

                <logger category="org.hibernate.SQL">
                    <level name="DEBUG"/>
                </logger>
                <logger category="org.hibernate.ps.PreparedStatementCache">
                    <level name="DEBUG"/>
                </logger>
                <logger category="org.hibernate.type">
                    <level name="TRACE"/>
                </logger>

    保存退出即可。


    这是<subsystem />节点的所有内容:

            <subsystem xmlns="urn:jboss:domain:logging:1.1">
                <console-handler name="CONSOLE">
                    <filter>
                        <not>
                            <match pattern="JBAS011054|JBAS011006"/>
                        </not>
                    </filter>
                    <formatter>
                        <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                    </formatter>
                </console-handler>
                <periodic-rotating-file-handler name="FILE">
                    <formatter>
                        <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                    </formatter>
                    <file relative-to="jboss.server.log.dir" path="server.log"/>
                    <suffix value=".yyyy-MM-dd"/>
                    <append value="true"/>
                </periodic-rotating-file-handler>
                <logger category="com.arjuna">
                    <level name="WARN"/>
                </logger>
                <logger category="org.apache.tomcat.util.modeler">
                    <level name="WARN"/>
                </logger>
                <logger category="sun.rmi">
                    <level name="WARN"/>
                </logger>
                <logger category="jacorb">
                    <level name="WARN"/>
                </logger>
                <logger category="jacorb.config">
                    <level name="ERROR"/>
                </logger>
                <logger category="org.hibernate.SQL">
                    <level name="DEBUG"/>
                </logger>
                <logger category="org.hibernate.ps.PreparedStatementCache">
                    <level name="DEBUG"/>
                </logger>
                <logger category="org.hibernate.type">
                    <level name="TRACE"/>
                </logger>
                <root-logger>
                    <level name="INFO"/>
                    <handlers>
                        <handler name="CONSOLE"/>
                        <handler name="FILE"/>
                    </handlers>
                </root-logger>
            </subsystem>

    在console-handler中有一个:<match pattern="JBAS011054|JBAS011006"/>

    意思是过滤掉一些JBoss的错误提示信息,不然在Jboss启动时会见到有些”无聊“异常信息,碍眼。


    log4j的配置信息:

    #########################################################
    # Log4j设置级别及需要输出哪种日志
    #########################################################
    #log4j.rootCategory=INFO, stdout, file
    log4j.rootLogger=INFO, stdout, file
    
    #########################################################
    # 开启需要输出的日志级别到指定模块
    #########################################################
    log4j.logger.org.springframework=ERROR
    log4j.logger.org.hibernate=INFO
    log4j.logger.org.apache.struts2=ERROR
    log4j.logger.org.hibernate.SQL=DEBUG
    log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
    log4j.logger.org.hibernate.type=TRACE
    
    #########################################################
    # 控制台输出
    #########################################################
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.Out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %m%n
    log4j.appender.stdout.Threshold=TRACE
    
    #########################################################
    # 文件输出
    #########################################################
    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.file.File=${webApp.root}/WEB-INF/log/loginfo.log
    log4j.appender.file.encoding=UTF-8
    log4j.appender.file.DatePattern='.'yyyy-MM-dd'.log'
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %m%n
    log4j.appender.file.BufferedIO=false
    #log4j.appender.file.BufferSize=1024

    最终输出结果:

  • 相关阅读:
    apt-get指令的autoclean,clean,autoremove的区别
    储备的小站——更新中
    apk解包——修改后缀为zip
    Linux系统调用(syscall)原理(转)
    CMakeLists.txt的写法
    android 文件读取(assets)
    linux 如何显示一个文件的某几行(中间几行)
    Android四大组件的生命周期
    Android中View绘制流程以及invalidate()等相关方法分析(转)
    struct和typedef struct彻底明白了
  • 原文地址:https://www.cnblogs.com/HD/p/4054477.html
Copyright © 2020-2023  润新知