You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Dan Tarkenton <da...@tarksoft.com> on 2004/07/07 18:00:18 UTC
[logging] [digester maybe?] Is this correct syntax for commons-logging?
Hello all.
I have a web app that uses Log4J. I realize that commons-logging.jar
just provides an interface on top of a logging implementation such as
Log4J. I am pretty sure that my commons-logging related syntax is what
is preventing me from controlling logging. You see, I am also using
Apache Digester, and since Apache Digester uses commons-logging, it
seems to be finding my log4j.properties configuration file, and
automatically logging everything at the DEBUG level. I assume it's just
finding the root logger of Log4J, and not my "class level" logger. I am
trying to control that level of logging to only include ERROR level and
above.
I know this _sounds_ like a log4J problem, but I really believe I must
be using commons-logging API incorrectly. Take a look at my syntax for
adding a logger to my Digester object:
public class TestResultsHandler implements MessageResourcesKeys {
static final Logger logger =
Logger.getLogger(TestResultsHandler.class.getName());
.
.
.
public static Digester initializeParser() {
Digester digester = new Digester();
digester.setLogger(new Log4JLogger(logger));
digester.setValidating(true);
digester.setErrorHandler(new TestResultsErrorHandler());
// configure digester rules
.
.
.
return digester;
}
public static void parse(String document) throws TestResultsException {
Digester digester = initializeParser();
TestResultsHandler resultsParser = null;
try {
//resultsParser = (TestResultsHandler)digester.parse(new
StringReader(document));
resultsParser =
(TestResultsHandler)digester.parse(new
File("/usr/local/projects/BOMAnalysis/web/xml/TestResults.xml"));
} catch (SAXParseException saxe) {
String msg =
MessageUtil.formatMessage(MSG_TEST_RESULTS_PARSER_FAILURE);
throw new TestResultsException(msg, saxe);
} catch (SAXException saxe) {
String msg =
MessageUtil.formatMessage(MSG_TEST_RESULTS_PARSER_FAILURE);
throw new TestResultsException(msg, saxe);
} catch (IOException ioe) {
String msg =
MessageUtil.formatMessage(MSG_TEST_RESULTS_IO_FAILURE);
throw new TestResultsException(msg, ioe);
}
}
}
Here are the contents of my log4j.properties file in WEB-INF\classes:
log4j.rootLogger=DEBUG, GuiAppender
# GuiAppender is set to be a FileAppender.
log4j.appender.GuiAppender=org.apache.log4j.FileAppender
log4j.appender.GuiAppender.Append=true
log4j.appender.GuiAppender.File=/usr/local/projects/BOMAnalysis/logs/gui.log
# PmA1 uses PatternLayout.
log4j.appender.GuiAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.GuiAppender.layout.ConversionPattern=%d: %-5p : %m%n
log4j.logger.com.titan.bat.gui.testresults.TestResultsHandler=ERROR
No matter what level I set the LEVEL for
log4j.logger.com.titan.bat.gui.testresults.TestResultsHandler, I always
get DEBUG messages which makes me believe the Digester is defaulting to
the root logger of Log4J. As a matter of fact, if I take out the code
for setting the logger for the digester, it will still log at the DEBUG
level. This is why I think my use of the commons-logging api is
incorrect. I think perhaps I'm incorrectly setting the logger for the
Digester object. I have certainly named a logger,
com.titan.bat.gui.testresults.TestResultsHandler in this properties
file; is this not the same logger that is referenced as the static
logger member of my TestResultsHandler class?
Thanks in advance for any insight you may be able to provide.
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org