調べればたくさんのサイトが検索結果に出てくると思うけど、とりあえず備忘録ということで、標準エラー出力をファイルに出力する方法。
標準エラー出力だけをファイルに出力させたい場合は、
$ test.sh 2> logfile.log
でよい。標準出力も出したい場合は、
$ touch logfile.log
$ test.sh 1>> logfile.log 2>> logfile.log
でよさそう。どちらが先に書き出されるかわからないので、前もってログファイルを作成しておいたほうがいいかも。
画面とファイルの両方に出力する場合は、標準出力も混ざるけど
$ test.sh 2>&1 | tee logfile.log
とすればよい。
じゃあ実際に動かしてみるとどうなるかというと…。
まず標準出力と標準エラー出力を出すためのプログラムを作って確認。
$ cat HelloWorld.java
import java.util.List;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
List<String> list = null;
System.out.println(list.get(0));
}
}
コンパイルして
$ javac HelloWorld.java
実行。
$ java HelloWorld 2> logfile.log
Hello World
$ cat logfile.log
Exception in thread "main" java.lang.NullPointerException
at HelloWorld.main(HelloWorld.java:6)
tee を使って画面とファイル出力。
$ java HelloWorld 2>&1 | tee logfile.log
Hello World
Exception in thread "main" java.lang.NullPointerException
at HelloWorld.main(HelloWorld.java:6)
$ cat logfile.log
Hello World
Exception in thread "main" java.lang.NullPointerException
at HelloWorld.main(HelloWorld.java:6)
tee を使って標準エラーだけをファイル出力する方法は、ちょっと調べてみたけどかなり面倒そうなので省略。
コメント