私が持っているかなり奇妙な問題。
データベース作業を行うために、10分ごとに小さなJavaアプリケーションを実行しています。そのアクティビティをファイルに記録します。これは、ログ ファイルの 4 つの個別のコピーが不可解に作成される cron ジョブとして実行される場合を除いて、完全にうまく機能します。a.log、a.log0、a.log1、a.log2。
ファイルにロックがあるときにこれが行われることは理解していますが、これが当てはまる理由、特にcronでのみ発生する理由は考えられません。
正しいファイルを含む 4 つのファイルすべてにログ情報を書き込むことができるのに、なぜ余分な 3 つのファイルを作成するのでしょうか?
アプリケーションの寿命が来たら FileHandlers を閉じるので、そうではありません。セットアップは簡単です:
rootLogger = LogManager.getLogManager().getLogger("");
//remove current handlers
for (Handler h : rootLogger.getHandlers()){
rootLogger.removeHandler(h);
}
Handler infohandler = new FileHandler ("/dir/info.log", true);
Handler errorhandler = new FileHandler ("/dir/error.log", true);
Formatter format = new CustomFormatter();
infohandler .setFormatter(format);
errorhandler.setFormatter(format);
infohandler .setLevel(Level.INFO);
errorhandler.setLevel(Level.WARNING);
rootLogger.addHandler(infohandler);
rootLogger.addHandler(errorhandler);
と:
infohandler.close(); errorhandler.close();
現時点では、次のように関数を 1 回だけ呼び出しています。
rootLogger.log(Level.INFO, "Log this");
cron ジョブは非常に単純です。
*/10 * * * * root /usr/bin/java -jar /dir/db_clean.jar
何か案は?これは私を困惑させています。
パーミッションはすべて -rw-r--r-- であり、root が所有しています。