当前位置: 首页 > news >正文

专业做网站app的公司哪家好国外新闻最新消息

专业做网站app的公司哪家好,国外新闻最新消息,网络推广做些什么,做的网站在小窗口中怎么保持中间项目开发阶段&#xff0c;mybatis的SQL打印有占位符&#xff0c;调试起来还是有点麻烦&#xff0c;随想整合P6Spy打印可以直接执行的SQL&#xff0c;方便调试&#xff0c;用的Durid连接池。 Springboot项目集成Durid <dependency><groupId>com.alibaba</group…

        项目开发阶段,mybatis的SQL打印有占位符,调试起来还是有点麻烦,随想整合P6Spy打印可以直接执行的SQL,方便调试,用的Durid连接池。

Springboot项目集成Durid

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.18</version></dependency>

配置文件application.yml

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=trueusername: rootpassword: 123456# 指定数据源为 DruidDataSource,默认值为 HikariDataSourcetype: com.alibaba.druid.pool.DruidDataSourcedruid:initial-size: 5min-idle: 5max-active: 15max-wait: 30000min-evictable-idle-time-millis: 30000time-between-eviction-runs-millis: 30000validation-query: SELECT 1 FROM DUALtest-while-idle: truetest-on-borrow: falsetest-on-return: falsepool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 5filters: stat,walluse-global-data-source-stat: truestat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: adminlogin-password: 111111web-stat-filter:enabled: trueurl-pattern: /*exclusions: /druid/*, *.js, *.jpeg, *.jpg, *.png, *.gif, *.cssfilter:stat:merge-sql: trueslow-sql-millis: 3000log-slow-sql: true

配置P6Spy,有两种方式,一种是添加依赖jar包,一种是用p6spy-spring-boot-starter。

第一种:

添加依赖:可以添加到dev环境,生产环境不建议使用,有性能损耗。

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

或者只添加到开发环境

<profiles><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><profiles.active>dev</profiles.active></properties><dependencies><dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version></dependency></dependencies></profile>
</profiles>

修改数据源配置,需要改2个地方,url和driver-class-name

修改前:

修改后:

spring:datasource:url: jdbc:p6spy:mysql://x.x.x.x:3306/my_test?allowPublicKeyRetrieval=true&useSSL=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=falseusername: rootpassword: 123456driver-class-name: com.p6spy.engine.spy.P6SpyDriver

 

添加spy.properties文件,默认会在项目根目录生成一个spy.log文件,把SQL打印到该文件中。

module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory# 自定义日志打印logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger#日志输出到控制台appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger# 使用日志系统记录 sql#appender=com.p6spy.engine.spy.appender.Slf4JLogger# 设置 p6spy driver 代理deregisterdrivers=true# 取消JDBC URL前缀useprefix=true# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.excludecategories=info,debug,result,batch,resultset# 日期格式dateformat=yyyy-MM-dd HH:mm:ss# 真实JDBC driver , 多个以 逗号 分割 默认为空#driverlist=org.h2.Driverdriverlist=oracle.jdbc.OracleDriver# 是否开启慢SQL记录outagedetection=true# 慢SQL记录标准 2 秒outagedetectioninterval=2

集成完成。

spy.properties参考:

mybatis-plus:

#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2

官网的例子:

################################################################## 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

第二种:

添加依赖:

<dependency><groupId>com.github.gavlyukovskiy</groupId><artifactId>p6spy-spring-boot-starter</artifactId><version>1.9.0</version>
</dependency>

修改数据源配置:同第一种方式,修改后

添加配置:这里和第一种方式不一样,可以添加个开关 enabled: true

decorator:datasource:p6spy:logging: filelog-file: spy.loglog-format: executionTime:%(executionTime) | sql:%(sqlSingleLine)

集成完成。

spy.log文件,日志格式可以通过配置文件修改,请另行参考网上的资料。

 

可能遇到的问题:dbType not support : null,这是没有识别出dbType,Durid数据源会存在该问题。

 解决方式:修改Durid配置中的filter,在stat和wall指定dbType和enabled

 

总结: 除了dbType not support这个问题外,我这还遇到了connection error的问题,最后发现其实和P6Spy无关。我这不是纯净的框架,数据源配置都是jar包的方式继承的父项目,改起来很费劲。P6Spy配置其实很简单,Durid连接池用MySQL的时候会有dbType不识别问题,其余的数据源都很好集成,如果遇到其余的稀奇古怪的问题,请先排查框架本身是否正常。

http://www.ritt.cn/news/23036.html

相关文章:

  • 百度?o法提交网站网络推广团队
  • 网站建设方式国际新闻最新消息十条摘抄
  • 宿州网站开发建设百度一下搜索
  • 网页编辑哪个键杭州seo泽成
  • 怎么做网站frontpage2022年新闻大事
  • 手机网站域名哪里注册快手流量推广网站
  • aspnet网站开发作业青岛网站制作公司
  • html5网站开发视频seo怎么收费
  • 级a做爰片免费视网站看看百度产品大全首页
  • wordpress资源销售seo百度首页排名业务
  • 昆明企业网站建设公司长沙官网优化公司
  • WordPress实现点击复制南京谷歌优化
  • 网站设计首页一网信息一个简单便捷的新闻网站
  • html设计网站广东宣布即时优化调整
  • 绵阳集团网站建设seo排名优化资源
  • 怎么看网站发的外链seo课程培训机构
  • 网站建设的流程是什么意思网络销售是干嘛的
  • 网站收录做关键词排名百度竞价调价软件
  • 网站建设的关键点seo竞价推广
  • 查商家信息有哪些网站seo接单平台
  • 日本做灯具公司网站怎么做网站教程
  • 鹰潭市网站建设公司百度一下图片识别
  • 专门做鞋子的网站有哪些潍坊百度快速排名优化
  • 网站建设高端品牌毕业设计网站
  • 连云港网站建设电话专门看广告的网站
  • 谁做的12306网站搜索引擎营销的特点包括
  • 东莞建网站公司平台关键词歌词完整版
  • 动易网站怎么进入后台极速建站网站模板
  • wordpress主题webseo外包公司哪家好
  • 上海牛巨微网络科技有限公司上海专业的seo公司