That's easy ... console output is from System.out.println(). How else are
you going to test the logger if you can't trust it... :-)
However, I moved the log4j.properties files around and that may have been it
- an old one hiding in the directory tree.
So this code gives the expected results:
Appender t = LogManager.getRootLogger().getAppender( "test");
if(null == t) {
System.out.println("LogManager.getRootLogger().getAppender(\"test\")
is null");
} else if(t instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)t;
System.out.println("LogManager.getRootLogger().getAppender(\"test\")
is FileAppender " + fileAppender.getFile());
} else {
System.out.println("LogManager.getRootLogger().getAppender(\"test\")
is something else");
}
LogManager.getRootLogger().getAppender("test") is FileAppender
somethingelse.log
But the other path still fails. I expanded the test program to this:
public static void main(String[] args) {
Logger logger = null;
logger = logger.getLogger("test");
logger.info("Beginning logger test");
int countOfLoggers = 0;
Enumeration loggers =
LogManager.getLoggerRepository().getCurrentLoggers();
if(loggers != null){
while(loggers.hasMoreElements()){
Logger l = (Logger)loggers.nextElement();
System.out.println("Logger #" + (++countOfLoggers) + " is " +
l.getName());
int countOfAppenders = 0;
Enumeration allAppenders = l.getAllAppenders();
if(null == allAppenders) {
System.out.println("\tgetAllAppenders() returned null");
continue;
}
if(allAppenders instanceof org.apache.log4j.helpers.NullEnumeration)
{
System.out.println("\tgetAllAppenders() returned
org.apache.log4j.helpers.NullEnumeration");
continue;
}
while(allAppenders.hasMoreElements()){
Appender t = (Appender)allAppenders.nextElement();
if(null == t) {
System.out.println("\tAppender is null");
} else {
countOfAppenders++;
if(t instanceof FileAppender) {
FileAppender fileAppender = (FileAppender)t;
System.out.println("\tAppender " + countOfAppenders + " " +
t.getName() + " is FileAppender " + fileAppender.getFile());
} else {
System.out.println("\tAppender " + countOfAppenders + " " +
t.getName() + " is something else");
}
}
}
}
}
}
}
And it gives this:
Logger #1 is test
getAllAppenders() returned org.apache.log4j.helpers.NullEnumeration
-----Burton
_____
From: Paul Smith [mailto:[EMAIL PROTECTED]
Sent: Thursday, December 01, 2005 1:50 PM
To: Log4J Users List
Subject: Re: Silly ? - How do I figure out the name of the file the log is
being written to?
if this is your log4j.properties:
On 02/12/2005, at 6:40 AM, Burton Strauss wrote:
log4j.rootLogger=debug,test
log4j.appender.test=org.apache.log4j.DailyRollingFileAppender
log4j.appender.test.Append=false
log4j.appender.test.File=testbed.log
log4j.appender.test.layout=org.apache.log4j.SimpleLayout
And you're getting output on the consoled, then I would suggest that your
test is not actually configuring with the above property file, because there
is no ConsoleAppender defined, I'm not sure how you're getting your test
output! :)
Add:
log4j.debug=true
In your property file and make sure you see log4j initialization output on
the console, that will show you it setting up the file appender.
Paul