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>

View Code

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)

...

时间: 2024-10-09 06:03:07

jboss:跟踪所有sql语句及sql参数的相关文章

oracle sql语句 求sql语句

问题描述 oracle sql语句 求sql语句 数据源: 图片自动说明: 日期,投诉次数,分公司ID,分公司,投诉类别 环比:取查询日期的前一天,如:20150720,环比20150719 结果: 每万用户投诉比 每万用户投诉比环比增幅 个人投诉总次数 个人投诉环比增幅 集团投诉总次数 集团投诉环比增幅 解决方案 oracle sql语句优化Oracle用SQL语句分页 解决方案二: 分公司总用户数都没有,哪里来的每万用户投诉比? 解决方案三: 用decode吧,参考这个sql select

使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据)

原文:使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据) 1.查询待导出表Ad中的数据. SELECT * FROM [DB_Temp].[dbo].[Ad] 2.编写存储过程. 1 --将表数据生成SQL脚本的存储过程 2 3 CREATE PROCEDURE dbo.UspOutputData 4 @tablename sysname 5 AS 6 declare @column varchar(1000) 7 declare @columndata varchar(10

SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)_MsSql

复制代码 代码如下: DECLARE @name VARCHAR(25) DECLARE @SQL VARCHAR(1000) DECLARE @logid INT DECLARE sysdatabase_name CURSOR FOR SELECT name FROM master.dbo.sysdatabases OPEN sysdatabase_name FETCH NEXT FROM sysdatabase_name INTO @name WHILE @@FETCH_STATUS = 0

SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)

复制代码 代码如下:DECLARE @name VARCHAR(25) DECLARE @SQL VARCHAR(1000) DECLARE @logid INT DECLARE sysdatabase_name CURSOR FOR SELECT name FROM master.dbo.sysdatabases OPEN sysdatabase_name FETCH NEXT FROM sysdatabase_name INTO @name WHILE @@FETCH_STATUS = 0

在c#中执行sql语句时传递参数的小经验

sql|语句|执行 c#中与数据库打交道,免不了要用到各种sql语句,而给sql语句传参数也是不可避免的.以下是我在此方面上的一点总结(高手勿见笑): 1> 直接写入法:      例如:             int Id =1;             string Name="lui";             cmd.CommandText="insert into TUserLogin values("+Id+",'"+Name

同样功能的SQL语句 写成参数和写成常量的差别

今天写一个存储过程,由于执行的时间比较长(7秒)所以打算优化一下.结果在优化测试代码中发现如下 一个奇怪的现象. 现在有一个表mis_gl_balance,其中有一个字段ACC_SEGMENT VARCHAR(181) NULL ,他的内容的形式如 下: 3810.105301.5414070180.000000.00000000.0000.000000 另外一个表finance_budget_account 主要记录了budget_type 预算类型和mis_code MIS系统编码.这 里的

同样功能的SQL语句,写成参数和写成常量怎么效率会有那么大的差别

今天写一个存储过程,由于执行的时间比较长(7秒)所以打算优化一下.结果在优化测试代码中发现如下一个奇怪的现象.现在有一个表mis_gl_balance,其中有一个字段ACC_SEGMENT VARCHAR(181) NULL ,他的内容的形式如下:3810.105301.5414070180.000000.00000000.0000.000000另外一个表finance_budget_account 主要记录了budget_type 预算类型和mis_code MIS系统编码.这里的MIS编码就

还是向sql语句中传递参数的问题??…………

问题描述 1.SqlConnectionconn1=newSqlConnection("database=charm;server=sql8;user=sa;pwd=8");2.stringsql1="wheregdcode='"+x+"'";3.SqlDataAdapterSqlDataAdapter1=newSqlDataAdapter("selectgdcode,gdno,gddesc,gdunit,gdpricfromslgoo

SQL语句里的参数

问题描述 我想请教一下如何使用带有参数的SQL语句-例如:SqlConnectioncon=newSqlConnection("server=.;database=XXX;uid=sa;pwd=;");con.Open();SqlCommandcmd=newSqlCommand;cmd.commandtext="SELECT*whrereid=@ID";--------SqlDataReadersdr=cmd.ExecuteReader();sdr.read();-