You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Davanum Srinivas (JIRA)" <ji...@apache.org> on 2006/05/15 17:11:08 UTC
[jira] Commented: (AXIS2-734) Log4j settings and configuration
[ http://issues.apache.org/jira/browse/AXIS2-734?page=comments#action_12402326 ]
Davanum Srinivas commented on AXIS2-734:
----------------------------------------
log4j properties is here:
http://mail-archives.apache.org/mod_mbox/ws-axis-dev/200605.mbox/raw/%3COF220CACBE.411DB84B-ON8525716B.0074F142-8525716B.007C5C4F@wendys.com%3E/5
> Log4j settings and configuration
> --------------------------------
>
> Key: AXIS2-734
> URL: http://issues.apache.org/jira/browse/AXIS2-734
> Project: Apache Axis 2.0 (Axis2)
> Type: Bug
> Reporter: Davanum Srinivas
>
> Original email:
> http://mail-archives.apache.org/mod_mbox/ws-axis-dev/200605.mbox/%3cOF220CACBE.411DB84B-ON8525716B.0074F142-8525716B.007C5C4F@wendys.com%3e
> 1. Annoyance: WSDL2Java.bat issues a warning because Log4J cannot be
> properly configured.
> When running WSDL2Java.bat, the following warning is displayed:
> log4j:WARN No appenders could be found for logger
> (org.apache.axis2.i18n.ProjectResourceBundle).
> log4j:WARN Please initialize the log4j system properly.
> To fix this, add the following line:
> set
> AXIS2_CLASS_PATH=%AXIS2_CLASS_PATH%;%AXIS2_HOME%\modules\core\conf
> into the WSDL2Java.bat file, after these lines:
> rem loop through the libs and add them to the class path
> set AXIS2_CLASS_PATH=%AXIS2_HOME%
> FOR %%c in ("%AXIS2_HOME%\lib\*.jar") DO set
> AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c
> %AXIS2_HOME%\modules\core\conf is the location of the Axis2-distributed
> log4j.properties file.
> 14. Annoyance: The log4j.properties file shipped with Axis2 circumvents
> the ability for the developers to change the logging level of their
> classes.
> I have included a modified log4j.properties file that actually allows me
> to put my classes into DEBUG level while leaving Axis2 and Tomcat logging
> at their levels.
> 15. Annoyance: Axis2 only allows for Log4J.properties to configure
> logging, not Log4J.xml
> Log4J can be configured using either a properties or an xml file. There
> is a growing number of Logging capabilities that are only configurable
> using the XML file. The code that sets up configuration of Log4J in Axis2
> should allow for both types of configuration files.
> 16. Annoyance: Axis2 does not use ConfigureAndWatch capabilities of
> Log4J
> Log4J can be configured using a ConfigureAndWatch method that causes Log4J
> to monitor its configuration file and automatically apply changes made to
> that file to its configuration. This means that if support personnel need
> to modify the logging configuration of a production application, only the
> log4j configuration file needs to be modified and the Application server
> does not need to be restarted.
> Following is a snippet of code for a Log4jUtils class that addresses
> Annoyances 15 and 16.
> The configureAndWatch method of this utility class should be called by an
> initialization servelet or some other configuration and initialization
> class.
> ------
> import org.apache.log4j.BasicConfigurator;
> import org.apache.log4j.PropertyConfigurator;
> import org.apache.log4j.helpers.FileWatchdog;
> import org.apache.log4j.net.SyslogAppender;
> import org.apache.log4j.xml.DOMConfigurator;
> .
> .
> .
> /**
> * A collection of static utility methods for logging with Log4J.
> */
> public final class Log4jUtils {
> private static final Logger LOG =
> Logger.getInstance(Log4jUtils.class);
> private static loggingConfigured = false;
> private Log4jUtils() {
> // All methods are static, this class should not be instantiated
> }
> .
> .
> .
> /**
> * Implements configureAndWatch for the current ClassLoader hierarchy
> using the Log4J
> * default number of seconds.
> */
> public static void configureAndWatch() {
> configureAndWatch(FileWatchdog.DEFAULT_DELAY);
> }
>
> /**
> * Implements configureAndWatch for the current ClassLoader hierarchy.
> *
> * @param watchMillisecs The number of milliseconds to wait between
> checking to see if the
> * log4j configuration file has changed.
> */
> public static void configureAndWatch(long watchMillisecs) {
> if (loggingConfigured) return;
> Class myClass = Log4jUtils.class;
> ClassLoader classLoader = myClass.getClassLoader();
> // Initialize LOG4J
> URL resourceUrl = classLoader.getResource("log4j.xml");
> if (resourceUrl != null) {
> String configFile = resourceUrl.getFile();
> DOMConfigurator.configureAndWatch(configFile, watchMillisecs);
> } else {
> resourceUrl = classLoader.getResource("log4j.properties");
> if (resourceUrl != null) {
> String configFile = resourceUrl.getFile();
> PropertyConfigurator.configureAndWatch(configFile,
> watchMillisecs);
> } else {
> // Since we aren't going to be able to pull our "real"
> settings,
> // let's at least make sure we get some output
> BasicConfigurator.configure();
> // Log an error with detail regarding the problem (and
> suspected cause)
> LOG.error(myClass.getName(), "Unable to find log4j.xml or
> log4j.properties. " +
> "Make sure the log4j
> configuration file is in the Classpath.");
> }
> }
> loggingConfigured = true;
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira