mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
refactor code, remove direct 'System.out.println' call
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.alibaba.druid.support.console;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.util.ArrayList;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -51,8 +52,7 @@ public class DruidStat {
|
||||
try {
|
||||
opt = Option.parseOptions(args);
|
||||
} catch (OptionParseException e) {
|
||||
System.out.println(e.getMessage());
|
||||
Option.printHelp();
|
||||
Option.printHelp(e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ public class DruidStat {
|
||||
@SuppressWarnings("all")
|
||||
public static void printDruidStat(Option option) throws Exception {
|
||||
|
||||
PrintStream out = option.getPrintStream();
|
||||
String address = loadManagementAgentAndGetAddress(option.getPid());
|
||||
JMXServiceURL jmxUrl = new JMXServiceURL(address);
|
||||
JMXConnector jmxc = JMXConnectorFactory.connect(jmxUrl);
|
||||
@@ -75,7 +76,7 @@ public class DruidStat {
|
||||
if (option.printSqlData()) {
|
||||
List<Map<String, Object>> content = (List<Map<String, Object>>) invokeService(jmxConn, Option.SQL);
|
||||
if (content == null ) {
|
||||
System.out.println("无SqlStat统计数据,请检查是否已执行了SQL");
|
||||
out.println("无SqlStat统计数据,请检查是否已执行了SQL");
|
||||
} else {
|
||||
TabledDataPrinter.printSqlData(content, option);
|
||||
}
|
||||
@@ -84,7 +85,7 @@ public class DruidStat {
|
||||
if (option.printActiveConn()) {
|
||||
List<List<String>> content = (List<List<String>>) invokeService(jmxConn, Option.ACTIVE_CONN);
|
||||
if (content == null || content.size() == 0 ) {
|
||||
System.out.println("目前无活动中的数据库连接");
|
||||
out.println("目前无活动中的数据库连接");
|
||||
} else {
|
||||
TabledDataPrinter.printActiveConnStack(content, option);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package com.alibaba.druid.support.console;
|
||||
|
||||
import java.io.PrintStream;
|
||||
|
||||
public class Option {
|
||||
|
||||
public static final int DATA_SOURCE = 1 ;
|
||||
@@ -27,6 +29,8 @@ public class Option {
|
||||
private int interval = -1;
|
||||
private boolean detailPrint;
|
||||
|
||||
private PrintStream printStream = System.out;
|
||||
|
||||
public void addPrintDataType(int newValue) {
|
||||
this.printDataType= this.printDataType | newValue;
|
||||
}
|
||||
@@ -140,41 +144,53 @@ public class Option {
|
||||
return option;
|
||||
}
|
||||
|
||||
public static void printHelp(String errorMsg) {
|
||||
printHelp(System.out, errorMsg);
|
||||
}
|
||||
|
||||
public static void printHelp() {
|
||||
System.out.println("Usage: druidStat -help | -sql -ds -act [-detail] [-id id] <pid> [refresh-interval]");
|
||||
System.out.println();
|
||||
System.out.println("参数: ");
|
||||
System.out.println(" -help 打印此帮助信息");
|
||||
System.out.println(" -sql 打印SQL统计数据");
|
||||
System.out.println(" -ds 打印DataSource统计数据");
|
||||
System.out.println(" -act 打印活动连接的堆栈信息");
|
||||
System.out.println(" -detail 打印统计数据的全部字段信息");
|
||||
System.out.println(" -id id 要打印的数据的具体id值" );
|
||||
System.out.println(" pid 使用druid连接池的jvm进程id");
|
||||
System.out.println(" refresh-interval 自动刷新时间间隔, 以秒为单位" );
|
||||
printHelp(System.out, null);
|
||||
}
|
||||
|
||||
System.out.println();
|
||||
System.out.println("说明: ");
|
||||
System.out.println(" -sql,-ds,-act参数中要至少指定一种数据进行打印, 可以");
|
||||
System.out.println(" 组合使用, 比如 -sql -ds 一起的话就打印两种统计数据");
|
||||
System.out.println(" -id id可以跟 -sql 或-ds组合, 比如 -sql -id 5 或 -ds -id 1086752");
|
||||
System.out.println(" pid必需指定, refresh-interval可选, 如不指定,则打印数据后退出");
|
||||
System.out.println(" pid和refresh-interval参数必需放在命令行的最后, 否则解析会出错");
|
||||
public static void printHelp(PrintStream out, String errorMsg) {
|
||||
if (errorMsg != null ) {
|
||||
out.println(errorMsg);
|
||||
out.println();
|
||||
}
|
||||
out.println("Usage: druidStat -help | -sql -ds -act [-detail] [-id id] <pid> [refresh-interval]");
|
||||
out.println();
|
||||
out.println("参数: ");
|
||||
out.println(" -help 打印此帮助信息");
|
||||
out.println(" -sql 打印SQL统计数据");
|
||||
out.println(" -ds 打印DataSource统计数据");
|
||||
out.println(" -act 打印活动连接的堆栈信息");
|
||||
out.println(" -detail 打印统计数据的全部字段信息");
|
||||
out.println(" -id id 要打印的数据的具体id值" );
|
||||
out.println(" pid 使用druid连接池的jvm进程id");
|
||||
out.println(" refresh-interval 自动刷新时间间隔, 以秒为单位" );
|
||||
|
||||
System.out.println();
|
||||
System.out.println("例子: ");
|
||||
System.out.println(" 打印3983进程的sql 统计数据.");
|
||||
System.out.println(" >druidStat -sql 3983");
|
||||
System.out.println(" 打印3983进程的ds统计数据.");
|
||||
System.out.println(" >druidStat -ds 3983");
|
||||
System.out.println(" 打印3983进程的sql的id为10的详细统计数据.");
|
||||
System.out.println(" >druidStat -sql -id 10 -detail 3983");
|
||||
System.out.println(" 打印3983进程的当前活动连接的堆栈信息");
|
||||
System.out.println(" >druidStat -act 3983");
|
||||
System.out.println(" 打印3983进程的ds,sql,和act信息");
|
||||
System.out.println(" >druidStat -ds -sql -act 3983");
|
||||
System.out.println(" 每隔5秒自动打印ds统计数据");
|
||||
System.out.println(" >druidStat -ds 3983 5");
|
||||
out.println();
|
||||
out.println("说明: ");
|
||||
out.println(" -sql,-ds,-act参数中要至少指定一种数据进行打印, 可以");
|
||||
out.println(" 组合使用, 比如 -sql -ds 一起的话就打印两种统计数据");
|
||||
out.println(" -id id可以跟 -sql 或-ds组合, 比如 -sql -id 5 或 -ds -id 1086752");
|
||||
out.println(" pid必需指定, refresh-interval可选, 如不指定,则打印数据后退出");
|
||||
out.println(" pid和refresh-interval参数必需放在命令行的最后, 否则解析会出错");
|
||||
|
||||
out.println();
|
||||
out.println("例子: ");
|
||||
out.println(" 打印3983进程的sql 统计数据.");
|
||||
out.println(" >druidStat -sql 3983");
|
||||
out.println(" 打印3983进程的ds统计数据.");
|
||||
out.println(" >druidStat -ds 3983");
|
||||
out.println(" 打印3983进程的sql的id为10的详细统计数据.");
|
||||
out.println(" >druidStat -sql -id 10 -detail 3983");
|
||||
out.println(" 打印3983进程的当前活动连接的堆栈信息");
|
||||
out.println(" >druidStat -act 3983");
|
||||
out.println(" 打印3983进程的ds,sql,和act信息");
|
||||
out.println(" >druidStat -ds -sql -act 3983");
|
||||
out.println(" 每隔5秒自动打印ds统计数据");
|
||||
out.println(" >druidStat -ds 3983 5");
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
@@ -199,4 +215,12 @@ public class Option {
|
||||
return this.interval;
|
||||
}
|
||||
|
||||
|
||||
public void setPrintStream(PrintStream printStream) {
|
||||
this.printStream=printStream;
|
||||
}
|
||||
public PrintStream getPrintStream() {
|
||||
return this.printStream;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -83,13 +83,4 @@ public class TableFormatter {
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
List<String[]> v = new ArrayList<String[]>();
|
||||
v.add(new String[]{"name","age","addr"});
|
||||
v.add(new String[]{"shrek", "200", "hangzhou zhejiang "});
|
||||
v.add(new String[]{"what as", "11", "asdfa"});
|
||||
String formattedStr = format(v);
|
||||
System.out.println(formattedStr);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.alibaba.druid.support.console;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -59,11 +60,12 @@ public class TabledDataPrinter {
|
||||
"TransactionHistogram", "ConnectionHoldTimeHistogram", "RemoveAbandoned", "ClobOpenCount" };
|
||||
|
||||
public static void printActiveConnStack(List<List<String>> content, Option opt) {
|
||||
PrintStream out = opt.getPrintStream();
|
||||
for (List<String> stack : content) {
|
||||
for (String line : stack) {
|
||||
System.out.println(line);
|
||||
out.println(line);
|
||||
}
|
||||
System.out.println("===============================\n");
|
||||
out.println("===============================\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,6 +85,7 @@ public class TabledDataPrinter {
|
||||
}
|
||||
|
||||
public static void _printDataSourceData(List<Map<String, Object>> content, Option opt) {
|
||||
PrintStream out = opt.getPrintStream();
|
||||
if (opt.getId() != -1) {
|
||||
List<Map<String, Object>> matchedContent = new ArrayList<Map<String, Object>>();
|
||||
for (Map<String, Object> dsStat : content) {
|
||||
@@ -95,9 +98,9 @@ public class TabledDataPrinter {
|
||||
content = matchedContent;
|
||||
}
|
||||
if (opt.isDetailPrint()) {
|
||||
System.out.println(getVerticalFormattedOutput(content, dsColField));
|
||||
out.println(getVerticalFormattedOutput(content, dsColField));
|
||||
} else {
|
||||
System.out.println(getFormattedOutput(content, dsRowTitle, dsRowField));
|
||||
out.println(getFormattedOutput(content, dsRowTitle, dsRowField));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,6 +120,8 @@ public class TabledDataPrinter {
|
||||
}
|
||||
|
||||
public static void _printSqlData(List<Map<String, Object>> content, Option opt) {
|
||||
|
||||
PrintStream out = opt.getPrintStream();
|
||||
if (opt.getId() != -1) {
|
||||
List<Map<String, Object>> matchedContent = new ArrayList<Map<String, Object>>();
|
||||
for (Map<String, Object> sqlStat : content) {
|
||||
@@ -126,9 +131,9 @@ public class TabledDataPrinter {
|
||||
if (opt.isDetailPrint()) {
|
||||
String dbType = (String) sqlStat.get("DbType");
|
||||
String sql = (String) sqlStat.get("SQL");
|
||||
System.out.println("Formatted SQL:");
|
||||
System.out.println(SQLUtils.format(sql, dbType));
|
||||
System.out.println();
|
||||
out.println("Formatted SQL:");
|
||||
out.println(SQLUtils.format(sql, dbType));
|
||||
out.println();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -136,9 +141,9 @@ public class TabledDataPrinter {
|
||||
content = matchedContent;
|
||||
}
|
||||
if (opt.isDetailPrint()) {
|
||||
System.out.println(getVerticalFormattedOutput(content, sqlColField));
|
||||
out.println(getVerticalFormattedOutput(content, sqlColField));
|
||||
} else {
|
||||
System.out.println(getFormattedOutput(content, sqlRowTitle, sqlRowField));
|
||||
out.println(getFormattedOutput(content, sqlRowTitle, sqlRowField));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user