众所周知, 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的输出日志的更多相关文章

  1. python 格式化输出日志记录

    # 格式化打印提示输出示例已logging模块为例. service_name = "Booking" logger.error('%s service is down!' % s ...

  2. 【转载】JsonLayout log4j2 json格式输出日志

    JsonLayout log4j2 json格式输出日志 如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式. ...

  3. python3:logging模块 输出日志到文件

    python自动化测试脚本运行后,想要将日志保存到某个特定文件,使用python的logging模块实现 参考代码: import logging def initLogging(logFilenam ...

  4. springboot的日志框架slf4j (使用logback输出日志以及使用)

    1.为什么使用logback? ——在开发中不建议使用System.out因为大量的使用会增加资源的消耗.因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序. ...

  5. springboot集成log4j2 + logstash 异步输出日志

    一. spring boot 集成log4j2 1.maven引入jar包 <dependency> <groupId>org.springframework.boot< ...

  6. Spring Boot 使用 Log4j2 & Logback 输出日志到 EKL

    文章目录 1.ELK 介绍 2.环境.软件准备 3.ELK 环境搭建 4.Spring Boot 配置示例 4.1.Log4j2 方式配置 4.2.Logback 方式配置 1.ELK 介绍 ELK ...

  7. 输出日志实例改成用Spring的AOP来实现

    1.采用Interception Around通知的形式实现 Interception Around通知会在Join Point的前后执行,实现Interception Around通知的类需要实现接 ...

  8. ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)

    ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3) 用的EFProviderWrappers ,这个组件好久没有更新了,对于SQL执行日志的解决方案的需求 ...

  9. 如何查看MapReduce执行的程序中的输出日志

    我们开发程序的时候,好多人都喜欢用sysout输出内容来查看运行情况.但是在MR程序里写了之后,却不知道去哪里查找,可以参考这篇文章. 第一种方法,我们可以在MapReduce任务查看页面找到这些日志 ...

随机推荐

  1. 贪心算法:Codevs 1044 拦截导弹

    ---恢复内容开始--- #include <iostream> #include <cstdio> #include <cstdlib> #include < ...

  2. 史上最全的浏览器 CSS & JS Hack 手册

    浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技能.如果有一份浏览器 Hack 手册,那查询起来就方便多了.这篇文章就向 ...

  3. CSS3 - chrome,傲游,360极速浏览器不支持小于12px的字号的解决办法

    google流量器chrome,傲游,360极速浏览器都是基于webkit内核浏览器,默认不支持小于font-size小于12px 的字号,即定义font-size小于12px时会发现字体大小依然是1 ...

  4. 月薪20K软件测试自动化岗必问面试题:验证码识别与处理

    本文乃Happy老师的得意门生来自java全栈自动化测试4期的小核桃所作.正所谓严师出高徒,笔下有黄金~~让我们一起来征服面试官吧~~ 在做自动化测试的时候,经常会遇到需要输入验证码的地方,有些可以让 ...

  5. linux 查看有哪些service

    一.利用进程来查看命令里 ps -aux | grep xxx 是查看某个进程或者服务是否存在.二.利用chkconfig配置工具chkconfig --list 可以列出所有的服务在各个runlev ...

  6. linux调试工具glibc的演示分析-core dump double free【转】

    转自:http://www.cnblogs.com/jiayy/p/3475544.html 偶然中发现,下面的两端代码表现不一样 void main(){ void* p1 = malloc(32) ...

  7. Linux Core Dump【转】

    转自:http://www.cnblogs.com/hazir/p/linxu_core_dump.html 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中 ...

  8. 初步认识mitmproxy(一)

    在windows机器上,经常用的最多的是fiddler工具,很强大,图形化界面,使用方便.简单:在mac上,Charles 类似fiddler工具,同样是易于操作的图形化界面,同样都是通过代理的方式实 ...

  9. google地图的url参数

    Google Maps Intents for Android The Google Maps app for Android exposes several intents that you can ...

  10. 修复 Tween.JS 的 onStop 设置无效

    Tween.js 个人认为还是一个比较不错的 缓动动画库,给作为学渣的我实现一些酷酷的动画带来了极大的遍历. 但是,今天突然发现特么设置onStop的回调函数居然没反应...... 作为一个渣渣只能一 ...