On Mar 14, 2006, at 12:37 PM, Kamal Ahmed wrote:

Hi,

Here is how I am trying to log a message using log4j:

PatternLayout layout = new PatternLayout();
                wmDfa = new WmDailyFileAppender();
                wmDfa.setName("testOverlappingRollovers");
                wmDfa.setLayout(layout);
                wmDfa.setAppend(true);
                wmDfa.setFile("./log/testOverlappingRollovers.log");
                wmDfa.setDatePattern("'.'yyyy-MM-dd-HH-mm");
                logger.addAppender(wmDfa);
                wmDfa.activateOptions();
                logger.debug("overlappingRollovers---");


I create 2 files testOverlappingRollovers.log.<time and Date> , one and two minute ahead of the current Time , outside log4j, and then I am using the Daily Appender to write to these Files., Only one of the file, I create as
read-only, and the other one as writeable.

Now how do I know if the Appender HAS Started or not, there is nothing being
written by the appender into the log file.

Thanks,
-Kamal.


In your example you are apparently using a custom appender WmDailyFileAppender. It is not very helpful to ask the community to try to analyze a problem in a custom appender since we don't have the code. That is not a request to see the code, it would be much better if you could experiment with the supplied appenders and ask questions involving them since it minimizes the effort for those who may want to help you and any answers may help those who encounter the issue later.

Anytime you ask a question, please identify the version of log4j used. In particular, the log4j 1.2 and 1.3 code base are substantially different.

You should call layout.activateOptions() though I don't think it would effect the behavior on either log4j 1.2 or 1.3.

org.apache.log4j.DailyRollingFileAppender (DRFA) is not asynchronous, so it makes little sense to ask if it "started".

DailyRollingFileAppender does not attempt to determine if there have been any previously written log files. The presence of your manually created log files should have no effect until a rollover. Since you only show one log statement, then there can't be a rollover since there hasn't been a transition over a time boundary. Reviewing the code, I'd expect that you'd have an entry for "overlappingRollovers---" in ./log/testOverlappingRollovers.log (assuming that you have such a directory and that you have write privileges). You would only get a file with the date pattern after you have crossed a time boundary, you example if you added the following lines:

//   sleep for a minute
Thread.sleep(60000);
//   should trigger a rollover
logger.debug("Completed waiting for 60 seconds);

After that point, you should have a testOverlappingRollovers.log.2005- * containing "overlappingRollovers---" and a fresh testOverlappingRollovers.log containing "Completed waiting for 60 seconds".

The log4j 1.2 DailyRollingFileAppender does have know problems dealing with locked files, but as its use is widespread, there is little we would want to do to change it at this time. log4j 1.3 adds a new RollingFileAppender architecture which should be more robust in the face of locked files or unexpected file permissions.

I'm sure you could gather much more information of the behavior by stepping through your example in a debugger. That is usually the best way to figure out what is going on if you get surprised by the behavior. Sometimes the behavior is wrong and you should file a bug report. Sometimes the behavior is as documented and your expectations were wrong. Sometimes you are not sure and that is the right time to ask questions here, but you are much more likely to get a helpful response if you do your homework first before asking for help.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to