日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

p6spy简介_p6教程

發布時間:2023/12/15 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 p6spy简介_p6教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在公司項目中運用了這項技術,一開始不清楚這是干啥用的,在網上查找資料有所一定的了解,但是應該不夠全面,希望可以評論指出。

p6spy是數據庫動態監控的一種框架,它可以使得數據庫數據無縫攔截和操作,而不必對現有應用程序的代碼作任何修改。P6Spy分發包包括P6Log,它是一個可記錄任何Java應用程序的所有JDBC事務的應用程序。其配置完成使用時,可以進行數據訪問性能的監測。下面我們來看一下怎么在項目中使用P6Spy。

首先需要在項目中引入p6spy的依賴。

<dependency>
           <groupId>p6spy</groupId>
           <artifactId>p6spy</artifactId>
           <version>2.3.1</version>
</dependency>

接下來我們需要在項目的classpath目錄下增加spy.properties文件。具體配置內容如下:

module.log=com.p6spy.engine.logging.P6LogFactory
driverlist=com.mysql.jdbc.Driver
deregisterdrivers=true
outagedetection=false
filter=false
autoflush = true
excludecategories=info,debug,result,batch
append=true
appender=com.p6spy.engine.spy.appender.Slf4JLogger
log4j.logger.p6spy=INFO,STDOUT,F
#配置p6spy的日志不重復打印
log4j.additivity.p6spy=false
logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat

接著我們需要做的是替換原來的數據庫驅動。我的數據庫用的是MySQL所以我這里做的修改是這樣的(其他的數據庫照樣畫葫蘆)。 原來的數據庫驅動:

<property name="driverClassName" value="com.mysql.jdbc.Driver"/>

修改之后的驅動:

<property name="driverClassName" value="com.p6spy.engine.spy.P6SpyDriver"/>

原來的URL:

<property name="url" value="jdbc:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=UTF-8"></property>

修改之后的URL:

<property name="url"  value="jdbc:p6spy:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=UTF-8"></property>

log4j.properties的配置如下:

#Console Log
log4j.rootLogger=info, console, file
 
# Write to Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=INFO
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F:%L): %m%n
 
#Write to File
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=D:/log/provider.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F:%L): %m%n

spy.properties的相關配置說明:

#MODULE p6spy提供了兩種模塊進行日志記錄:log和outage,兩者有不同的功能,配置參數也有專屬,但是它們也共享一些配置參數,如哪些表被記錄,日志文件名稱和地址,是否顯示sql執行軌跡等。 
#log用來攔截和記錄任何使用jdbc的應用的數據庫聲明日志,默認為開啟。  
#outage主要是用來最低化log所帶來的性能問題,只記錄超過一定時間的執行語句,默認為關閉。   
module.log=com.p6spy.engine.logging.P6LogFactory    
#module.outage=com.p6spy.engine.outage.P6OutageFactory  
#實際的數據庫驅動,真正的數據庫驅動  
realdriver=com.mysql.jdbc.Driver  
#實際的數據庫驅動備份,當前面的數據庫驅動不對時,順序查找下一驅動,直到找到合適為止,默認為空。   
realdriver2=   
realdriver3=  
#無效化已注冊的驅動,如果在其他地方已經定義好了真正的數據庫驅動,那么p6spy driver就不會生效,也就不能起到作用,所以需#要把此選項置為true。    
deregisterdrivers=true  
#log模塊專屬的參數,當log模塊開啟時,如果執行語句超出這個時間(單位為毫秒),才能被記錄在文件中,可以重新被載入,默認為0。    
executionthreshold=   
#outage專屬的參數,當outage模塊開啟時,outagedetection為true時,會根據outagedetectioninterval(單位為秒)的大小, 間隔的去捕獲執行語句,一般用來捕獲長時間執行的語句。。    
outagedetection=false 
outagedetectioninterval=  
#以下參數是公共的屬性,log和outage都可以公用的參數過濾器開關,是否根據參數過濾一些記錄內容  
filter=false  
#當過濾器開啟時,需要記錄的表,默認為都記錄    
include=  
#當過濾器開啟時,不需要記錄的表,默認為都記錄    
exclude=  
#當過濾器開啟時,根據sql表達式過濾    
sqlexpression =  
#是否自動刷新    
autoflush   = true  
#輸出的日志文件的日期格式,也就是用Java的SimpleDateFormat程序。    
dateformat=  
#定義包含的日志級別,當日志級別屬于此類型時,才能被記錄,屬性值有error, info, batch, debug, statement, commit, rollback 和result   
includecategories=  
#定義不包含的日志級別,當日志級別屬于此類型時,不會被記錄    
excludecategories=  
#使用正則表達式來過濾 Log,匹配時才會被記錄,例如: #stringmatcher=com.p6spy.engine.common.GnuRegexMatcher #stringmatcher=com.p6spy.engine.common.JakartaRegexMatcher    
stringmatcher=  
#是否對每一SQL的執行語句進行打印堆棧跟蹤信息,通常在進行長時間執行SQL的情況下打開進行監控。
stacktrace=false  
#當上一軌跡開關打開時,可以指定具體的類名來進行過濾。    
stacktraceclass =   
#監測屬性配置文件是否進行重新加載,一般應用服務器在啟動時進行加載一次就夠了。    
reloadproperties=false  
#當是否重新加載開關打開時,定義重新加載時間周期。    
reloadpropertiesinterval = 60   
#是否加上前綴,設置為 true,會加上 p6spy: 作為前綴    
useprefix=false  
#指定 Log 的 appender,與 Log4J 有點同義,取值:com.p6spy.engine.logging.appender.Log4jLogger com.p6spy.engine.logging.appender.StdoutLogger com.p6spy.engine.logging.appender.FileLogger   
appender=com.p6spy.engine.logging.appender.FileLogger  
#指定記錄的日志文件名稱和地址,根目錄在應用服務器的發布端.如tomcat在%TOMCAT_HOME%/bin目錄下。    
logfile = log/spy11.log  
#文件續載標識,在log的appender類型為FileLogger時,才生效,如果為true,則在生成的日志文件后面繼續進行記錄,否則刪除之前的內容。    
append=true  
#類似與log4j的記錄器的布局:
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender 
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout 
log4j.appender.STDOUT.layout.ConversionPattern=p6spy - #%m%n

在ibm developerWorks社區中有相關介紹:https://www.ibm.com/developerworks/cn/java/j-lo-p6spy/

轉載于:https://www.cnblogs.com/eer123/p/9467848.html

總結

以上是生活随笔為你收集整理的p6spy简介_p6教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。