1. 程式人生 > >一個j2ee測試神器,方便檢視伺服器日誌的工具

一個j2ee測試神器,方便檢視伺服器日誌的工具

功能:

1,能夠將伺服器上的指定的檔案通過瀏覽器倒序顯示處理,如果檔案是系統日誌,則可以用來查日誌資訊。

2,可以倒序顯示指定的行數,預設100行,通過引數count=500可以修改顯示行數。

3,只按行顯示行數,預設最大10000行,支援大檔案或超大檔案,就算檔案有1G。

4,可以與操作事件配合,執行一個動作,刷一下就能檢視最新的。

5,結合瀏覽器本身的查詢功能,可以方便查詢想要的資訊。

其他功能:

1,filter支援關鍵字查詢,如:filter=findData,則只顯示含有findData的日誌資訊。

2,支援stopKey,如:stopKey=findData,則只要找到含有findData的資訊,就停止繼續查詢。

3,檔案同時也可以配置成其他日誌檔案,如:nginx日誌,或其他日誌,效果一樣。

使用方式:

將以下程式碼,存成jsp,如:logs.jsp,並修改程式碼中的filePath為實際的日誌檔案。

然後通過瀏覽器訪問,如:http://localhost:8080/logs.jsp

<%@ page contentType="text/html;charset=UTF-8"
    pageEncoding="UTF-8" import="java.net.*,java.io.*,java.util.*"%>

