Get the App
SLTechnology News&Howtos  ›  Database  › 

Use the log framework in Jfinal to output complete sql statement information (mysql+oracle)

Shulou Source: shulou.com Published: 2022-06-01 16:30:34 09月25日 Update

Use the log framework in Jfinal to output complete sql statement information (mysql+oracle)

1. Introduce Jar package.

/ / jar packages that must be introduced

Log4j-1.2.17.jar

Log4jdbc4-1.2.jar

Slf4j-api-1.7.5.jar

/ / choose one of the jar packages. If you have already introduced either of them in your project, you don't need to introduce the other one. Introducing the above two packages at the same time will cause stack overflow. For more information, please see this document:

Http://blog.csdn.net/kxcfzyk/article/details/38613861

Slf4j-log4j12-1.7.5.jar

Or

Log4j-over-slf4j-1.7.7.jar

2. Modify database configuration information

-mysql

JdbcUrl = jdbc:log4jdbc:mysql://127.0.0.1/mxtt?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull

User = root

Password = root123

# devMode = true

# log4jdbc

DriverClass=net.sf.log4jdbc.DriverSpy

-oracle--

JdbcUrl = jdbc:log4jdbc:oracle:thin:@127.0.0.1:1521:ORC

User = scott

Password = tiger

# devMode = true

# log4jdbc

DriverClass=net.sf.log4jdbc.DriverSpy

3. Modify jfinal core configuration class

-mysql--

Private static Prop p = PropKit.use ("config.properties"); / / load configuration file

Public static DruidPlugincreateDruidPlugin () {

DruidPlugin dp = new DruidPlugin (p.get ("jdbcUrl"), p.get ("user"), p.get ("password") .trim ()

Dp.setDriverClass (p.get ("driverClass"))

Dp.addFilter (new StatFilter ())

Dp.addFilter (new Slf4jLogFilter ())

WallFilter wall = new WallFilter ()

Wall.setDbType (JdbcUtils.MYSQL)

Dp.addFilter (wall)

Returndp

}

Public void configPlugin (Plugins me) {

/ / configure the C3p0 database connection pool plug-in

DruidPlugindruidPlugin = createDruidPlugin ()

Me.add (druidPlugin)

/ / configure the ActiveRecord plug-in

ActiveRecordPluginarp = new ActiveRecordPlugin (druidPlugin)

StringbaseSqlTemplatePath = PathKit.getWebRootPath () + "/ WEB-INF/sql"

Arp.setBaseSqlTemplatePath (baseSqlTemplatePath)

File [] files = new File (baseSqlTemplatePath) .listFiles

For (File f: files) {

If (f.isFile () & & f.getName () .endsWith (".SQL")) {

Arp.addSqlTemplate (f.getName ())

}

}

/ / if (p.getBoolean ("devMode", false)) {

/ / arp.setShowSql (true)

/ /}

/ / all mappings are automatically done in MappingKit

_ MappingKit.mapping (arp)

Me.add (arp)

}

-oracle--

Private static Prop p = PropKit.use ("config.properties"); / / load configuration file

Public static DruidPlugincreateDruidPlugin () {

DruidPlugin dp = new DruidPlugin (p.get ("jdbcUrl"), p.get ("user"), p.get ("password") .trim ()

Dp.setDriverClass (p.get ("driverClass"))

Dp.setValidationQuery ("select 1 from dual")

Dp.addFilter (new StatFilter ())

Dp.addFilter (new Slf4jLogFilter ())

WallFilter wall = new WallFilter ()

Wall.setDbType (JdbcUtils.ORACLE)

Dp.addFilter (wall)

Returndp

}

Public void configPlugin (Plugins me) {

/ / configure the Druid database connection pool plug-in

DruidPlugindruidPlugin = createDruidPlugin ()

Me.add (druidPlugin)

/ / configure the ActiveRecord plug-in

ActiveRecordPluginarp = new ActiveRecordPlugin (druidPlugin)

StringbaseSqlTemplatePath = PathKit.getWebRootPath () + "/ WEB-INF/sql"

Arp.setBaseSqlTemplatePath (baseSqlTemplatePath)

File [] files = new File (baseSqlTemplatePath) .listFiles

For (File f: files) {

If (f.isFile () & & f.getName () .endsWith (".SQL")) {

Arp.addSqlTemplate (f.getName ())

}

}

/ / if (p.getBoolean ("devMode", false)) {

/ / arp.setShowSql (true)

/ /}

/ / configure Oracle dialect

Arp.setDialect (new OracleDialect ())

/ * set the transaction run level. Oracle database only supports READCOMMITTED and SERIALIZABLE.

TRANSACTION_NONE= 0; / / JDBC driver does not support transactions

TRANSACTION_READ_UNCOMMITTED= 1; / / allows dirty, unrepeatable and phantom reading.

TRANSACTION_READ_COMMITTED= 2; / / prohibits dirty reading, but allows unrepeatable and phantom reading.

TRANSACTION_REPEATABLE_READ= 4; / / prohibit dirty reading and non-repeatable reading, and run phantom reading alone.

TRANSACTION_SERIALIZABLE = 8; / / dirty reading, non-repeatable reading and phantom reading are prohibited.

, /

Arp.setTransactionLevel (2)

/ / configure property name (field name) case-insensitive container factory is true field name all lowercase

Arp.setContainerFactory (new CaseInsensitiveContainerFactory (true))

Me.add (arp)

/ / all configurations other than the relevant tables of the permission system are automatically generated by _ JFinalGenerator in _ MappingKit

_ MappingKit.mapping (arp)

}

4. Modify log output configuration file (log4j.properties)

# log4j.rootLogger=WARN, stdout, file

Log4j.rootLogger=ERROR, stdout, file

Log4j.appender.stdout=org.apache.log4j.ConsoleAppender

Log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

Log4j.appender.stdout.layout.ConversionPattern=%n%-d {yyyy-MM-ddHH:mm:ss}% n [% p]-[Thread:% t]-[% C.% M ()]:% m% n

# Output to the File

Log4j.appender.file=org.apache.log4j.DailyRollingFileAppender

Log4j.appender.file.DatePattern='_'yyyy-MM-dd'.log'

Log4j.appender.file.File=./mxtt.cc.log

Log4j.appender.file.layout=org.apache.log4j.PatternLayout

Log4j.appender.file.layout.ConversionPattern=%n%-d {yyyy-MM-ddHH:mm:ss}% n [% p]-[Thread:% t]-[% C.% M ()]:% m% n

# output sql statement and execution time

Log4j.logger.jdbc.sqltiming=INFO,console

# output only sql statements

# log4j.logger.jdbc.sqlonly=DEBUG,console

# log4j.logger.jdbc.connection=INFO,console

# log4j.appender.console=org.apache.log4j.ConsoleAppender

# log4j.appender.console.layout=org.apache.log4j.PatternLayout

# log4j.appender.console.layout.ConversionPattern=%d {yyyy-MM-ddHH:mm:ss.SSS}% m%n%n

Finally, the download address of the jar package is attached: http://pan.baidu.com/s/1pLyl0Wb

Http://www.mxtt.cc http://www.51fenxiang.xyz

Tags: Configuration output plug-ins data database statements files information logs transactions fields support run framework two at the same time name address stack size Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno MariaDB Redmi Xiaomi Shulou Technology Shulou Tech Info