jboss:跟踪所有sql语句及sql参数
默认情况下,hibernate/JPA 在server.log中记录的SQL语句,参数都是用?代替的,这样不太方便. 网上留传的p6spy在最新的jboss上(EAP 6.0+版本)貌似已经不起作用了(至少我没弄成功过)
幸好,Jboss已经自带了jdbc监控功能,开启步骤如下:
1、standalone.xml中增加
1 <logger category="jboss.jdbc.spy">
2 <level name="DEBUG"/>
3 </logger>
2、所有的DataSouce节点上,增加spy="true",参考下面这样:
1 <datasource jta="false" jndi-name="java:/XE" pool-name="XE" enabled="true" spy="true" use-ccm="false">
2 <connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
3 <driver-class>oracle.jdbc.OracleDriver</driver-class>
4 ...
好了,server.log中就会记录详细的sql信息,类似下面这样:
...
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) Hibernate: 11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) /* insert org.jboss.as.quickstart.hibernate4.model.Member 11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) */ insert 11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) into 11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) MemberHibernate4Demo 11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) (address, email, name, phone_number, id) 11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) values 11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) (?, ?, ?, ?, ?) 11:26:28,788 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setString(1, shanghai,China) 11:26:28,788 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setString(2, jimmy.yang@jboss.org) 11:26:28,789 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setString(3, jimmy) 11:26:28,789 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setString(4, 13916752129) 11:26:28,789 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setLong(5, 4)
...
- 如何利用ETW(Event Tracing for Windows)记录日志
- ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider
- ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
- .NET Core的文件系统[2]:FileProvider是个什么东西?
- Python多线程怎样优雅的响应中断异常
- .NET Core的文件系统[3]:由PhysicalFileProvider构建的物理文件系统
- .NET Core的文件系统[4]:由EmbeddedFileProvider构建的内嵌(资源)文件系统
- 学习July博文总结——支持向量机(SVM)的深入理解(下)
- 在gridview和datagrid里设置列宽
- ASP.NET MVC的Model元数据与Model模板:将”ListControl”引入ASP.NET MVC
- .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”
- 全球15%工作将被自动化,中国1亿人将面临失业
- ASP.NET MVC的Model元数据提供机制的实现
- 清官难断家务事,人工智能却来介入家庭伦理大戏
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS7服务器环境下vsftpd安装及配置方法
- Linux date 时间设置同步命令分享
- Gerrit设置开机启动方法
- Ubuntu服务器下搭建php运行环境的方法
- 详解ubuntu14.04搭建(迁移)hustoj记录
- linux 触摸屏驱动编写
- centos yum更新及删除多余启动项
- React进阶(1)-理解Redux
- MySQL死锁系列-线上死锁问题排查思路
- # 3分钟短文:Laravel路由注册,你必须掌握的“动词”!
- 资深程序员带你解锁Android性能优化五大误区和两大疑点!(附333页性能优化PDF宝典)
- Android大三提前批的钉钉和抖音面筋,阿里挂了HR面,抖音通过收获Offer
- leetcode之键盘行
- 浅析centos 7 自带的 php 5.4升级为 5.6的方法
- Linux内核设备驱动地址映射笔记整理