To create multiple log files with log4j based on folder name Code Answer

Hello Developer, Hope you guys are doing great. Today at Tutorial Guruji Official website, we are sharing the answer of To create multiple log files with log4j based on folder name without wasting too much if your time.

The question is published on by Tutorial Guruji team.

I am having multiple folders with each folder having few xml’s.

While unmarshalling XMls in for loop at the starting of the loop i am setting folder variable based on the folder xml’s i am unmarshalling . But i am not able to change the value of folder varialbe in the end.

Log4j file :

log4j.rootLogger=DEBUG, theFileAppender log4j.category.org.exolab.castor.xml=ERROR, theFileAppender log4j.category.org.castor.core.util=ERROR, theFileAppender

log4j.appender.theFileAppender=org.apache.log4j.FileAppender log4j.appender.theFileAppender.File = ${folder}/error.log

log4j.appender.theFileAppender.Append=false

log4j.appender.file.MaxFileSize=10MB

log4j.appender.file.MaxBackupIndex=1 log4j.appender.theFileAppender.layout=org.apache.log4j.PatternLayout log4j.appender.theFileAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c %x - %m%n

Starting of the loop i am setting the folder :

System.setProperty("folder", "E:/Logging/folderName");

At the end of loop : i am setting the folder by :

Properties properties = new Properties(System.getProperties()); properties.setProperty("folder","E:/Logging/folderName");

folderName is my folder name.

Its creating the required folder but its appending to the error log file created in the folder which is created at the starting of loop.

Please help me how to set the variable .

Answer

You can change the folder by invoking log4j API like this:

Getting your root logger and then modifying your appender by name (in this case, as your question says: “theFileAppender”).

String logFolderName = "newfoldername";
String logFilePath = "E:/Logging/" + logFolderName + "/error.log";

Logger logger = Logger.getRootLogger();
FileAppender appender = (FileAppender)logger.getAppender("theFileAppender");
appender.setFile(logFilePath);
appender.activateOptions();

As you can see, you just need to modify your logFolderName variable according to your needs for the new log file to be created.

We are here to answer your question about To create multiple log files with log4j based on folder name - If you find the proper solution, please don't forgot to share this with your team members.

Related Posts

Tutorial Guruji