導航:首頁 > 編程語言 > java解析日誌

java解析日誌

發布時間:2022-04-26 13:11:56

java日誌分析

File,socket完善支持遠程文件讀取,這沒問題的;
日誌文件如果很龐大,可以分割日誌文件,按合適的規則建立新日誌文件,沒有必要放在單個文件吧

㈡ 如何用java分析 tomcat訪問日誌

java代碼中可以通入如下代碼調用Linux命令
Runtime runTime = Runtime.getRuntime();
Process pro = runTime.exec( new String[]{"/bin/sh","-c", command});
InputStream fis = pro.getInputStream();
InputStreamReader isr = new InputStreamReader(fis,encode);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder build = new StringBuilder();
while ((line = br.readLine()) != null) {
build.append(line+"\r\n");
}
通過返回值進行具體的分析。

㈢ 怎麼用java讀取windows系統日誌

您好,很高興為您解答。

獲取相關信息的簡單的方法

importjava.io.*;
importcom.sun.management.OperatingSystemMXBean;
importsun.management.ManagementFactory;
publicclassTst{
publicstaticStringpt="D:\abc.txt";
publicTst(){
}
publicstaticvoidmain(String[]args)throwsException{
//free和use和total均為KB
longfree=0;
longuse=0;
longtotal=0;
intkb=1024;
Runtimert=Runtime.getRuntime();
total=rt.totalMemory();
free=rt.freeMemory();
use=total-free;
System.out.println("系統內存已用的空間為:"+use/kb+"MB");
System.out.println("系統內存的空閑空間為:"+free/kb+"MB");
System.out.println("系統總內存空間為:"+total/kb+"MB");
OperatingSystemMXBeanosmxb=(OperatingSystemMXBean)
ManagementFactory.getOperatingSystemMXBean();
longphysicalFree=osmxb.getFreePhysicalMemorySize()/kb;
longphysicalTotal=osmxb.getTotalPhysicalMemorySize()/kb;
longphysicalUse=physicalTotal-physicalFree;
Stringos=System.getProperty("os.name");
System.out.println("操作系統的版本:"+os);
System.out.println("系統物理內存已用的空間為:"+physicalFree+"MB");
System.out.println("系統物理內存的空閑空間為:"+physicalUse+"MB");
System.out.println("總物理內存:"+physicalTotal+"MB");
//獲得線程總數
ThreadGroupparentThread;
for(parentThread=Thread.currentThread().getThreadGroup();
parentThread
.getParent()!=null;parentThread=
parentThread.getParent())
;
inttotalThread=parentThread.activeCount();
System.out.println("獲得線程總數:"+totalThread);
}
}


// 3.操作系統信息

