rsyslog
デーモンの再起動後、 syslog4j 0.9.46は Java プロセスを再起動しないと syslog に正常に書き込むことができなくなります。例外はスローされず、ロギングがまだ機能しているかどうかを API 経由で確認する方法もありません。syslog4j をrsyslog
再起動から回復させる方法、または接続を手動で再起動できるように少なくとも例外をスローする方法はありますか?
サンプルコード:
import java.util.Scanner;
import org.productivity.java.syslog4j.SyslogConstants;
import org.productivity.java.syslog4j.SyslogIF;
import org.productivity.java.syslog4j.impl.unix.socket.UnixSocketSyslog;
import org.productivity.java.syslog4j.impl.unix.socket.UnixSocketSyslogConfig;
public class SysLogging {
public static void main(String[] args) {
UnixSocketSyslogConfig cfg = new UnixSocketSyslogConfig();
cfg.setFacility(SyslogConstants.FACILITY_LOCAL1);
cfg.removeAllMessageModifiers();
cfg.setIdent(null);
cfg.setThrowExceptionOnWrite(true);
cfg.setWriteRetries(5);
SyslogIF log = new UnixSocketSyslog();
log.initialize(SyslogConstants.UNIX_SOCKET, cfg);
Scanner scanner = new Scanner(System.in);
System.out.println("type quit to quit, anything else to log");
String line = scanner.nextLine();
while(!line.equals("quit")) {
log.info(line);
System.out.println("type quit to quit, anything else to log");
line = scanner.nextLine();
}
scanner.close();
}
}
上記のコードは、が再起動されるまで、あなたが思うように機能しますrsyslog
。その時点で、syslog にメッセージは表示されなくなりますが、それ以外はすべて機能しているように見えます。