If each of your classes create a new LogFile instance, and the constructor of the LogFile class creates a new appender and adds it to the root logger, then this means that you've attached N copies of the appender to the root logger. This explains why you are seeing the message duplicated in the file, since each appender is writing to the same file.
Is there any reason why you don't have each class get a Logger instance with the same name of the class? This is the standard usage pattern and is very simple and works well: http://logging.apache.org/log4j/1.2/faq.html#2.4 http://logging.apache.org/log4j/1.2/manual.html -----Original Message----- From: DanyLux [mailto:dany.gilgo...@gmail.com] Sent: Wednesday, November 04, 2009 7:22 AM To: log4j-user@logging.apache.org Subject: Log4j over several java classes Hello to all users, I am new on Log4j. I am doing a project in java with eclipse and my project has the following structure: package ----underpackage ----categories ----one ----class1.java ----class2.java ----two ----class3.java ----class4.java <-- Applet ----class5.java ----three ----LogFile.java And some other information: class4 calls class3 and class5 class2 is called by class1 and class1 called by class5. In LogFile i have written the following: public class LogFile { private static final String dirname = "./log/"; //location of the log files private static Logger logger = Logger.getRootLogger(); /** * This is the default constructor */ public LogFile() { try { PatternLayout layout = new PatternLayout( "%d (%c) [%t] %-5p %m%n" ); DailyRollingFileAppender fileAppender = new DailyRollingFileAppender( layout, dirname + "Log.log", "'.'yyyy-MM-dd" ); logger.addAppender( fileAppender ); logger.setLevel(Level.INFO); } catch( Exception ex ) { System.err.println( ex ); } } public void logError(String message){ logger.info("+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+"); logger.info("Write several more information"); logger.error(message); } } And so I called it on the several classes: private static LogFile lfLogging = new LogFile(); ..... lfLogging.logError("Error Message is written here!"); Well I entered it to all the class and the Logfile is written, the only problem is when the method is called to write to logfile then it is not just written once, but it is written 4 times the same. I commented in all class just not in one the lines of logfile calling and then it just write once in the LogFile. Can somebody help me how I have to declare that my LogFile works correctly. Many thanks in advance for your help. Best regards, Dany -- View this message in context: http://old.nabble.com/Log4j-over-several-java-classes-tp26195319p26195319.html Sent from the Log4j - Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-user-h...@logging.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-user-h...@logging.apache.org