众所周知, 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. VMware vSphere克隆虚拟机

    参考资料:http://blog.csdn.net/shen_jz2012/article/details/48416771 1. 首先将你所要克隆的虚拟机关掉 2. 选择你的ESXI服务器     ...

  2. Dubbo学习笔记9:Dubbo服务提供方启动流程源码分析

    首先我们通过一个时序图,直观看下Dubbo服务提供方启动的流程: 在<Dubbo整体框架分析>一文中我们提到,服务提供方需要使用ServiceConfig API发布服务,具体是调用代码( ...

  3. android tools相关

    1.showin 在include 的根节点设置,可一预览效果

  4. Sublime Text 2 绿色汉化版 x64

    前天介绍了<Sublime Text 2 绿化与汉化 [Windows篇]>,应大家要求,我特地做了汉化版分享给大家. 很清新吧,但我没安装多余的插件,只是安装了几个必备的插件,如 输入法 ...

  5. 微软官网给出CSS选择器支持列表

    CSS Compatibility and Internet Explorer 这是在 @司徒正美 博客里看到的,所以搬到自己博客,收藏下..正如司徒兄所说,微软太狡滑了,如果把不支持的属性用红色标示 ...

  6. CSS规范 - 优化方案--(来自网易)

    值缩写 缩写值可以减少CSS文件大小,并增加可读性和可维护性. 但并非所有的值都必须缩写,因为当一个属性的值缩写时,总是会将所有项都设置一遍,而有时候我们不希望设置值里的某些项. /* 比如我们用下面 ...

  7. UVALive 6467

    题目链接 : http://acm.sdibt.edu.cn/vjudge/contest/view.action?cid=2186#problem/C 题意:对于斐波那契数列,每个数都mod m , ...

  8. 05 uni-app框架学习:uni-app设置全局变量的方法

    原文地址:https://ask.dcloud.net.cn/article/35021

  9. Windows修改默认远程端口号3389

    1.打开注册表:运行-regedit: 2.HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Wds\Repwd\ ...

  10. innobackupex做MySQL增量备份及恢复【转】

    创建备份用户 mysql> grant process,reload,lock tables,replication client on *.* to 'backup'@'localhost' ...