在重新启动
样例代码:
rsyslog
守护进程后,syslog4j 0.9.46 无法成功写入 syslog,必须重新启动 java 进程。没有抛出任何异常,并且我看不到通过 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
重新启动之前可以正常工作。但此时,尽管其他所有内容都正常,系统日志中不再出现任何消息。