WAS上log4j日志不能输出(ibatis)sql语句解决办法

合集下载

ibatis打印sql语句

ibatis打印sql语句

ibatis打印sql语句ibatis是一个开源的持久层框架,它可以将Java对象和SQL语句映射起来,从而简化数据库操作。

在开发和调试过程中,有时我们需要查看ibatis执行的sql语句,以便检查是否有错误或者优化性能。

本文将介绍如何使用ibatis打印sql语句,以及一些常见的问题和解决方法。

一、配置日志要想让ibatis打印sql语句,首先需要配置日志。

ibatis支持多种日志框架,如log4j、slf4j、commons-logging等。

我们可以根据自己的项目需求选择合适的日志框架,并在classpath下添加相应的jar包和配置文件。

以log4j为例,我们需要在classpath下添加log4j.jar和log4j.properties文件。

log4j.properties文件的内容如下:# 设置日志输出级别为debuglog4j.rootLogger=debug, stdout# 设置日志输出目标为控制台log4j.appender.stdout=org.apache.log4j.ConsoleAppender# 设置日志输出格式yout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n然后,我们需要在ibatis的配置文件中指定使用log4j作为日志框架。

ibatis的配置文件一般是sqlMapConfig.xml,它位于classpath下的某个目录中,例如com/example/dao/sqlMapConfig.xml。

在这个文件中,我们需要添加如下的属性:<settings><!-- 设置日志实现类为log4j --><setting name="logImpl"value="LOG4J"/></settings>这样,我们就完成了ibatis打印sql语句的基本配置。

使用log4j2打印Log,log4j不能打印日志信息,log4j2不能打印日志信息,lo。。。

使用log4j2打印Log,log4j不能打印日志信息,log4j2不能打印日志信息,lo。。。

使⽤log4j2打印Log,log4j不能打印⽇志信息,log4j2不能打印⽇志信息,lo。

说来惭愧,今天就写了个"hello world",了解了⼀下log4j的⽇志。

本来是想在控制台打印个log信息,也是遇到坎坷重重,开始也没去了解log4j就来使⽤,log4j配置⽂件开始⽤的log4j.properties,结果控制台⼀直打印ERROR StatusLogger No log4j2 configuration file found.也就是Log4j2配置⽂件没找到的意思。

我就把log4j.properties⽂件名改成log4j2.properties,结果不报错了,但是就是不打印⽇志,直接就结束运⾏了(Process finished with exit code 0),现在想想好愚蠢啊。

后来经过百般折腾,发现log4j是log4j,log4j2是log4j2,不能混⽤啊,但它们都是出⾃同⼀个公司,log4j2顾名思义是第⼆代,是log4j的优化升级版。

log4j的配置⽂件是log4j.properties,是以.properties后缀名结尾的⽂件命名,⽽log4j2的配置⽂件⼀般是xml⽂件或json,以.xml或.json 后缀格式的命名,log4j更新到1.2.17版就停⽌了更新,发布了Log4j2; 我加⼊的jar包⼀直是log4j2的jar包,开始使⽤了log4j的配置⽂件(log4j.properties),所以⼀直打印不出来。

后来重新加⼊配置⽂件log4j2.xml后,就可以打印了。

maven的pom.xml⽂件中加⼊的依赖:加⼊log4j的实现和log4j核⼼包,如果版本号(version)在2.0以下,配置⽂件就是.properties了哦<!-- https:///artifact/org.apache.logging.log4j/log4j-slf4j-impl --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.6.2</version></dependency><!-- https:///artifact/org.apache.logging.log4j/log4j-core --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.6.2</version></dependency> 如果是springboot项⽬:需要排除⼀个logback的jar包,以免冲突: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><!--log4j-slf4j-impl与 logback-classic包不兼容,删除这个包 --><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></exclusion></exclusions></dependency> log4j2.xml⽂件:⽹上复制的⼀个,写的挺全,由于我只⽤到在控制台打印输出,所以我把没⽤到的都注释了。

打印ibatis的SQL日志-通过log4j配置

打印ibatis的SQL日志-通过log4j配置