//a)取到當前操作系統的名稱:
publicStringgetPlatformName(){
Stringhostname="";
try
{
hostname=InetAddress.getLocalHost().getHostName();
}catch
(Exceptionexc){
Sigarsigar=newSigar();
try{
hostname=
sigar.getNetInfo().getHostName();
}catch(SigarExceptione)
{
hostname="localhost.unknown";
}finally
{
sigar.close();
}
}
returnhostname;
}
//b)取當前操作系統的信息
publicvoidtestGetOSInfo(){
OperatingSystemOS=
OperatingSystem.getInstance();
//操作系統內核類型如:
386、486、586等x86
System.out.println("OS.getArch()="+
OS.getArch());
System.out.println("OS.getCpuEndian()="
+OS.getCpuEndian());//
System.out.println("OS.getDataModel()="
+OS.getDataModel());//
//系統描述
System.out.println("OS.getDescription()
="+OS.getDescription());
System.out.println("OS.getMachine()="
+OS.getMachine());//
//操作系統類型
System.out.println("OS.getName()="+
OS.getName());
System.out.println("OS.getPatchLevel()="
+OS.getPatchLevel());//
//操作系統的賣主
System.out.println("OS.getVendor()
="+OS.getVendor());
//
賣主名稱
System.out
.println("OS.getVendorCodeName()="
+OS.getVendorCodeName());
//
操作系統名稱
System.out.println("OS.getVendorName()="
+OS.getVendorName());
//
操作系統賣主類型
System.out.println("OS.getVendorVersion()="
+OS.getVendorVersion());
//
操作系統的版本號
System.out.println("OS.getVersion()="
+OS.getVersion());
}

// 4.資源信息(主要是硬碟)

//
a)取硬碟已有的分區及其詳細信息(通過sigar.getFileSystemList()來獲得FileSystem列表對象,然後對其進行編歷):
public
voidtestFileSystemInfo()throwsException{
Sigarsigar=new
Sigar();
FileSystemfslist[]=sigar.getFileSystemList();
//Stringdir
=System.getProperty("user.home");//當前用戶文件夾路徑
for(inti=0;i<
fslist.length;i++){
System.out.println(" ~~~~~~~~~~"+i
+"~~~~~~~~~~");
FileSystemfs=fslist[i];
//
分區的盤符名稱
System.out.println("fs.getDevName()="
+fs.getDevName());
//分區的盤符名稱
System.out.println("fs.getDirName()=
"+fs.getDirName());
System.out.println("fs.getFlags()="+
fs.getFlags());//
//文件系統類型,比如
FAT32、NTFS
System.out.println("fs.getSysTypeName()="
+fs.getSysTypeName());
//
文件系統類型名,比如本地硬碟、光碟機、網路文件系統等
System.out.println("fs.getTypeName()="
+fs.getTypeName());
//文件系統類型
System.out.println("fs.getType()="
+fs.getType());
FileSystemUsageusage=null;
try{
usage=
sigar.getFileSystemUsage(fs.getDirName());
}catch(SigarExceptione)
{
if(fs.getType()==2)
throw
e;
continue;
}
switch(fs.getType()){
case0://
TYPE_UNKNOWN:未知
break;
case1://
TYPE_NONE
break;
case2://TYPE_LOCAL_DISK:本地硬碟
//
文件系統總大小
System.out.println("Total="+usage.getTotal()+
"KB");
//文件系統剩餘大小
System.out.println("Free="+usage.getFree()
+"KB");
//文件系統可用大小
System.out.println("Avail="
+usage.getAvail()+"KB");
//文件系統已經使用量
System.out.println("Used
="+usage.getUsed()+"KB");
doubleusePercent=usage.getUsePercent()*
100D;
//文件系統資源的利用率
System.out.println("Usage="+usePercent
+"%");
break;
case3://TYPE_NETWORK:網路
break;
case
4://TYPE_RAM_DISK:快閃記憶體
break;
case5://TYPE_CDROM
:光碟機
break;
case6://TYPE_SWAP
:頁面交換
break;
}
System.out.println("DiskReads="
+usage.getDiskReads());
System.out.println("DiskWrites="
+usage.getDiskWrites());
}
return;
}

如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】

希望我的回答對您有所幫助,望採納!

~ O(∩_∩)O~

㈣ java怎麼解析syslog伺服器的日誌

設置定時任務 定時到其他機器去取 比如 ftp 登陸後 get 或者其他機器主動 put到syslog主機就可以了

㈤ java定時讀取日誌文件

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.io.ByteArrayInputStream;

class Reader implements Runnable {
Reader(String filename) {
this.filename = filename;
}

private String filename;
private long filelength = 0;
private int count=0;
@Override
public void run() {
while (true) {
try {
File f = new File(filename);
long nowlength = f.length();
long readlength = nowlength - filelength;
if (readlength == 0) {
Thread.sleep(1000);
continue;
}

RandomAccessFile rf = new RandomAccessFile(f, "r");
// 移動文件指針到上次讀的最後
rf.seek(filelength);

filelength=nowlength;

byte[] b = new byte[(int) readlength];
rf.read(b, 0, b.length);
rf.close();

BufferedReader br=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(b)));
String str=null;
count++;
System.out.println("第"+count+"次讀到的內容:");
while((str=br.readLine())!=null){
System.out.println(str);
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

class Writer implements Runnable{
Writer(String filename) {
this.filename = filename;
}
private String filename;
private int count=0;

@Override
public void run() {
while (count++<100){
try {
PrintWriter pw=new PrintWriter(new FileWriter(filename,true));
pw.append(""+count).append("\t").append(""+System.currentTimeMillis()).append("寫入的內容").append("\r\n");
pw.close();
Thread.sleep(100);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

}

public class ReadFileFromTrail {
public static void main(String[] args) {
Reader reader=new Reader("d:\\test.log");
Writer writer=new Writer("d:\\test.log");
new Thread(reader).start();
new Thread(writer).start();
}

}

㈥ java正則表達式解析Mysql資料庫錯誤日誌

System.out.println( new ReadSingleLineNumber().test2());
}

MySqlLog test2(){
String log = "2018-03-21T13:46:01.185376Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).";
String[] head = log.substring(0, log.indexOf(']') + 1).split(" ");
return new MySqlLog(head[0].trim(), Integer.parseInt(head[1].trim()), head[2].trim().substring(head[2].trim().indexOf('[') + 1, head[2].trim().indexOf(']')), log.substring(log.indexOf(']') + 2).trim());
}

class MySqlLog{
String time;
int index;
String level;
String msg;
public MySqlLog(String time, int index, String level, String msg) {
this.time = time;

㈦ java來解析日誌 文件有什麼好的思路

你可以使用log4j,第一次用可能需要了解一下相關配置,肯定比你自己寫一個功能強大很多,而且已很成熟。
比如:文本文件日誌,資料庫日誌,郵件發送日誌,http發送日誌,等詳細可以看下log4j的appener

㈧ JAVA解析日誌文件!怎麼解析啊

SAXReader reader = new SAXReader(); Document document = reader.read(file.getInputStream()); Element root document.getRootElement();
Element header = root.element("RequestData");
在根據節點名稱逐步獲取

㈨ 怎麼用就java 做日誌分析啊

日誌分2種,
一種是存DB的,在db里存各種操作記錄,訪問記錄等等,是存在許多表裡的記錄。
另一種是存文件的,記錄的是伺服器輸出的log信息。
看你有統計數據的需求應該去分析DB里的日誌表,而不是去分析日誌文件。你把需求理解錯了

㈩ 怎樣分析java線程堆棧日誌

itjobJava老師講過:1) 線程堆棧概述及基礎知識
2) 線程堆棧的生成原理以及相關工具
3) 不同JVM線程堆棧的格式的差異(Sun HotSpot、IBM JRE、Oracal JRockit)
4) 線程堆棧日誌介紹以及解析方法
5) 線程堆棧的分析和相關的技術
6) 常見的問題模板(線程竟態、死鎖、IO調用掛死、垃圾回收/OutOfMemoryError問題、死循環等)
7) 線程堆棧問題實例分析
我希望這一系列的培訓能給你帶來確實的幫助,所以請持續關注每周的文章更新。
但是如果我在學習過程中有疑問或者無法理解文章中的內容該怎麼辦?
不用擔心,把我當做你的導師就好。任何關於線程堆棧的問題都可以咨詢我(前提是問題不能太low)。請隨意選擇下面的幾種方式與我取得聯系:
1) 直接本文下面發表評論(不好意思的話可以匿名)
2) 將你的線程堆棧數據提交到Root Cause Analysis forum
3) 發Email給我,地址是 @[email protected]
能幫我分析我們產品上遇到的問題么?
當然可以,如果你願意的話可以把你的堆棧現場數據通過郵件或論壇 Root Cause Analysis forum發給我。處理實際問題是才是學習提升技能的王道。
我真心期望大家能夠喜歡這個培訓。所以我會盡我所能去為你提供高質量的材料,並回答大家的各種問題。
在介紹線程堆棧分析技術和問題模式之前,先要給大家講講基礎的內容。所以在這篇帖子里,我將先覆蓋到最基本的內容,這樣大家就能更好的去理解JVM、中間件、以及Java EE容器之間的交互。
Java VM 概述
Java虛擬機是Jave EE 平台的基礎。它是中間件和應用程序被部署和運行的地方。
JVM向中間件軟體和你的Java/Java EE程序提供了下面這些東西:
– (二進制形式的)Java / Java EE 程序運行環境
– 一些程序功能特性和工具 (IO 基礎設施,數據結構,線程管理,安全,監控 等等.)
– 藉助垃圾回收的動態內存分配與管理
你的JVM可以駐留在許多的操作系統 (Solaris, AIX, Windows 等等.)之上,並且能根據你的物理伺服器配置,你可以在每台物理/虛擬伺服器上安裝1到多個JVM進程.
JVM與中間件之間的交互
下面這張圖展示了JVM、中間件和應用程序之間的高層交互模型。
如你所見,標准Java EE應用程序的線程的分配實在中間件內核與JVM之間完成的。(當然也有例外,應用程序可以直接調用API來創建線程,這種做法並不常見,而且在使用的過程中也要特別的小心)
同時,請注意一些線程是由JVM內部來進行管理的,典型的例子就是垃圾回收線程,JVM內部使用這個線程來做並行的垃圾回收處理。
因為大多數的線程分配都是由Java EE容器完成的,所以能夠理解和認識線程堆棧跟蹤,並能從線程堆棧數據中識別出它來,對你而言很重要. 這可以讓你能夠快速的知道Java EE容器正要執行的是什麼類型的請求.
從一個線程轉儲堆棧的分析角度來看,你將能了解從JVM發現的線程池之間的不同,並識別出請求的類型.
最後一節會向你提供對於HotSop VM而言什麼是JVM線程堆棧的一個概述,還有你將會遇到的各種不同的線程. 而對 IBM VM 線程堆棧形式詳細內容將會在第四節向你提供.
請注意你可以從根本原因分析論壇獲得針對本文的線程堆棧示例.
JVM 線程堆棧——它是什麼?
JVM線程堆棧是一個給定時間的快照,它能向你提供所有被創建出來的Java線程的完整清單.

閱讀全文

與java解析日誌相關的資料

熱點內容
銀河麒麟字體庫存在哪個文件夾 瀏覽:956
魔獸加丁伺服器的航空叫什麼 瀏覽:152
花冠改裝案例哪個app多 瀏覽:515
成績單app哪個好用 瀏覽:140
北美程序員vs國內程序員 瀏覽:181
php解析xml文檔 瀏覽:121
石墨文檔APP怎麼橫屏 瀏覽:185
牆主鋼筋加密和非加密怎麼看 瀏覽:144
金山區文件夾封套定製 瀏覽:708
soho程序員 瀏覽:672
java位元組截取 瀏覽:525
php提交作業 瀏覽:815
房產還沒解壓可以辦理贈予嗎 瀏覽:224
java毫秒轉分鍾 瀏覽:753
模式識別中文pdf 瀏覽:774
c語言平均數字編譯錯誤 瀏覽:171
單片機算交流 瀏覽:45
php自適應網站 瀏覽:467
2b2t伺服器怎麼獲得許可權 瀏覽:816
c語言javaphp 瀏覽:804