格式化p6spy的输出日志
众所周知, p6spy打印出来的日志是一行很长很长的内容, 很不容易查看, 牛B的p6spy为什么就不能想hibernate那样有format_sql的功能?
竟然没有, 我只好自己动手写一个日志输出类, 这里我只举出console日志输出的例子:
package com.techmango.higenericdao.utils; import com.p6spy.engine.spy.appender.StdoutLogger; public class P6SpyStdoutLogger extends StdoutLogger {
public void logText(String text) {
StringBuilder sb = new StringBuilder();
//匹配到最后一个|作为分隔符
String[] arrString = text.split("\\|(?![^\\|]*\\|)");
if(arrString.length > 1) {
sb.append(arrString[0]);
//去最后一段语句做替换进行格式化
arrString[1] = arrString[1].replaceAll(", ", ",\r\n\t");
arrString[1] = arrString[1].replaceAll(" values ", ",\r\nvalues\r\n\t");
arrString[1] = arrString[1].replaceAll(" from ", "\r\nfrom\r\n\t");
arrString[1] = arrString[1].replaceAll(" where ", "\r\nwhere\r\n\t");
arrString[1] = arrString[1].replaceAll(" order by ", "\r\norder by\r\n\t");
arrString[1] = arrString[1].replaceAll(" group by ", "\r\ngroup by\r\n\t");
sb.append("\r\n");
sb.append(arrString[1]);
qlog.println(sb.toString());
}
else {
qlog.println(text);
}
arrString = null;
}
}
把这个类P6SpyStdoutLogger配置到p6spy.properties文件里,
打印结果如下:
12-02 12:37:44,379|46|statement|connection 3|insert into gas.news (title, content, icon, img, time, type, subType, newsRange, keyword) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
insert into gas.news (title,
content,
icon,
img,
time,
type,
subType,
newsRange,
keyword),
values
('实实在在地',
'hibernate 新闻',
NULL,
NULL,
'02-十二月-15',
'',
NULL,
'',
NULL)
12-02 12:37:47,488|55|rollback|connection 3||
怎么样, 这样的内容是不是容易看了呢?
格式化p6spy的输出日志的更多相关文章
- python 格式化输出日志记录
# 格式化打印提示输出示例已logging模块为例. service_name = "Booking" logger.error('%s service is down!' % s ...
- 【转载】JsonLayout log4j2 json格式输出日志
JsonLayout log4j2 json格式输出日志 如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式. ...
- python3:logging模块 输出日志到文件
python自动化测试脚本运行后,想要将日志保存到某个特定文件,使用python的logging模块实现 参考代码: import logging def initLogging(logFilenam ...
- springboot的日志框架slf4j (使用logback输出日志以及使用)
1.为什么使用logback? ——在开发中不建议使用System.out因为大量的使用会增加资源的消耗.因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序. ...
- springboot集成log4j2 + logstash 异步输出日志
一. spring boot 集成log4j2 1.maven引入jar包 <dependency> <groupId>org.springframework.boot< ...
- Spring Boot 使用 Log4j2 & Logback 输出日志到 EKL
文章目录 1.ELK 介绍 2.环境.软件准备 3.ELK 环境搭建 4.Spring Boot 配置示例 4.1.Log4j2 方式配置 4.2.Logback 方式配置 1.ELK 介绍 ELK ...
- 输出日志实例改成用Spring的AOP来实现
1.采用Interception Around通知的形式实现 Interception Around通知会在Join Point的前后执行,实现Interception Around通知的类需要实现接 ...
- ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)
ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3) 用的EFProviderWrappers ,这个组件好久没有更新了,对于SQL执行日志的解决方案的需求 ...
- 如何查看MapReduce执行的程序中的输出日志
我们开发程序的时候,好多人都喜欢用sysout输出内容来查看运行情况.但是在MR程序里写了之后,却不知道去哪里查找,可以参考这篇文章. 第一种方法,我们可以在MapReduce任务查看页面找到这些日志 ...
随机推荐
- IOS的属性和实例变量
实际上,@property声明的是属性,并不是实例变量.但是编译器会根据属性,自动生成实例变量,和对应的access方法.所以已经在interface里声明了@property,就不再需要在imple ...
- bzoj千题计划290:bzoj3143: [Hnoi2013]游走
http://www.lydsy.com/JudgeOnline/problem.php?id=3143 计算每条边经过的概率e[] 然后经过概率多的分配的编号大,经过概率少的分配的编号小 如何计算边 ...
- 自定义泛型_无多态_通配符无泛型数组_jdk7泛型使用
通配符 T, K, V, E 等泛型字母为有类型, 类型参数赋予具体的值 ? 未知类型 类型参数赋予不确定值, 任意类型 只能用在 声明类型上,方法参数上, 不能用在定义泛型类上 上限 extends ...
- 微软官网给出CSS选择器支持列表
CSS Compatibility and Internet Explorer 这是在 @司徒正美 博客里看到的,所以搬到自己博客,收藏下..正如司徒兄所说,微软太狡滑了,如果把不支持的属性用红色标示 ...
- 让你的HTML5&CSS3网站在老IE中也能正常显示的3种方法
起初,IE其实也是一款非常有进取心的浏览器.但经过一段时间的蛰伏后,它已经成为了我们生活中的一道障碍.微软现在又重新开始向其它浏览器发起挑战,但事实情况是,新版的现代IE浏览器一直滞后于谷歌浏览器和火 ...
- 在ASP.Net中两种利用CSS实现多界面的方法
通过使页面动态加载不同CSS实现多界面(类型于csdn的blog): 方法一: <%@page language="C#"%><%@import namespac ...
- Centos 6.9 安装Rabbitmq
一.安装Rabbitmq 首先安装编译工具 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel Er ...
- YOLOv2训练自己的数据集(VOC格式)
下周试试,参考:http://blog.csdn.net/ch_liu23/article/details/53558549 http://blog.csdn.net/sinat_30071459/a ...
- jq选择子元素
jq选择子元素 一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <div id="par_div"><a id="h ...
- php中empty()、isset()、is_null()和变量本身的布尔判断区别
<?php//预定义变量数组:空字符,字符0,数组0,null,布尔false,空数组$arr_var = array('', '0', 0, null, false, array()); fo ...