打印ibatis的SQL⽇志-通过log4j配置第⼀种:log4j.xml⽂件的1. <appender name="IBatis" class="org.apache.log4j.ConsoleAppender">2. <layout class="org.apache.log4j.PatternLayout">3. <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />4. </layout>5. <filter class="org.apache.log4j.varia.LevelRangeFilter">6. <param name="LevelMin" value="DEBUG" />7. <param name="LevelMax" value="DEBUG" />8. </filter>9. </appender>10.11. <logger name="com.ibatis" additivity="true">12. <level value="DEBUG" />13. </logger>14. <logger name="java.sql.Connection" additivity="true">15. <level value="DEBUG" />16. </logger>17. <logger name="java.sql.Statement" additivity="true">18. <level value="DEBUG" />19. </logger>20. <logger name="java.sql.PreparedStatement" additivity="true">21. <level value="DEBUG" />22. <appender-ref ref="IBatis" />23. </logger>24. <logger name="java.sql.ResultSet" additivity="true">25. <level value="DEBUG" />26. <appender-ref ref="IBatis" />27. </logger>第⼆种:log4j.properties1. log4j.appender.stdout=org.apache.log4j.ConsoleAppender2. yout=org.apache.log4j.PatternLayout3. yout.ConversionPattern=%d %p [%c] - %m%n4.5.6. .ibatis=debug7. mon.jdbc.SimpleDataSource=debug8. mon.jdbc.ScriptRunner=debug9. .ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug10. log4j.logger.java.sql.Connection=debug11. log4j.logger.java.sql.Statement=debug12. log4j.logger.java.sql.PreparedStatement=debug,stdout。

一次Logback日志无法在Linux上输出的解决过程

一次Logback日志无法在Linux上输出的解决过程

⼀次Logback⽇志⽆法在Linux上输出的解决过程之前,在Linux上查看⽇志,⼀直是⽤:tail -f catalina.out 的⽅式,只能实时看,没有记录⽂件,很不⽅便于是决定把"⽼项⽬"(是spring MVC的项⽬,spring boot的绕道)的⽇志全部切换成logback的(⾄于为什么要选logback,有疑问的请⾃⾏百度),并以⽇志⽂件存留先说⼀下,⽼项⽬之前启动⼀直是有⼀个警告的:(A)SLF4J: Class path contains multiple SLF4J bindings. 就是有冲突⽇志⽂件,但是由于不影响项⽬启动,所以没有多管。

但是现在就是要管⼀管TA,由于⽼项⽬pom⽂件有点⼤,也有好多冗余,就不再说⼀些细节,提供⼀些解决问题的思考⽅向:最开始的警告是这样的:ERROR StatusLogger No Log4j context configuration provided. This is very unusual.SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/opt/min_meerkat_test/meerkat/apache-tomcat-7.0.79/webapps/meerkat-web/WEB-INF/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/min_meerkat_test/meerkat/apache-tomcat-7.0.79/webapps/meerkat-web/WEB-INF/lib/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/min_meerkat_test/meerkat/apache-tomcat-7.0.79/webapps/meerkat-web/WEB-INF/lib/slf4j-log4j12-1.6.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See /codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.第⼀步:直接在pom.xm⽤ <exclusion> 标签找到有引⼊其他⽇志依赖的,给“剔除”掉这⾥多说⼀下,有些⼀层依赖的,像下⾯zookeeper依赖这样的,剔除⽐较简单剔除如下: <dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.12</version><!--排除这个slf4j-log4j12--><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency>但是有的是嵌套多层的,就⽐较⿇烦了,⽐如下⾯这种:剔除就⿇烦⼀点,如下:<dependency><groupId>org.apache.hive</groupId><artifactId>hive-common</artifactId><version>${hive.version}</version><exclusions><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-1.2-api</artifactId></exclusion><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId></exclusion><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>${hive.version}</version><exclusions><exclusion><groupId>org.apache.hive</groupId><artifactId>hive-common</artifactId></exclusion></exclusions></dependency>PS:就是先把整个 hive-common 给剔除掉,但是这样对⼀些功能是有影响的,所以再单独引⼊ hive-common依赖,再在⾥⾯把不想要的⽇志包剔除掉其他的类似处理思路,如果依赖⽐较少,IDEA有⼀种很快发现重复依赖的⽅式:左侧maven最上⽅的⼀排图标⾥⾯,有⼀个Show Dependencies,点开看,⼗分⽅便!第⼆步:通过第⼀步的“剔除”,正常是应该把其他⾮logback的都⼲掉了的,但是有⼀些,或者项⽬乱七⼋糟的的依赖多了,你是发现不了的,那么还有⼀种⽅式,强⾏把其他⽇志的输出“适配”到SLF4j上,⽬前发现有这⼏种:<!-- log4j 输出到 slf4j --><dependency><groupId>org.slf4j</groupId><artifactId>log4j-over-slf4j</artifactId><version>${slf4j.version}</version></dependency><!-- common-logging 输出到 slf4j --><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.version}</version></dependency><!-- java.util.logging 输出到 slf4j --><dependency><groupId>org.slf4j</groupId><artifactId>jul-to-slf4j</artifactId><version>${slf4j.version}</version></dependency>就是把其他⽇志的输出强⾏⽤统⼀的SLF4j来打印,但是这样做会引发另⼀个警告:SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError.翻译⼀下就是:在类路径上检测到log4j-over-slf4j.jar和slf4j-log4j12.jar,防⽌堆栈溢出错误这⾥补充⼀点,笔者⽤第⼀步的⽅式剔除能找到的其他⽇志后,启动时发现还是警告:SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:/mavenStore/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/D:/mavenStore/repository/org/slf4j/slf4j-log4j12/1.6.6/slf4j-log4j12-1.6.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]//SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]所以额外⼜引⼊了 log4j-over-slf4j 这个依赖,引⼊后,原来项⽬⽤ log4j 引⼊写⽇志的地⽅都会报错,需要⼀⼀修改过来!(笔者就是当发现项⽬开始报错时,就发现转机来了,后⾯处理的思路就清晰了。

