-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(dbrecovery): p6spy configuration
- Loading branch information
Showing
8 changed files
with
317 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
.../test/java/com/gmoon/dbrecovery/global/recovery/datasource/LoggingEventListenerProxy.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.gmoon.dbrecovery.global.recovery.datasource; | ||
|
||
import com.p6spy.engine.common.Loggable; | ||
import com.p6spy.engine.logging.Category; | ||
import com.p6spy.engine.logging.LoggingEventListener; | ||
import lombok.extern.slf4j.Slf4j; | ||
|
||
import java.sql.SQLException; | ||
|
||
/** | ||
* <code>src/main/resources/META-INF/services/com.p6spy.engine.logging.LoggingEventListener</code> | ||
* | ||
* @see com.p6spy.engine.logging.P6LogFactory | ||
* @see com.p6spy.engine.logging.LoggingEventListener | ||
*/ | ||
@Slf4j | ||
public class LoggingEventListenerProxy extends LoggingEventListener { | ||
|
||
@Override | ||
protected void logElapsed(Loggable loggable, long timeElapsedNanos, Category category, SQLException e) { | ||
// todo detected dml sql statement | ||
super.logElapsed(loggable, timeElapsedNanos, category, e); | ||
} | ||
} |
1 change: 1 addition & 0 deletions
1
...covery/src/test/resources/META-INF/services/com.p6spy.engine.logging.LoggingEventListener
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
com.gmoon.dbrecovery.global.recovery.datasource.LoggingEventListenerProxy |
253 changes: 253 additions & 0 deletions
253
testing/dbrecovery/src/test/resources/spy-back.properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,253 @@ | ||
################################################################# | ||
# P6Spy Options File # | ||
# See documentation for detailed instructions # | ||
# http://p6spy.github.io/p6spy/2.0/configandusage.html # | ||
################################################################# | ||
|
||
################################################################# | ||
# MODULES # | ||
# # | ||
# Module list adapts the modular functionality of P6Spy. # | ||
# Only modules listed are active. # | ||
# (default is com.p6spy.engine.logging.P6LogFactory and # | ||
# com.p6spy.engine.spy.P6SpyFactory) # | ||
# Please note that the core module (P6SpyFactory) can't be # | ||
# deactivated. # | ||
# Unlike the other properties, activation of the changes on # | ||
# this one requires reload. # | ||
################################################################# | ||
#modulelist=com.p6spy.engine.spy.P6SpyFactory,com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory | ||
|
||
################################################################ | ||
# CORE (P6SPY) PROPERTIES # | ||
################################################################ | ||
|
||
# A comma separated list of JDBC drivers to load and register. | ||
# (default is empty) | ||
# | ||
# Note: This is normally only needed when using P6Spy in an | ||
# application server environment with a JNDI data source or when | ||
# using a JDBC driver that does not implement the JDBC 4.0 API | ||
# (specifically automatic registration). | ||
#driverlist= | ||
|
||
# for flushing per statement | ||
# (default is false) | ||
#autoflush=false | ||
|
||
# sets the date format using Java's SimpleDateFormat routine. | ||
# In case property is not set, milliseconds since 1.1.1970 (unix time) is used (default is empty) | ||
#dateformat= | ||
|
||
# prints a stack trace for every statement logged | ||
#stacktrace=false | ||
# if stacktrace=true, specifies the stack trace to print | ||
#stacktraceclass= | ||
|
||
# determines if property file should be reloaded | ||
# Please note: reload means forgetting all the previously set | ||
# settings (even those set during runtime - via JMX) | ||
# and starting with the clean table | ||
# (default is false) | ||
#reloadproperties=false | ||
|
||
# determines how often should be reloaded in seconds | ||
# (default is 60) | ||
#reloadpropertiesinterval=60 | ||
|
||
# specifies the appender to use for logging | ||
# Please note: reload means forgetting all the previously set | ||
# settings (even those set during runtime - via JMX) | ||
# and starting with the clean table | ||
# (only the properties read from the configuration file) | ||
# (default is com.p6spy.engine.spy.appender.FileLogger) | ||
#appender=com.p6spy.engine.spy.appender.Slf4JLogger | ||
#appender=com.p6spy.engine.spy.appender.StdoutLogger | ||
#appender=com.p6spy.engine.spy.appender.FileLogger | ||
|
||
# name of logfile to use, note Windows users should make sure to use forward slashes in their pathname (e:/test/spy.log) | ||
# (used for com.p6spy.engine.spy.appender.FileLogger only) | ||
# (default is spy.log) | ||
#logfile=spy.log | ||
|
||
# append to the p6spy log file. if this is set to false the | ||
# log file is truncated every time. (file logger only) | ||
# (default is true) | ||
#append=true | ||
|
||
# class to use for formatting log messages (default is: com.p6spy.engine.spy.appender.SingleLineFormat) | ||
#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat | ||
|
||
# Custom log message format used ONLY IF logMessageFormat is set to com.p6spy.engine.spy.appender.CustomLineFormat | ||
# default is %(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine) | ||
# Available placeholders are: | ||
# %(connectionId) the id of the connection | ||
# %(currentTime) the current time expressing in milliseconds | ||
# %(executionTime) the time in milliseconds that the operation took to complete | ||
# %(category) the category of the operation | ||
# %(effectiveSql) the SQL statement as submitted to the driver | ||
# %(effectiveSqlSingleLine) the SQL statement as submitted to the driver, with all new lines removed | ||
# %(sql) the SQL statement with all bind variables replaced with actual values | ||
# %(sqlSingleLine) the SQL statement with all bind variables replaced with actual values, with all new lines removed | ||
#customLogMessageFormat=%(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine) | ||
|
||
# format that is used for logging of the java.util.Date implementations (has to be compatible with java.text.SimpleDateFormat) | ||
# (default is yyyy-MM-dd'T'HH:mm:ss.SSSZ) | ||
#databaseDialectDateFormat=yyyy-MM-dd'T'HH:mm:ss.SSSZ | ||
|
||
# format that is used for logging of the java.sql.Timestamp implementations (has to be compatible with java.text.SimpleDateFormat) | ||
# (default is yyyy-MM-dd'T'HH:mm:ss.SSSZ) | ||
#databaseDialectTimestampFormat=yyyy-MM-dd'T'HH:mm:ss.SSSZ | ||
|
||
# format that is used for logging booleans, possible values: boolean, numeric | ||
# (default is boolean) | ||
#databaseDialectBooleanFormat=boolean | ||
|
||
# Specifies the format for logging binary data. Not applicable if excludebinary is true. | ||
# (default is com.p6spy.engine.logging.format.HexEncodedBinaryFormat) | ||
#databaseDialectBinaryFormat=com.p6spy.engine.logging.format.PostgreSQLBinaryFormat | ||
#databaseDialectBinaryFormat=com.p6spy.engine.logging.format.MySQLBinaryFormat | ||
#databaseDialectBinaryFormat=com.p6spy.engine.logging.format.HexEncodedBinaryFormat | ||
|
||
# whether to expose options via JMX or not | ||
# (default is true) | ||
#jmx=true | ||
|
||
# if exposing options via jmx (see option: jmx), what should be the prefix used? | ||
# jmx naming pattern constructed is: com.p6spy(.<jmxPrefix>)?:name=<optionsClassName> | ||
# please note, if there is already such a name in use it would be unregistered first (the last registered wins) | ||
# (default is none) | ||
#jmxPrefix= | ||
|
||
# if set to true, the execution time will be measured in nanoseconds as opposed to milliseconds | ||
# (default is false) | ||
#useNanoTime=false | ||
|
||
################################################################# | ||
# DataSource replacement # | ||
# # | ||
# Replace the real DataSource class in your application server # | ||
# configuration with the name com.p6spy.engine.spy.P6DataSource # | ||
# (that provides also connection pooling and xa support). # | ||
# then add the JNDI name and class name of the real # | ||
# DataSource here # | ||
# # | ||
# Values set in this item cannot be reloaded using the # | ||
# reloadproperties variable. Once it is loaded, it remains # | ||
# in memory until the application is restarted. # | ||
# # | ||
################################################################# | ||
#realdatasource=/RealMySqlDS | ||
#realdatasourceclass=com.mysql.jdbc.jdbc2.optional.MysqlDataSource | ||
|
||
################################################################# | ||
# DataSource properties # | ||
# # | ||
# If you are using the DataSource support to intercept calls # | ||
# to a DataSource that requires properties for proper setup, # | ||
# define those properties here. Use name value pairs, separate # | ||
# the name and value with a semicolon, and separate the # | ||
# pairs with commas. # | ||
# # | ||
# The example shown here is for mysql # | ||
# # | ||
################################################################# | ||
#realdatasourceproperties=port;3306,serverName;myhost,databaseName;jbossdb,foo;bar | ||
|
||
################################################################# | ||
# JNDI DataSource lookup # | ||
# # | ||
# If you are using the DataSource support outside of an app # | ||
# server, you will probably need to define the JNDI Context # | ||
# environment. # | ||
# # | ||
# If the P6Spy code will be executing inside an app server then # | ||
# do not use these properties, and the DataSource lookup will # | ||
# use the naming context defined by the app server. # | ||
# # | ||
# The two standard elements of the naming environment are # | ||
# jndicontextfactory and jndicontextproviderurl. If you need # | ||
# additional elements, use the jndicontextcustom property. # | ||
# You can define multiple properties in jndicontextcustom, # | ||
# in name value pairs. Separate the name and value with a # | ||
# semicolon, and separate the pairs with commas. # | ||
# # | ||
# The example shown here is for a standalone program running on # | ||
# a machine that is also running JBoss, so the JNDI context # | ||
# is configured for JBoss (3.0.4). # | ||
# # | ||
# (by default all these are empty) # | ||
################################################################# | ||
#jndicontextfactory=org.jnp.interfaces.NamingContextFactory | ||
#jndicontextproviderurl=localhost:1099 | ||
#jndicontextcustom=java.naming.factory.url.pkgs;org.jboss.naming:org.jnp.interfaces | ||
|
||
#jndicontextfactory=com.ibm.websphere.naming.WsnInitialContextFactory | ||
#jndicontextproviderurl=iiop://localhost:900 | ||
|
||
################################################################ | ||
# P6 LOGGING SPECIFIC PROPERTIES # | ||
################################################################ | ||
|
||
# filter what is logged | ||
# please note this is a precondition for usage of: include/exclude/sqlexpression | ||
# (default is false) | ||
#filter=false | ||
|
||
# comma separated list of strings to include | ||
# please note that special characters escaping (used in java) has to be done for the provided regular expression | ||
# (default is empty) | ||
#include= | ||
# comma separated list of strings to exclude | ||
# (default is empty) | ||
#exclude= | ||
|
||
# sql expression to evaluate if using regex | ||
# please note that special characters escaping (used in java) has to be done for the provided regular expression | ||
# (default is empty) | ||
#sqlexpression= | ||
|
||
#list of categories to exclude: error, info, batch, debug, statement, | ||
#commit, rollback, result and resultset are valid values | ||
# (default is info,debug,result,resultset,batch) | ||
#excludecategories=info,debug,result,resultset,batch | ||
|
||
#whether the binary values (passed to DB or retrieved ones) should be logged with placeholder: [binary] or not. | ||
# (default is false) | ||
#excludebinary=false | ||
|
||
# Execution threshold applies to the standard logging of P6Spy. | ||
# While the standard logging logs out every statement | ||
# regardless of its execution time, this feature puts a time | ||
# condition on that logging. Only statements that have taken | ||
# longer than the time specified (in milliseconds) will be | ||
# logged. This way it is possible to see only statements that | ||
# have exceeded some high water mark. | ||
# This time is reloadable. | ||
# | ||
# executionThreshold=integer time (milliseconds) | ||
# (default is 0) | ||
#executionThreshold= | ||
|
||
################################################################ | ||
# P6 OUTAGE SPECIFIC PROPERTIES # | ||
################################################################ | ||
# Outage Detection | ||
# | ||
# This feature detects long-running statements that may be indicative of | ||
# a database outage problem. If this feature is turned on, it will log any | ||
# statement that surpasses the configurable time boundary during its execution. | ||
# When this feature is enabled, no other statements are logged except the long | ||
# running statements. The interval property is the boundary time set in seconds. | ||
# For example, if this is set to 2, then any statement requiring at least 2 | ||
# seconds will be logged. Note that the same statement will continue to be logged | ||
# for as long as it executes. So if the interval is set to 2, and the query takes | ||
# 11 seconds, it will be logged 5 times (at the 2, 4, 6, 8, 10 second intervals). | ||
# | ||
# outagedetection=true|false | ||
# outagedetectioninterval=integer time (seconds) | ||
# | ||
# (default is false) | ||
#outagedetection=false | ||
# (default is 60) | ||
#outagedetectioninterval=30 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
################################################################# | ||
# P6Spy Options File # | ||
# See documentation for detailed instructions # | ||
# https://p6spy.readthedocs.io/en/latest/configandusage.html # | ||
################################################################# | ||
|
||
# Custom log message format used ONLY IF logMessageFormat is set to com.p6spy.engine.spy.appender.CustomLineFormat | ||
# default is %(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine) | ||
# Available placeholders are: | ||
# %(connectionId) the id of the connection | ||
# %(currentTime) the current time expressing in milliseconds | ||
# %(executionTime) the time in milliseconds that the operation took to complete | ||
# %(category) the category of the operation | ||
# %(effectiveSql) the SQL statement as submitted to the driver | ||
# %(effectiveSqlSingleLine) the SQL statement as submitted to the driver, with all new lines removed | ||
# %(sql) the SQL statement with all bind variables replaced with actual values | ||
# %(sqlSingleLine) the SQL statement with all bind variables replaced with actual values, with all new lines removed | ||
customLogMessageFormat=[%(category)-%(connectionId)-%(executionTime)]\n%(sql) | ||
dateformat=yyyy-MM-dd HH:mm:ss:SS | ||
appender=com.p6spy.engine.spy.appender.Slf4JLogger | ||
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat | ||
|