java中日誌文件的讀取,java查看日誌的命令

本文目錄一覽:

java快速讀取日誌文件最後一行數據,日誌文件非常大。

package cn.com.songjy.test.io;  

  

import java.io.FileNotFoundException;  

import java.io.IOException;  

import java.io.RandomAccessFile;  

  

/** 

 * 從最後一行開始讀取 

 */  

public class FromEndRF {  

  

    /** 

     *  

     * @param filename 目標文件 

     * @param charset 目標文件的編碼格式 

     */  

    public static void read(String filename, String charset) {  

  

        RandomAccessFile rf = null;  

        try {  

            rf = new RandomAccessFile(filename, “r”);  

            long len = rf.length();  

            long start = rf.getFilePointer();  

            long nextend = start + len – 1;  

            String line;  

            rf.seek(nextend);  

            int c = -1;  

            while (nextend  start) {  

                c = rf.read();  

                if (c == ‘\n’ || c == ‘\r’) {  

                    line = rf.readLine();  

                    if (line != null) {  

                        System.out.println(new String(line  

                                .getBytes(“ISO-8859-1”), charset));  

                    } else {  

                        System.out.println(line);  

                    }  

                    nextend–;  

                }  

                nextend–;  

                rf.seek(nextend);  

                if (nextend == 0) {// 當文件指針退至文件開始處,輸出第一行  

                    // System.out.println(rf.readLine());  

                    System.out.println(new String(rf.readLine().getBytes(  

                            “ISO-8859-1”), charset));  

                }  

            }  

        } catch (FileNotFoundException e) {  

            e.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

        } finally {  

            try {  

                if (rf != null)  

                    rf.close();  

            } catch (IOException e) {  

                e.printStackTrace();  

            }  

        }  

    }  

  

    public static void main(String args[]) {  

        read(“mynewfile.txt”, “UTF-8”);  

    }  

}

說明:以上是一個倒著讀取文件的案例,可以根據此案例,結合自己的實際需求來設計自己的代碼。另外,如果是web應用或其它持續型應用,可以嘗試利用單獨線程保持文件打開或將讀取位置存儲在內存中。

java怎麼讀取windows 事件日誌 文件

您好,很高興為您解答。日誌文件在哪個目錄,用fileinputstream讀文件就行了

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

public class FileReaderTest {

static ListString logs = new ArrayListString();

public static ListString readFile(File f) throws IOException {

if (f == null || !f.exists()) {

return null;

}

ListString list = new ArrayListString();

String encoding = “UTF-8”;

InputStreamReader read = new InputStreamReader(new FileInputStream(f),

encoding);

BufferedReader br = new BufferedReader(read);

String line = null;

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();

}

}

log4j的使用,即java該如何使用日誌文件

java使用日誌文件log4j的方法:

1、 新建一個Java工程,導入Log4j包,pom文件中對應的配置代碼如下:

!– log4j support —

dependency

   groupIdlog4j/groupId

   artifactIdlog4j/artifactId

   version1.2.17/version

/dependency

2、resources目錄下創建log4j.properties文件

### 設置###

log4j.rootLogger = debug,stdout,D,E

### 輸出信息到控制抬 ###

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target = System.out

log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 輸出DEBUG 級別以上的日誌到=/home/duqi/logs/debug.log ###

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender

log4j.appender.D.File = /home/duqi/logs/debug.log

log4j.appender.D.Append = true

log4j.appender.D.Threshold = DEBUG

log4j.appender.D.layout = org.apache.log4j.PatternLayout

log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] – [ %p ]  %m%n

### 輸出ERROR 級別以上的日誌到=/home/admin/logs/error.log ###

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

log4j.appender.E.File =/home/admin/logs/error.log

log4j.appender.E.Append = true

log4j.appender.E.Threshold = ERROR

log4j.appender.E.layout = org.apache.log4j.PatternLayout

log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] – [ %p ]  %m%n

3、輸出日誌的例子如下

package com.javadu.log;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Log4JTest {

   private static final Logger logger = LoggerFactory.getLogger(Log4JTest.class);

   public static void main(String[] args) {

       // 記錄debug級別的信息

       logger.debug(“This is debug message.”);

       // 記錄info級別的信息

       logger.info(“This is info message.”);

       // 記錄error級別的信息

       logger.error(“This is error message.”);

   }

}

4、輸出結果

首先,控制台輸入如下圖所示:

然後,查看/Users/duqi/logs目錄下的debug.log和error.log文件,內容分別如下,可以看出:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/190135.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 13:54
下一篇 2024-11-29 13:54

相關推薦

發表回復

登錄後才能評論