3

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 にメッセージは表示されなくなりますが、それ以外はすべて機能しているように見えます。

4

1 に答える 1