I'd like to create a Receiver
to gather and manage logs send by JMSAppender. Now it works only 30 seconds (Thread.sleep(30000);
), but I need it to be waiting for all logs from system. How can I do this if I need to close pw.close();
to see all logs in file? From file I load my logs to log viewer and I'd like to see them in real time.
public class Receiver implements MessageListener {
PrintWriter pw = new PrintWriter("result.log");
public Receiver() throws Exception {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection conn = factory.createConnection();
Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
MessageConsumer consumer = sess.createConsumer(sess.createTopic("logTopic"));
consumer.setMessageListener(this);
Thread.sleep(30000);
consumer.close();
sess.close();
conn.close();
pw.close();
System.exit(1);
}
public static void main(String[] args) throws Exception {
new Receiver();
}
public void onMessage(Message message) {
try {
LoggingEvent event = (LoggingEvent) ((ActiveMQObjectMessage) message).getObject();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
String nowAsString = df.format(new Date(event.getTimeStamp()));
System.out.println("zapisujemy do pliku");
pw.println("["+ nowAsString + "]" +
" [" + event.getThreadName()+"]" +
" ["+ event.getLoggerName() + "]" +
" ["+ event.getMessage()+"]");
} catch (Exception e) {
e.printStackTrace();
}
}
}