上篇文章已经介绍了使用SpringAOP监控方法执行过程
方法执行过程加上并发如果生成日志文件的话那增量可想而知,而且用日志文件记录如果需要查找问题需要花费很长时间,所以想到了使用nosql数据库存储
现在较流行的nosql数据库如redis mongodb ssdb,本文采用SSDB
http://ssdb.io/zh_cn/有详细的SSDB介绍。
啥也不说,粘代码
package net.uni.ap.aop;
import com.udpwork.ssdb.*;
/**
*
* 处理内容:链接SSDB驱动类
* @version: 1.0
* @see:net.uni.ap.aop.SSDBUtils.java
* @date:2016-1-19
* @author:梅海波
*/
public class SSDBUtils {
private static SSDB ssdb = null;
static{
try {
ssdb = new SSDB("127.0.0.1", 8888);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void setLogs(String uuid,String time,String logs){
try {
ssdb.hset(uuid,time, logs);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void getLogsByUUID(String uuid){
try {
Response resp = ssdb.hscan(uuid, "", "", 100000);
for(int i=1; i<resp.raw.size(); i+=2){
//ssdb.hget(uuid, resp.raw.get(i));
String s = new String(ssdb.hget(uuid, resp.raw.get(i)),"GBK");
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args){
try {
getLogsByUUID("d87065b5-cebd-4234-951e-361965245235");
//setLogs("85621a5e-7dc4-4451-a1fc-a890451ca52b", System.currentTimeMillis()+"", "IDictInfoBO.getStore() 执行时间:5");
//setLogs("85621a5e-7dc4-4451-a1fc-a890451ca52b", System.currentTimeMillis()+"", "IDictInfoBO.getStore() 执行时间:6");
//ssdb.set("ad28c722-b710-4370-847c-3bd238b5b11b","aaaaa");
//System.out.println(ssdb.get("ad28c722-b710-4370-847c-3bd238b5b11b"));
//String a = new String(ssdb.hget("ad28c722-b710-4370-847c-3bd238b5b11b", "ad28c722-b710-4370-847c-3bd238b5b11b"));
//Response resp = ssdb.hscan("85621a5e-7dc4-4451-a1fc-a890451ca52b", "", "", 1000);
//for(int i=1; i<resp.raw.size(); i+=2){
// String s = new String(resp.raw.get(i));
// s = new String(ssdb.hget("85621a5e-7dc4-4451-a1fc-a890451ca52b", s));
// System.out.println(s);
//}
//System.out.println(a);
} catch (Exception e) {
e.printStackTrace();
}
}
}
检索效果
IBaseLoginInfoBO.querySysNoticeList() 执行时间:561
SystemService.login("liyan", "c4ca4238a0b923820dcc509a6f75849b", , , ) 执行时间:167
IBaseUserRoleBO.checkUserRoleIsEntrusted(10011) 执行时间:14
IBaseUserRoleBO.findCorpInfoListByUserId(10011) 执行时间:8
IBaseUserRoleBO.getAllUserRoleByUserId(10011) 执行时间:94
IBaseUserRoleBO.getAllUserRoleByUser(10011) 执行时间:0
IBaseUserRoleBO.getBaseUserRole(1908) 执行时间:12
IBaseUserRoleBO.getBaseUserRole(1908) 执行时间:8
ICorpInfoBO.getObject(999) 执行时间:24
ICorpInfoBO.getAllSubCorp(999) 执行时间:17
IFunctionBO.findAllUserFunction(10011) 执行时间:5203
IFunctionBO.getRoleFunQueryRangeMap(10011) 执行时间:95
IBaseLoginInfoBO.create({"createTime":1453199154340,"id":432125,"logStatus":1,"loginName":"liyan","loginTime":1453199154340,"logoutTime":null,"user":null,"userComputer":"127.0.0.1","userIP":"127.0.0.1","userId":10011,"userMAC":"","userName":"李艳"}) 执行时间:39
IDictInfoBO.getStore("QUESTION_TYPE") 执行时间:21
IDictInfoBO.getStore("QUESTION_TYPE") 执行时间:18
IDictInfoBO.getStore("LOG_LEVEL") 执行时间:13
IFunctionBO.getAllFunctionsByUserRoleId(2182, 1908, "/mis") 执行时间:154
IFunctionBO.getAllFunctionsByUserRoleId(2008, 1908, "/mis") 执行时间:63
IFunctionBO.getAllFunctionsByUserRoleId(2200565, 1908, "/mis") 执行时间:16
IFunctionBO.findAllUserFunction(10011) 执行时间:5510
CsSuppAddCutDateDetAction.verifySupplierLoginHref() 执行时间:5712
CsSuppAddCutDateDetAction.getFlag() 执行时间:0