侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

jboss7.1.1下使用log4j输出mybatis3.2.2的SQL语句问题与解决方法

2022-07-01 星期五 / 0 评论 / 0 点赞 / 61 阅读 / 14204 字

痛苦了好几天,新项目的环境是jboss as 7.1.1 final + mybatis 3.2.2 +spring4.0.0 今天要输出mybatis的日志,以便查看所执行的SQL语句,无论如何配置

痛苦了好几天,新项目的环境是jboss as 7.1.1 final + mybatis 3.2.2 +spring4.0.0

今天要输出mybatis的日志,以便查看所执行的SQL语句,无论如何配置log4j.properties都无法实现。

按照mybatis的文档提供的方法进行log4j.properties文件以及mybatis-config.xml文件的设置,还是不能输出sql。感觉好像自己写的log4j.properties文件没有生效一样。

在网上搜素了一些资源:

http://kang36897.blog.163.com/blog/static/17047373201211262204229/

有的说,在pom.xml文件中为log4j加上<scope>provided</scope>,有的说在web.xml中配置log4j的listener,绝大部分的文档是要大家修改log4j.properties,相信我,绝对没用。

后来突然想到,会不会是容器的问题。改用junit直接测试mapper类,发现可以正常输出SQL日志。由此开始怀疑是jboss as 7.1.1的问题。又在网上搜索了一些文章,比如:https://community.jboss.org/thread/198196,我在项目中增加了jboss-deployment-structure.xml还是不行。

偶然在jboss的standalone.xml文件中发现了jboss自己的日志配置。经过修改其配置,终于可以正常输出了。

<subsystem xmlns="urn:jboss:domain:logging:1.1">            <console-handler name="CONSOLE">                <level name="INFO"/>                 <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>           <root-logger>                <level name="INFO"/>                <handlers>                    <handler name="CONSOLE"/>                    <handler name="FILE"/>                </handlers>            </root-logger>        </subsystem>

把以上的代码修改为如下的内容:

<subsystem xmlns="urn:jboss:domain:logging:1.1">            <console-handler name="CONSOLE">                <!-- <level name="INFO"/> ----- 取消console的默认输出级别-->                  <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>      <!-- 修改mybatis的mapper类文件的输出级别。这里category配置的是自己项目的包路径 -->   <logger category="cn.com.youcompany.projectname.dao">                <level name="DEBUG"/>            </logger>   <!------------------------------------------>               <root-logger>                <level name="INFO"/>                <handlers>                    <handler name="CONSOLE"/>                    <handler name="FILE"/>                </handlers>            </root-logger>        </subsystem>

正确的输入内容如下:

17:03:46,271 DEBUG [cn.com.xxx.dao.PermissionMapper.getMenuItemList] (http--127.0.0.1-8080-2) ooo Using Connection [org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6@135f74]17:03:46,272 DEBUG [cn.com.xxx.dao.PermissionMapper.getMenuItemList] (http--127.0.0.1-8080-2) ==>  Preparing: select permission_id, permission_name, parent_permission_id, permission_url, level permission_level from ( select distinct p.permission_id, p.permission_name, p.parent_permission_id, p.permission_url, p.orderby from permission p, permission_role pr, user_role ur where ur.user_login_id = ? and ur.role_type_id = pr.role_id and pr.permission_id = p.permission_id and p.is_menu = '1' order by p.orderby ) t connect by prior permission_id = parent_permission_id start with parent_permission_id = '-1' 17:03:46,274 DEBUG [cn.com.xxx.dao.PermissionMapper.getMenuItemList] (http--127.0.0.1-8080-2) ==> Parameters: administrator(String)17:03:46,292 DEBUG [cn.com.xxx.dao.PermissionMapper.getMenuItemList] (http--127.0.0.1-8080-2) <==      Total: 4

分析原因:默认的jboss as 711的console的日志输出级别是:INFO。而从mybatis的文档要求上来看,必须要debug级别日志输出才可以输出SQL语句。因此Jboss as 的日志输出级别覆盖了mybatis的日志输出内容。去掉其默认配置,并且按照mybatias的文档要求,设置自己项目类的包的日志输出级别是debug,所有问题都解决了。

不需要修改pom.xml文件,不需要在web-inf下增加jboss-deployment-structure.xml文件。

我的log4j的配置文件内容如下:

log4j.rootLogger=INFO,CONSOLE,ROLLING_FILElog4j.additivity.org.apache=true #console outputlog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=DEBUG log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n#file outputlog4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLING_FILE.Threshold=ERROR log4j.appender.ROLLING_FILE.File=log/votp.log log4j.appender.ROLLING_FILE.Append=true log4j.appender.ROLLING_FILE.MaxFileSize=10240KB log4j.appender.ROLLING_FILE.MaxBackupIndex=1 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

广告 广告

评论区