2017-01-22 6 views
0

ファイルのログに新しい行が追加されている場合は、行末を読み込むためにApacheのテイラーを使用します。プログラムは行末を表示します。これはLinuxの "tail -f"のようなものです。 。出力コンソールの末尾を取得し、文字列Javaに保存しますか?

出力テールを取得し、下のコードの文字列に保存できますか?

public class LogTailTest { 

/** 
* TailerListener implementation. 
*/ 
static public class ShowLinesListener extends TailerListenerAdapter { 
    @Override 
    public void handle(String line) { 
     System.out.println(line); 
    } 
} 

public static void main(String args[]) { 

    TailerListener listener = new ShowLinesListener(); 
    File file = new File("/home/ubuntu/Desktop/test.log"); 

    Tailer tailer = new Tailer(file, listener, 10000, true, true); 
    tailer.run(); 

    try { 
     Thread.sleep(1000); 
    } catch(InterruptedException ex) { 
     Thread.currentThread().interrupt(); 
    } 
    tailer.stop(); 

} 

} 

私はプログラム上で実行すると、それはあなたが新しい行があなたのプログラムでを尾行されるたびに何をすべきかを定義する出力コンソール

答えて

0

への直接のです。あなたがしなければならないのは、あなたがそれをやりたいためにこのラインに

System.out.println(line); 

を変更され

@Override 
public void handle(String line) { 
    System.out.println(line); 
} 

:この動作は、メソッドクラスShowLinesListenerを扱うに定義されています。すでにcommons-ioライブラリ(TailerListenerTailerListenerAdapterクラスが定義されているライブラリ)を使用しているので、FileUtils.writeStringtoFileメソッドを使用して、別のファイルにちょうどテールされた行の内容を書き込むことができます。

あなたのクラスには、次のようになります。

public class LogTailTest { 

/** 
* TailerListener implementation. 
*/ 
static public class ShowLinesListener extends TailerListenerAdapter { 
    @Override 
    public void handle(String line) { 
     FileUtils.writeStringtoFile(new File("/path/to/file"), 
            line, 
            Charset.defaultCharset()) 
    } 
} 
関連する問題