<%!
int MAX_TOTAL_ROW_READ=10000;
List<String> readLineFile(File file, int maxCount, Map<String, String> filterMap, String charset) throws Exception {
	long time=System.currentTimeMillis();
	
	List<String> lineList = new ArrayList();
	if(charset==null ||"".equals(charset)){
		charset = "UTF-8";
	}
	
	int count = 0;
	int totalCount=0;
	
	RandomAccessFile rf = null;
	try {
		rf = new RandomAccessFile(file, "r");
		long len = rf.length();
		long start = rf.getFilePointer();
		long nextend = start + len - 1;
		String line;
		rf.seek(nextend);
		int c = -1;
		String filter=filterMap.get("filter");
		String stop_key=filterMap.get("stop_key");
		String hide_key=filterMap.get("hide_key");
		if(stop_key!=null && (stop_key.equals("") ||stop_key.equals("null"))){
			stop_key=null;
		}
		if(hide_key!=null && (hide_key.equals("") ||hide_key.equals("null"))){
			hide_key=null;
		}
		String[] hides=null;
		if(hide_key!=null){
			hides=hide_key.split(",");
		}
		
		
		boolean isHide=false;
		while (nextend > start) {
			c = rf.read();
			if (c == '\n' || c == '\r') {
				totalCount++;
				if(totalCount>MAX_TOTAL_ROW_READ){
					break;
				}
				if (count > maxCount) {
					break;
				}
				line = rf.readLine();
				if (line != null) {
					line = new String(line.getBytes("ISO-8859-1"), charset);
					//stop
					if(stop_key!=null && line.indexOf(stop_key)>=0){
						break;
					}
					//hide
					if(hides!=null){
						isHide=false;
						for(String hide:hides){
							if(hide.equals("hide_empty") && "".equals(line)){
								isHide=true;
								break;
							}
							else if(line.indexOf(hide)>=0){
								isHide=true;
								break;
							}
						}
						if(isHide){
							continue;
						}
					}
					//filter
					if(filter==null|| line.indexOf(filter)>=0){
						count++;
						lineList.add(line);
					}
				}
				nextend--;
			}
			nextend--;
			rf.seek(nextend);
			if (nextend == 0) {// output first line on seek file head
				line = rf.readLine();
				line = new String(line.getBytes("ISO-8859-1"), charset);
				lineList.add(line);
			}
		}
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		try {
			if (rf != null)
				rf.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	System.out.println("totalCount="+totalCount+" foundCount="+count+" time="+(System.currentTimeMillis()-time));
	return lineList;
}
%>

<%
String filePath="d:/log4j/logs.log";
int max_line_count=100;
String counts=request.getParameter("count");//stop on find count
String filter=request.getParameter("filter");//find by filter value
String stopKey=request.getParameter("stopKey");//find stop on find stopKey
String hideKey=request.getParameter("hideKey");//hide find hideKey

long time=System.currentTimeMillis();

try{
	int cout=Integer.parseInt(counts);
	max_line_count=cout;
}catch(Exception e){
	
}

try{
	File file = new File(filePath);
	if(!file.exists()){
		String info=filePath+" not found!";
		out.print(info);
		System.out.println(info);
	}
	else{
		Map<String, String> filterMap=new HashMap();
		filterMap.put("filter", filter);
		filterMap.put("stop_key", stopKey);
		filterMap.put("hide_key", hideKey);
		List<String> lineList=readLineFile(file, max_line_count, filterMap, null);
		for(String line:lineList){
			out.print(line+"<br/>\n");
		}
	}
}
catch(Exception e){
	out.println(e.getMessage());
}


%>


相關推薦

一個j2ee測試神器方便檢視伺服器日誌工具

功能: 1,能夠將伺服器上的指定的檔案通過瀏覽器倒序顯示處理,如果檔案是系統日誌,則可以用來查日誌資訊。 2,可以倒序顯示指定的行數,預設100行,通過引數count=500可以修改顯示行數。 3,只按行顯示行數,預設最大10000行,支援大檔案或超大檔案,就算檔案有1G。

linux下nginx編譯安裝(抄別人的方便檢視

原路徑:https://blog.csdn.net/youcijibi/article/details/75050993 正式開始前,編譯環境gcc g++ 開發庫之類的需要提前裝好。 如果是ububtu平臺初始安裝編譯安裝則使用如下指令:   apt-get install build-e

使用multiprocessing簡單封裝一個多程序方法方便呼叫

首先,眾所周知多執行緒在python中可能不像其他語言中那麼有效,所以,用的比較多的還是多程序的方法,而multiprocessing庫則給我們提供了很方便的多程序管理方法。 話不多說,程式碼量不大,也不也不難理解,直接上程式碼 from multiprocessing

推薦幾個工具神器方便你的工作和學習______百科常識

1.Taguage 發現引擎 | 思維管家一個通過標籤式語言將你的筆記資料自動精煉為思維地圖的工具,如果你希望借用他人的思維體系來幫助自己拓展思考能力,那麼就在Taguage裡選擇不同的外腦,然後搜尋你需要的內容。在搜尋結果裡你會看到不同的人對同樣一件事有不一樣的思考方式和結論。 2.百度腦圖 百度腦圖其實就

3 分鐘生成一個單元測試報告這個樣式愛了

昨天有個小夥伴問我,有沒有什麼現成的測試報告模板,由於昨天實在比較忙就沒顧上,所以今個有時間趕緊補上。一般力所能及的事,只要我有時間都會為大家解決,但畢竟能力有限做不到的地方小夥伴們也多理解。 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/2020081911435432

Flume實戰三將A伺服器日誌實時採集到B伺服器

架構圖: 技術選型: exec source + memory channel + avro sink avro source + memory channel + logger sink 1)server A 資料收集端 在cd $FLUME_HOME/conf vim exec

docker部署springboot並且檢視執行日誌

docker部署springboot(預設已經安裝好docker) 第一步:構建映象 建立Dockerfile檔案,檔案內容如下: FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD index-1.5.10.RELEASE.ja

檢視伺服器日誌

tail -f /data/tomcat/logs/×××.log   正常時有兩點要求:1、日誌正常滾動更新,若不動,Ctrl+C終止後,重新開始,繼續滾動也可以 2、程序號要不斷的切換,因為多個併發,若一直是同一個程序號,就是有問題  

啟動mysql錯誤解決方案學會檢視錯誤日誌:mysql.sock丟失mysqld_safe啟動報錯

本人還是個菜鳥,下面是我的經驗之談,能解決一些問題,有不對的地方,敬請斧正。 我的是CentOS6.3+MySQL5.1.57。 重啟了一次伺服器後,使用> mysql -u root -p登陸是出現下面的錯誤: ERROR 2002 (HY000): Can’t conn

centos7 搭建rsyslog日誌伺服器收集web伺服器日誌

網上很多rsyslog日誌蒐集伺服器的教程都很亂!自己來寫一篇。 資源有限,在一臺機器上做實驗。 centos7預設已經安裝: [root@QFQLDl155405 2018-07-31]# rpm -qa | grep rsys rsyslog-8.24.0-12.el7.

secure CRT常用的檢視伺服器日誌命令

tail -f  /(日誌檔案目錄)   檢視日誌命令 ctrl+c停止列印 ls  -al  檢視檔案的詳細資訊路徑等 vi  /(日誌檔案目錄)  開啟日誌 /搜尋字元 退出:按ESC後,按“:”,輸入q,敲回車 WinSCP cat主要有三大功能: 1.一次顯示整個

eclipse啟動時報錯顯示檢視log日誌解決最佳方案

首先進入eclipse的工作空間找到.metadata資料夾,然後進入.plugins資料夾,然後找到org.eclipse.e4.workbench進行刪除,然後進行重啟,然後找到project,對

`Tomcat`啟動時未正常啟動檢視日誌檔案

問題如下: Tomcat未正常啟動,在Tomcat 輸出日誌catalina.out 以及配置的日誌輸出檔案中均沒有異常輸出,但是專案並沒有啟動,此時應到localhost.2017-08-27.log 中檢視。

Android Studio上用真機除錯時無法檢視Logcat日誌資訊解決方法

Question 最近在Android Studio上使用真機除錯時,發現在Android Monitor檢視無法檢視Logcat的日誌資訊。(如下圖所示) 折騰了好長時間,嘗試重新安裝驅動,重新連線,重啟手機,重啟adb,重啟Android stu

如何檢視伺服器日誌

一、利用Windows自帶的防火牆日誌檢測入侵   下面是一條防火牆日誌記錄 2005-01-1300:35:04OPENTCP61.145.129.13364.233.189.104495980 2005-01-1300:35:04:表示記錄的日期時間 OPEN:表示開啟連線;如果此處為Close表

mosquitto這麼檢視伺服器日誌

  Mosquitto是一款實現了訊息推送協議MQTT v3.1的開源訊息代理軟體,提供輕量級的,支援可釋出/可訂閱的的訊息推送模式,使裝置對裝置之間的短訊息通訊變得簡單,比如現在應用廣泛的低功耗感測器,手機、嵌入式計算機、微型控制器等移動裝置。  Mosquitto官網: http://mosquitto.

loadrunner測試介面將結果寫入日誌檔案

Action()中使用web_custom_request()方法傳送請求或者F1檢視web_custom_request的使用技巧Action() { web_custom_request( "court_user", //這個是給請求起個名稱,在樹形圖中顯示,不影

網頁中實時檢視伺服器日誌(websocket + node.js實現)

每當我需要檢視linux伺服器的日誌時,我都需要通過SSH客戶端訪問,如果想讓其他人也能檢視日誌,首先需要安裝一個SSH客戶端,然後設定連線資訊,如果安全性高一點的,還需要額外在linux伺服器上配置【檢視日誌使用者】,表示許可權僅限於檢視日誌。每增加一個人想檢視日誌,都需

分享一個 Linux 環境下強力的Python 小工具

場景 Linux 使用者,經常需要在終端檢視一些資料,從檔案裡看 或者網路協議獲取資料並檢視。 比如,檢視檔案裡的json資料;比如,檢視etcd裡存下的資料。 如果直接看cat 或者 curl 得到的資料,如果格式亂掉了 會很痛苦的,而python 的 json.tool 可以在終端裡 把得到的資料格式化

發現一個超級方便的網站神器鏡站網_一鍵映象網站

以下是其網站的內容,僅供參考,不過這個站確實不錯: 鏡站網經過一段時間的開發除錯,已基本完成,並逐漸登上網路平臺供廣大站長及朋友試用。 本站實現功能: 【快速映象】 真正意義上的一鍵映象,可以快捷地、自動地複製該映象中心的所有網站映象到自己的主機,並正常執行。 【