Using log4j to log messages to the TCP/IP stream
December 20, 2007
Filed under Uncategorized
Tags: code, java, log4j, logging, SocketAppender
Overview
Using org.apache.log4j.net.SocketAppender to log messages to a socket. The idea is that, incoming messages can be interpreted and possibly displayed graphically. What follows is a quick and dirty approach.
log4j.properties
log4j.appender.socket=org.apache.log4j.net.SocketAppender log4j.appender.socket.port=56445 log4j.appender.socket.remoteHost=localhost log4j.rootCategory=all, socket
SocketLoggerTest.java
package com.filler.l4j; import org.apache.log4j.Logger; public class SocketLoggerTest { private static Logger log = Logger.getLogger(SocketLoggerTest.class); public static void main(String args[]) { log.trace("tracing you, because you are idiot"); log.debug("no more debugs"); log.info("do you want information"); log.warn("warning up"); log.error("to err is computer"); log.fatal("fat al"); } }
SocketLoggerListener.java
import java.net.ServerSocket; import java.net.Socket; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.EOFException; import java.io.IOException; import org.apache.log4j.spi.LoggingEvent; public class SocketLoggerListener { public static void main(String args[]) throws IOException { final ServerSocket serverSocket = new ServerSocket(56445); final Socket socket = serverSocket.accept(); serverSocket.close(); final InputStream is = socket.getInputStream(); final ObjectInputStream ois = new ObjectInputStream(is); while(true) { final Object o; try { o = ois.readObject(); } catch(EOFException eofe) { break; } catch(ClassNotFoundException cnfe) { continue; } if(o instanceof LoggingEvent) { final LoggingEvent logEvent = (LoggingEvent) o; processEvent(logEvent); } } ois.close(); socket.close(); } public static void processEvent(LoggingEvent logEvent) { System.out.print("[" + logEvent.getLevel() + "] "); System.out.println(logEvent.getMessage()); } }
Running on Linux
javac -classpath log4j.jar:./ SocketLoggerListener.java java -classpath log4j.jar:./ SocketLoggerListener
This will make the ServerSocket listen to the port. Now, use
javac -classpath log4j.jar:./ -d ./ SocketLoggerTest java -classpath log4j.jar:./ com.filler.l4j.SocketLoggerTest
Running on Windows
javac -classpath log4j.jar;./ SocketLoggerListener.java java -classpath log4j.jar;./ SocketLoggerListener
This will make the ServerSocket listen to the port. Now, use
javac -classpath log4j.jar;./ -d ./ SocketLoggerTest java -classpath log4j.jar;./ com.filler.l4j.SocketLoggerTest
Better use an ant build file to do the job elegantly.
Hello! This is my first comment here so I just wanted to give a quick shout out and say I genuinely enjoy reading through your posts. Can you recommend any other blogs/websites/forums that deal with the same subjects? Thank you so much!
hello to all! =)
can someone tell me how i can search funny videos with cats on http://yuotube.com/ ?
im a newbie in computers :(
Nice code. I’m beginning to like those small snippets of yours. Thanks a lot. – Arild