log4jdbc oracle,通过weblogic配置log4jdbc数据源,在项目中使用该数据源,输出sql
通過(guò)weblogic配置log4jdbc數(shù)據(jù)源,在項(xiàng)目中使用該數(shù)據(jù)源,輸出sql
通過(guò)weblogic配置log4jdbc數(shù)據(jù)源,在項(xiàng)目中使用該數(shù)據(jù)源,輸出sql
說(shuō)一下配置:
服務(wù)器weblogic
項(xiàng)目使用的是spring管理Bean,數(shù)據(jù)源配置也是基于Spring的dbcp數(shù)據(jù)源,并且用log4jdbc進(jìn)行sql日志打印,采用logback+slf4j日志打印。log4jdbc能夠很好打印sql,并且參數(shù)也帶上了,這在項(xiàng)目開發(fā)與后期系統(tǒng)出現(xiàn)的問(wèn)題查找原因都有很大的幫助。
數(shù)據(jù)庫(kù)配置如下:
jdbc.driverClassName=net.sf.log4jdbc.DriverSpy
jdbc.url=jdbc:oracle:thin:@ip:port/dev
jdbc.username=user
jdbc.password=pwd
spring配置如下:
在項(xiàng)目后期,客戶要求不能使用項(xiàng)目配置的數(shù)據(jù)源,要使用weblogic的數(shù)據(jù)源。客戶為大,就這么改了,改了后,log4jdbc的sql再也打印不出來(lái)了。
這是weblogic數(shù)據(jù)源的配置:
之前項(xiàng)目中有sql打印,log4jdbc也能打印出sql執(zhí)行的參數(shù),這樣就能大概知道項(xiàng)目執(zhí)行情況。沒(méi)有了sql后,如果出了問(wèn)題,不好定位問(wèn)題,因此為了打印出sql進(jìn)行了測(cè)試。
spring配置改為如下:
lmsDatasource
false
t3://ip:weblogicport
weblogic.jndi.WLInitialContextFactory
weblogic數(shù)據(jù)源改為如下配置:
加載該驅(qū)動(dòng),需要用到如下幾個(gè)jar包:
log4jdbc3-1.2beta2.jar
logback-classic-1.1.1.jar
logback-core-1.1.1.jar
slf4j-api-1.6.4.jar
并且weblogic啟動(dòng)時(shí)要加載這幾個(gè)jar包。
在有篇文章中(http://blog..net/yjq8116/article/details/4498622)看到說(shuō)直接將jar放到{domain_home}/lib中,會(huì)自動(dòng)加載第三方j(luò)ar包。但是我這樣做了并沒(méi)有生效。將jar包放在{wls_home}/server/lib下也沒(méi)有生效,放在jdk目錄加載第三方j(luò)ar包的路徑:{java_home}/jre/lib/ext,這個(gè)可以加載到了,但是這樣會(huì)對(duì)本地的所有java程序都生效,會(huì)影響到其他項(xiàng)目的,因此不應(yīng)該放在該目錄下。
還要繼續(xù)想辦法,為什么明明weblogic自己也說(shuō)了可以自動(dòng)加載{domain_home}/lib下的jar,卻沒(méi)有加載了,百思不得其解。
后來(lái)在weblogic的啟動(dòng)日志中看到如下片段:
這個(gè)是weblogic加載第三方j(luò)ar包的path配置,但是并沒(méi)有發(fā)現(xiàn)該路徑。在{domain_home}/bin/setDomainEnv.sh中看到了
這個(gè)weblogic.ext.dirs正是weblogic的console中加載的classPath。因此,想到可以直接手動(dòng)添加此路徑,這樣就可以讓weblogic在啟動(dòng)時(shí)加載第三方j(luò)ar包了。
這是修改后的,變量${DOMAIN_HOME}的該文件之前,weblogic已有的定義。
修改后,啟動(dòng)weblogic,在{domain_home}執(zhí)行命令:nohup ./startWebLogic.sh >./logs/weblogic"`date +%Y%m%d%H%M`".log 2>&1 &
啟動(dòng),發(fā)現(xiàn)console打印出了很多日志,都是DEBUG級(jí)別的(關(guān)于LOG的級(jí)別,項(xiàng)目中用到的是logback,大家可以查找相關(guān)資料),這是最低的級(jí)別,所有的日志都會(huì)輸出,顯然這樣的輸出對(duì)我們來(lái)說(shuō)并沒(méi)有多大的意義,而且還影響系統(tǒng)性能。
但是,日志的打印,是根據(jù)自定義的格式進(jìn)行打印的,為什么weblogic會(huì)打印這樣的配置,而且還是debug級(jí)別的?后來(lái)在網(wǎng)上查到關(guān)于weblogic的日志配置問(wèn)題,查到了這篇文章:http://bbs.middleware123.com/forum.php?mod=viewthread&tid=4532,上面說(shuō)可以配置命令
set LOG4J_CONFIG_FILE=/root/bea/user_projects/domains/MedRecDomain/log4jConfig.xml
來(lái)配置log4j的文件(logback跟log4j都是日志系統(tǒng),具體區(qū)別可以查找相關(guān)資料)。還真在setDomainEnv.sh文件找找到了這個(gè)配置:
我想對(duì)于程序員,雖然不了解shell,但是看到這個(gè)也大概知道這個(gè)意思吧,如果有變量:LOG4J_CONFIG_FILE,就加到JAVA_PROPERTIES中,我也不知道這個(gè)JAVA_PROPERTIES是干嘛的,但是改一下,或許有效果。突然覺得對(duì)于這個(gè)weblogic,真的很多都只能去動(dòng)手試。增加了如下配置:
下面是我logback.xml的主要配置
logs/weblogiclog.txt
logs/weblogiclog-%d{yyyy-MM-dd}.%i.log
10
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
500MB
%d{yy/MM/dd HH:mm:ss} %5level [%C{1}.%M\(%L\)] %m%n
%d{yy/MM/dd HH:mm:ss} %5level %caller{1} - %msg%n
下面是最終weblogic的console截圖,打印日志的記錄確實(shí)同我的配置的logback.xml的一致,也能打印sql參數(shù)了,并且之前在{domain_home}/logs/目錄沒(méi)有出現(xiàn)logs/weblogiclog.txt的滾動(dòng)日志,現(xiàn)在也有了。弄了好久,總算弄出來(lái)了:
其實(shí)在項(xiàng)目中也有l(wèi)ogback的配置,配置的logger appender是:
logs/log.txt
logs/log-%d{yyyy-MM-dd}.%i.log
10
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
500MB
%d{yy/MM/dd HH:mm:ss} %5level [%C{1}.%M\(%L\)] %m%n
后面又測(cè)試了一下,發(fā)現(xiàn),weblogic的logback配置只能放在該domain下。并且如果直接放在domain目錄下,也是可以不需要LOG4J_CONFIG_FILE配置。又試了幾次放在其他目錄的,發(fā)現(xiàn)起不到效果,不知道是不是只能放在domain目錄下。
但是并沒(méi)有生成項(xiàng)目中使用的配置,沒(méi)有生成log.txt文件。這個(gè)之前是可以生成的,在改了這樣的數(shù)據(jù)源之后,就不出來(lái)了,不知道是不是由于weblogic本身已經(jīng)支持對(duì)logback的支持了,因此就將項(xiàng)目中的logback所配置的進(jìn)行了屏蔽呢?
2019-11-19 22:16
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的log4jdbc oracle,通过weblogic配置log4jdbc数据源,在项目中使用该数据源,输出sql的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oracle sql删除重复,【转帖】S
- 下一篇: 0098 高级程序设计 c语言 在线作业