Mybatis的Log4j日志输出问题-以及有关日志的所有问题

Mybatis的Log4j日志输出问题-以及有关日志的所有问题

Mybatis的Log4j⽇志输出问题-以及有关⽇志的所有问题使⽤Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)⽇志。

有些时候就不能。

⽆法输出⽇志的时候,⽆论怎么配置log4j,不管是properties的还是xml的,都不起作⽤。

有些时候,我们没做什么配置就能输出⽇志....这是⼀个让⽆数⼈烦躁的问题。

其实解决问题很容易(我过了这么久才解决,以前都⽤拦截器输出)。

这是⼀个普⼤喜奔的⽇⼦,让我们⼀起来看看如何解决mybatis的⽇志问题。

为什么说这个问题很容易解决呢?因为mybatis的⽂档写的很清楚。

为什么我们都没找到解决办法呢?因为即使看过⽂档的⼈,也未必去看Logging这⼀节。

但是这⼀节正是解决问题的关键。

已经等不及的⼩伙伴们可以直接去这⾥看⽂档:提醒最常⽤的⽅法不再这个链接中,但是这个⽂档提供了对log4j的详细配置。

本⽂下⾯的内容⼤部分是这个⽂档的Copy。

Mybatis内置的⽇志⼯⼚提供⽇志功能,具体的⽇志实现有以下⼏种⽅式:SLF4JApache Commons LoggingLog4j 2Log4jJDK logging具体选择哪个⽇志实现由MyBatis的内置⽇志⼯⼚确定。

它会使⽤最先找到的(按上⽂列举的顺序查找)。

如果⼀个都未找到,⽇志功能就会被禁⽤。

不少应⽤服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere,所以MyBatis会把它作为具体的⽇志实现。

记住这点⾮常重要。

这意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Logging的私有实现,你的Log4J配置将被忽略。

这种做法不免让⼈悲摧,MyBatis怎么能忽略你的配置呢?事实上,因Commons Logging已经存在,按优先级Log4J⾃然就被忽略了!不过,如果你的应⽤部署在⼀个包含Commons Logging的环境,⽽你⼜想⽤其他的⽇志框架,你可以根据需要调⽤如下的某⼀⽅法:eSlf4jLogging();eLog4JLogging();eJdkLogging();eCommonsLogging();eStdOutLogging();如果的确需要调⽤以上的某个⽅法,请在调⽤所有其他MyBatis⽅法前调⽤它。

log4j打印mybatis执行sql,将占位符换成真实的参数输出

log4j打印mybatis执行sql,将占位符换成真实的参数输出

