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 FreeLogging 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:
Change the log4j.properties
files on the sender side. Use SocketAppender
to direct logs to another machine. See the following log4j.properties
files:
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
Modify the 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.
Comments