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