log4j打印mybatis执⾏sql,将占位符换成真实的参数输出背景:在我⽇常码代码的时候,由于对mybatis的动态sql,⽐较依赖,并且有时候需求复杂,导致sql较长,⽽且参数众多,当出现问题是,需要将sql,放到navicat⾥⾯去执⾏查看结果,但是对于复杂的sql来说,众多的参数,⼀个⼀个替换。

当真很⿇烦,于是萌⽣出可不可以将sql直接输出,不在出线sql和参数分开的情况,可以减少很多⿇烦,在我找度娘,⼀次⼜⼀次的尝试,我还是没有发现,在log4j的配置⽂件⾥⾯。

有这个功能,所以最后萌⽣出改写源码的想法,之后我也会尝试继续寻找,有没有官⽅的API提供,本⽂讲述我⾃⼰改写源代码实现的⽅案⼀、针对DEMO搭建SSM项⽬(略)⼆、采⽤的log4j的版本(这⾥由于log的众多实现,有可能出线log4j的冲突,⽽且我也没有滤的特别清楚,所以贴出⾃⼰使⽤的log4j的版本,采⽤maven提供)[html]1. <span style="white-space:pre;"> </span><!-- log4j ⽇志 -->2. <dependency>3. <groupId>log4j</groupId>4. <artifactId>log4j</artifactId>5. <version>${log4j-version}</version>6. </dependency>三、⾸先实现输出mybatis输出sql1、引⼊jar包(同上)2、配置mybatis输出sql的配置项[html]1. <span style="white-space:pre;"> </span><settings>2. <setting name="logImpl" value="LOG4J" />3. </settings>3、添加logj4j.properties⽂件[plain]1. #logFile2. log4j.rootLogger=DEBUG,Console3. #Console4. log4j.appender.Console=org.apache.log4j.ConsoleAppender5. log4j.appender.console.Threshold=INFO6. log4j.appender.console.ImmediateFlush=true7. log4j.appender.Console.Target=System.out8. yout=org.apache.log4j.PatternLayout9. yout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss}[%t] %l: %x%m%n10.11. # ⽇志⽂件(logFile)12. log4j.appender.logFile=org.apache.log4j.FileAppender13. log4j.appender.logFile.Threshold=DEBUG14. # ⽴即输出15. #log4j.appender.logFile.ImmediateFlush=true16. #log4j.appender.logFile.Append=true17. #log4j.appender.logFile.File=D:/logs/log.log4j18. #yout=org.apache.log4j.PatternLayout19. #yout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss}[%t] %l: %x%m%n20.21. .apache=ERROR22. .mybatis=ERROR23. .springframework=ERROR24. #这个需要25. log4j.logger.log4jdbc.debug=ERROR26.27. log4j.logger.jdbc.audit=ERROR28. log4j.logger.jdbc.resultset=ERROR29. #这个打印SQL语句⾮常重要30. log4j.logger.jdbc.sqlonly=DEBUG31. log4j.logger.jdbc.sqltiming=ERROR32. log4j.logger.jdbc.connection=FATAL4、测试结果[plain]1. ==> Preparing: select u.id as id , as name , u.pwd as pwd from user u where u.pwd = ? and u.id = ?;2. ==> Parameters: 123(String), 1(String)3. <== Total: 0显然:参数和sql是分离的,现在要实现将参数嵌套进sql中,实现上⾯的想法通过源码的分析最后我决定动(org.apache.ibatis.logging.jdbc.BaseJdbcLogger)这个类,它的作⽤是输出最后的sql ⽅法步骤:1、找到这个类的全路径,找到源码2、在src下创建⼀个同路径下的BaseJdbcLogger类,并且将源码原封不动的贴近刚创建的类,3、找到需要修改的⽅法,我贴⼀下我准备修改的⽅法[java]1. protected void debug(String text, boolean input) {2. if (statementLog.isDebugEnabled()) {3. statementLog.debug(prefix(input) + text);4. }5. }⽬前的这个是BaseJdbcLogger.debug的源码,其中(text:是需要打印的⽂本,input:表⽰前⾯的“==>”的⽅向)经过我的修改:[java]1. /* 打印的sql */2. private static String sql = "";3. protected void debug(String text, boolean input) {4. text = text.trim();5. if (statementLog.isDebugEnabled()) {6. if(text.startsWith("Preparing:")){7. sql = text.substring(text.indexOf(":")+1);8. return ;9. }10. if(text.startsWith("Parameters:")){11. String temp = text.substring(text.indexOf(":")+1);12. String[] split = temp.split(",");13. if(split != null & split.length > 0){14. for (String string2 : split) {15. String s = string2.trim();16. sql = sql.replaceFirst("\\?", s.substring(0, s.indexOf("(")));17. }18. }19. text = "Preparing:"+ sql ;20. sql = "";21. }22. statementLog.debug(prefix(input) + text);23. }24. }最终输出结果:[plain]1. ==> Preparing: select u.id as id , as name , u.pwd as pwd from user u where u.pwd = 123 and u.id = 1;2. <== Total: 0到到最终⽬的(虽然不是最好的⽅法,mybatis应该分装相应的配置,但是我没有发现,如果有码友发现了,请告知我,谢谢)。

