Direct Logs to Remote System With Log4j
If an application is running on a remote system, you need the logs on your local machine. Learn how to do direct logs to whichever machine you desire.
Join the DZone community and get the full member experience.Join For Free
Logging is one of the most important aspects of developing programs. Logs provide us with information about the behavior of programs, whether the behavior is expected or not.
Log4j is a very popular package for logging purpose written in Java. (Note: This article assumes that you are familiar with Log4j and already using Log4j.)
Sometimes, we need the logs on different machines. Let's consider that the application is running on a remote system and we need the logs on our local machine.
Hence, the following question arises.
How Can I Direct Logs to a Desirable Machine?
There are some simple steps to do this:
log4j.properties files on the sender side. Use
SocketAppender to direct logs to another machine. See the following
log4j.rootLogger=DEBUG, server log4j.appender.server=org.apache.log4j.net.SocketAppender log4j.appender.server.Port=4712 log4j.appender.server.RemoteHost=loghost log4j.appender.server.ReconnectionDelay=10000
log4j-reciever.properties files on the reciever side. See the following file:
log4j.rootLogger=DEBUG, file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=logfile.log log4j.appender.file.MaxFileSize=1MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n
Run the following command on the reciever side:
java -classpath log4j-path.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-reciever.properties
After this setup, run your program/application, and you will get logs at your desirable machine.
Opinions expressed by DZone contributors are their own.