IDEA中log4j无法输出到本地properties配置无效问题

IDEA中log4j无法输出到本地properties配置无效问题

IDEA中log4j⽆法输出到本地properties配置⽆效问题IDEA中log4j ⽆法输出到本地,properties配置⽆效问题。

log4j添加以后⽆法输出⽇志信息,经检查(按以下顺序):1.jar包导⼊正常2.log4j.properties配置⽂件正常可以输出,但是properties⽂件⽆效。

4.删除properties⽂件之后log依然可以输出,可判断properties⽂件失效,或被覆盖。

5.经过验证为框架本⾝默认的import java.util.logging.Logger优先级⾼于import org.apache.log4j.Logger;,在实例化Logger.getLogger();过程中,默认调⽤了框架本⾝的Logger类导致log4j失效。

解决⽅法:注意引⼊org.apache.log4j.Logger即可; 为⽅便使⽤可以在任意地⽅新建类并导⼊log4j.Logger,初始化logger对象。

import org.apache.log4j.Logger;public class TestLogger {static public Logger logger=Logger.getLogger(TestLogger.class);}在使⽤的时候,TestLogger.logger.debug("");("");TestLogger.logger.error("");.....。

当然,也可以结合logger与log4j实现⾃定义⽇志⼯⼚,⽤来容错,这⾥就不作延申。

总结以上所述是⼩编给⼤家介绍的IDEA中log4j ⽆法输出到本地 properties配置⽆效问题,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

在此也⾮常感谢⼤家对⽹站的⽀持!如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!。

mybatis中的setting配置详解

mybatis中的setting配置详解

mybatis中的setting配置详解在mybaits中,setting的的配置参数如下(如果不在配置⽂件中配置将使⽤默认值):设置参数描述有效值默认值cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关true | false truelazyLoadingEnabled 延迟加载的全局开关。

当开启时,所有关联对象都会延迟加载。

特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态true | false falseaggressiveLazyLoading 当启⽤时,对任意延迟属性的调⽤会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载。

true | false truemultipleResultSetsEnabled 是否允许单⼀语句返回多结果集(需要兼容驱动)。

true | false trueuseColumnLabel 使⽤列标签代替列名。

不同的驱动在这⽅⾯会有不同的表现,具体可参考相关驱动⽂档或通过测试这两种不同的模式来观察所⽤驱动的结果。

true | false trueuseGeneratedKeys 允许 JDBC ⽀持⾃动⽣成主键,需要驱动兼容。

如果设置为 true 则这个设置强制使⽤⾃动⽣成主键,尽管⼀些驱动不能兼容但仍可正常⼯作(⽐如Derby)。

true | false FalseautoMappingBehavior 指定 MyBatis 应如何⾃动映射列到字段或属性。

NONE表⽰取消⾃动映射;PARTIAL 只会⾃动映射没有定义嵌套结果集映射的结果集。

FULL 会⾃动映射任意复杂的结果集(⽆论是否嵌套)。

NONE, PARTIAL,FULLPARTIALdefaultExecutorType 配置默认的执⾏器。

SIMPLE 就是普通的执⾏器;REUSE 执⾏器会重⽤预处理语句(preparedstatements);BATCH 执⾏器将重⽤语句并执⾏批量更新。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
log4j.logger.java.sql.Connection =Debug,UrcbDailyRollingFile
log4j.logger.java.sql.Statement =Debug,UrcbDailyRollingFile
#log4j.logger.java.sql.PreparedStatement = Debug ,UrcbDailyRollingFile
WAS上log4j日志不能输出(ibatis)sql语句解决办法
1、问题描述:
村镇银行新信贷系统(东华)CMSII部署在本机TOMCAT服务器下能正常的输出ibatis的sql语句,但部署到测试、生成环境的WAS服务器上就不能输出sql语句。
2、问题描述:
Was有自己默认的LogFactory实现类,而要让was下的应用启用log4j框架下的LogFactory实现类,则需要强制定义。(不同was版本,可能会有略微的差异)
yout.ConversionPattern =%d{yyyy-MM-ddHH:mm:ss}:%m:%c%n###luyp###
.ibatis =Debug,UrcbDailyRollingFile
mon.jdbc.SimpleDataSource =Debug,UrcbDailyRollingFile
log4j.appender.RollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.RollingFile.File =D\:/apache-tomcat-6.0.32/logs/CMSII/CMSII.log
log4j.appender.RollingFile.MaxFileSize =1024KB
#DailyRollingFile(每天产生一个日志文件)
log4j.appender.DailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRollingFile.File=logs/CMSII.log
log4j.logger.java.sql.ResultSet =Debug,UrcbDailyRollingFile
#Forbidden struts2 ClassFinder message
.opensymphony.xwork2.util.finder.ClassFinder=OFF
mons.logging.Log=mons.logging.impl.Log4JLogger
登录was管理控制台
一:建共享库
新建共享库lib,如下图
输入红框中的内容
二:为不同的SERVER指定共享库
点击以下红框的标出的部分
点击新建
选择类装载顺序为图所示,之后点击共享库引用
Cd loglib
拷贝以下3个文件到此目录
1587367 -rw-rw-r-- 1 mgrweb mgrweb 60686 02-25 14:52commons-logging-1.1.1.jar
1587368 -rw-rw-r-- 1 mgrweb mgrweb 174 02-25 14:52commons-logging.properties
yout=org.apache.log4j.PatternLayout
yout.ConversionPattern=%d[%t]%-5p[%c]-%m%n
#RollingFile(产生固定大小的日志文件)
1587369 -rw-rw-r-- 1 mgrweb mgrweb 352668 02-25 14:52log4j-1.2.8.jar
其中commons-logging.properties文件的内容为
---------------
priority=1
mons.logging.LogFactory=mons.logging.impl.LogFactoryImpl
log4j.appender.RollingFile.MaxBackupIndex =300
yout=org.apache.log4j.PatternLayout
yout.ConversionPattern =%d{yyyy-MM-ddHH:mm:ss}:%m:%c%n###luyp###
文件内容为
mons.logging.LogFactory=
mons.logging.impl.LogFactoryImpl
4.2办法二:单个server级别的修改(以信贷系统为例)
Cd/home/mgrweb/was/dhcms/
Mkdir loglib
mon.jdbc.ScriptRunner =Debug,UrcbDailyRollingFile
.ibatis.sqlmap.engine.impl.SqlMapClientDelegate =Debug,UrcbDailyRollingFile
点击添加,选择之前建的共享库“loglib”,然后点击确定。
此次,was设置完成。
5、Log4j.properties文件配置:
# Output pattern : date [thread] priority category - message
log4j.rootLogger=info,Console,UrcbDailyRollingFile
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
yout=org.apache.log4j.PatternLayout
yout.ConversionPattern=%d[%t]%-5p[%c]-%m%n
#UrcbDailyRollingFile(联合银行重写的日志输出方式)
log4j.appender.UrcbDailyRollingFile=com.urcb.tools.RollingDateFileAppender
log4j.appender.UrcbDailyRollingFile.File =D\:/apache-tomcat-6.0.32/logs/CMSII/CMSII.log
3、WAS版本信息:
集成解决方案控制台,7.0.0.23
构建号:cf231218:
4.1办法一:整个was级别的修改
在was的安装目录下/home/mgrweb/pro/app/properties/
新建一个名为commons-logging.porperties的文件。
log4j.appender.UrcbDailyRollingFile.MaxFileSize =1024KB
log4j.appender.UrcbDailyRollingFile.MaxBackupIndex =300
yout=org.apache.log4j.PatternLayout
相关文档
最新文档