public static void setLogLevel(List<String> packagePrefixes, Level level) { Enumeration<Logger> loggers = Logger.getRootLogger().getLoggerRepository().getCurrentLoggers(); while (loggers.hasMoreElements()) { Logger logger = loggers.nextElement(); for (String prefix : packagePrefixes) { if (logger.getName().startsWith(prefix)) { logger.setLevel(level); break; } } } } }
ErrorHandler eh = (ErrorHandler) OptionConverter.instantiateByClassName( subst(element.getAttribute(CLASS_ATTR)), org.apache.log4j.spi.ErrorHandler.class, null); NodeList children = element.getChildNodes(); final int length = children.getLength(); if (currentNode.getNodeType() == Node.ELEMENT_NODE) { Element currentElement = (Element) currentNode; String tagName = currentElement.getTagName(); if(tagName.equals(PARAM_TAG)) { setParameter(currentElement, propSetter); } else if(tagName.equals(APPENDER_REF_TAG)) { eh.setBackupAppender(findAppenderByReference(currentElement)); } else if(tagName.equals(LOGGER_REF)) { String loggerName = currentElement.getAttribute(REF_ATTR); Logger logger = (catFactory == null) ? repository.getLogger(loggerName) : repository.getLogger(loggerName, catFactory); eh.setLogger(logger); } else if(tagName.equals(ROOT_REF)) { Logger root = repository.getRootLogger(); eh.setLogger(root); } else {
void parse(Element element) { String rootElementName = element.getTagName(); String debugAttrib = subst(element.getAttribute(INTERNAL_DEBUG_ATTR)); LogLog.debug("debug attribute= \"" + debugAttrib +"\"."); LogLog.setInternalDebugging(OptionConverter.toBoolean(debugAttrib, true)); } else { LogLog.debug("Ignoring " + INTERNAL_DEBUG_ATTR + " attribute."); String resetAttrib = subst(element.getAttribute(RESET_ATTR)); LogLog.debug("reset attribute= \"" + resetAttrib +"\"."); if(!("".equals(resetAttrib))) { if (OptionConverter.toBoolean(resetAttrib, false)) { repository.resetConfiguration(); String confDebug = subst(element.getAttribute(CONFIG_DEBUG_ATTR)); if(!confDebug.equals("") && !confDebug.equals("null")) { LogLog.warn("The \""+CONFIG_DEBUG_ATTR+"\" attribute is deprecated."); LogLog.warn("Use the \""+INTERNAL_DEBUG_ATTR+"\" attribute instead."); LogLog.setInternalDebugging(OptionConverter.toBoolean(confDebug, true)); LogLog.debug("Threshold =\"" + thresholdStr +"\"."); if(!"".equals(thresholdStr) && !"null".equals(thresholdStr)) { repository.setThreshold(thresholdStr);
public void postRegister(java.lang.Boolean registrationDone) { log.debug("postRegister is called."); hierarchy.addHierarchyEventListener(this); Logger root = hierarchy.getRootLogger(); addLoggerMBean(root); }
value = properties.getProperty("log4j.configDebug"); if(value != null) LogLog.warn("[log4j.configDebug] is deprecated. Use [log4j.debug] instead."); LogLog.setInternalDebugging(OptionConverter.toBoolean(value, true)); if (reset != null && OptionConverter.toBoolean(reset, false)) { hierarchy.resetConfiguration(); String thresholdStr = OptionConverter.findAndSubst(THRESHOLD_PREFIX, properties); if(thresholdStr != null) { hierarchy.setThreshold(OptionConverter.toLevel(thresholdStr, (Level) Level.ALL)); LogLog.debug("Hierarchy threshold set to ["+hierarchy.getThreshold()+"]."); configureRootCategory(properties, hierarchy); configureLoggerFactory(properties); parseCatsAndRenderers(properties, hierarchy); LogLog.debug("Finished configuring.");
private void parseErrorHandler( final ErrorHandler eh, final String errorHandlerPrefix, final Properties props, final LoggerRepository hierarchy) { boolean rootRef = OptionConverter.toBoolean( OptionConverter.findAndSubst(errorHandlerPrefix + ROOT_REF, props), false); if (rootRef) { eh.setLogger(hierarchy.getRootLogger()); } String loggerName = OptionConverter.findAndSubst(errorHandlerPrefix + LOGGER_REF , props); if (loggerName != null) { Logger logger = (loggerFactory == null) ? hierarchy.getLogger(loggerName) : hierarchy.getLogger(loggerName, loggerFactory); eh.setLogger(logger); } String appenderName = OptionConverter.findAndSubst(errorHandlerPrefix + APPENDER_REF_TAG, props); if (appenderName != null) { Appender backup = parseAppender(props, appenderName); if (backup != null) { eh.setBackupAppender(backup); } } }
remoteLogger = hierarchy.getLogger(event.getLoggerName()); if(event.getLevel().isGreaterOrEqual(remoteLogger.getEffectiveLevel())) { remoteLogger.callAppenders(event); logger.info("Caught java.io.EOFException closing conneciton."); } catch(java.net.SocketException e) { logger.info("Caught java.net.SocketException closing conneciton.");
log.debug("Called getAttribute with ["+attributeName+"]."); return hierarchy.getThreshold(); } else if(attributeName.startsWith("logger")) { int k = attributeName.indexOf("%3D"); return new ObjectName("log4j:"+val); } catch(JMException e) { log.error("Could not create ObjectName" + val); } catch(RuntimeException e) { log.error("Could not create ObjectName" + val);
void parseCategory (Element loggerElement) { String catName = subst(loggerElement.getAttribute(NAME_ATTR)); String className = subst(loggerElement.getAttribute(CLASS_ATTR)); LogLog.debug("Retreiving an instance of org.apache.log4j.Logger."); cat = (catFactory == null) ? repository.getLogger(catName) : repository.getLogger(catName, catFactory); LogLog.debug("Desired logger sub-class: ["+className+']'); try { Class clazz = Loader.loadClass(className); Thread.currentThread().interrupt(); LogLog.error("Could not retrieve category ["+catName+ "]. Reported error follows.", oops); return; boolean additivity = OptionConverter.toBoolean( subst(loggerElement.getAttribute(ADDITIVITY_ATTR)), true); LogLog.debug("Setting ["+cat.getName()+"] additivity to ["+additivity+"]."); cat.setAdditivity(additivity); parseChildrenOfLoggerElement(loggerElement, cat, false);
Logger.getRootLogger().getLoggerRepository().resetConfiguration(); ConsoleAppender console = new ConsoleAppender(); console.setLayout(new PatternLayout(patternLayout)); console.activateOptions(); Logger.getRootLogger().addAppender(console); LogManager.getRootLogger().setLevel(Level.toLevel(loglevelSelected)); fa.setFile(fileLog.getAbsolutePath()); fa.setLayout(new PatternLayout(patternLayout)); fa.setThreshold(LogManager.getRootLogger().getLevel()); fa.setAppend(true); fa.activateOptions();
void parse(Element element) { String rootElementName = element.getTagName(); String debugAttrib = subst(element.getAttribute(INTERNAL_DEBUG_ATTR)); LogLog.debug("debug attribute= \"" + debugAttrib +"\"."); LogLog.setInternalDebugging(OptionConverter.toBoolean(debugAttrib, true)); } else { LogLog.debug("Ignoring " + INTERNAL_DEBUG_ATTR + " attribute."); String confDebug = subst(element.getAttribute(CONFIG_DEBUG_ATTR)); if(!confDebug.equals("") && !confDebug.equals("null")) { LogLog.warn("The \""+CONFIG_DEBUG_ATTR+"\" attribute is deprecated."); LogLog.warn("Use the \""+INTERNAL_DEBUG_ATTR+"\" attribute instead."); LogLog.setInternalDebugging(OptionConverter.toBoolean(confDebug, true)); String thresholdStr = subst(element.getAttribute(THRESHOLD_ATTR)); LogLog.debug("Threshold =\"" + thresholdStr +"\"."); if(!"".equals(thresholdStr) && !"null".equals(thresholdStr)) { repository.setThreshold(thresholdStr);
void parseCategory (Element loggerElement) { String catName = subst(loggerElement.getAttribute(NAME_ATTR)); String className = subst(loggerElement.getAttribute(CLASS_ATTR)); LogLog.debug("Retreiving an instance of org.apache.log4j.Logger."); cat = repository.getLogger(catName); LogLog.debug("Desired logger sub-class: ["+className+']'); try { Class clazz = Loader.loadClass(className); cat = (Logger) getInstanceMethod.invoke(null, new Object[] {catName}); } catch (Exception oops) { LogLog.error("Could not retrieve category ["+catName+ "]. Reported error follows.", oops); return; boolean additivity = OptionConverter.toBoolean( subst(loggerElement.getAttribute(ADDITIVITY_ATTR)), true); LogLog.debug("Setting ["+cat.getName()+"] additivity to ["+additivity+"]."); cat.setAdditivity(additivity); parseChildrenOfLoggerElement(loggerElement, cat, false);
Enumeration enumeration; Level level = Level.toLevel(logLevel); enumeration = Logger.getRootLogger().getLoggerRepository().getCurrentLoggers(); while (enumeration.hasMoreElements()) { Object o = enumeration.nextElement(); if (o instanceof Logger) { Logger logger = (Logger) o; String loggerName = logger.getName(); for (String category : categoriesToChange) { if (loggerName.startsWith(category)) {
public static Boolean changeLevel(String name, String level) { if (Log4j) { Level l = Level.toLevel(level, Level.ERROR); Logger logger = LogManager.getLoggerRepository().exists(name); if (logger != null) { logger.setLevel(l); LogLog.info("set log4j log level success, " + name + ": " + l); return true; } else { Logger root = LogManager.getLoggerRepository().getRootLogger(); if (root.getName().equals(name)) { root.setLevel(l); LogLog.info("set log4j log level success, " + name + ": " + l); return true; } } LogLog.info("set log4j log level fail, no logger name exists: " + name); return false; } return null; }
/** * Sets logging level for a particular package or a class. * * @param category name of the log category (usually a package or class name) whose log level * should be changed. * @param newLogLevel new log level for that category. Available log levels are: * <code>OFF</code>, <code>INFO</code>, <code>WARN</code>, <code>ERROR</code>, * <code>FATAL</code>, <code>TRACE</code>, <code>DEBUG</code>, <code>ALL</code> * @return <code>true</code> if operation was successful, <code>false</code> otherwise. */ @ManagedOperation(description = "Sets logging level for a particular package or a class. Returns " + "true if operation was successful.") @ManagedOperationParameters(value = { @ManagedOperationParameter(name = "category", description = "Name of the log category (usually " + "a package or class name) whose log level should be changed."), @ManagedOperationParameter(name = "newLevel", description = "New log level for that category. " + "Available log levels are: OFF, INFO, WARN, ERROR, FATAL, TRACE, DEBUG, ALL") }) public final boolean setLoggingLevel(final String category, final String newLogLevel) { boolean result = false; Logger logger = this.loggerRepository.getLogger(category); if (logger != null) { logger.setLevel(Level.toLevel(newLogLevel.toUpperCase())); result = true; } return result; }
/** * Register the log4j JMX mbeans. Set environment variable * "zookeeper.jmx.log4j.disable" to true to disable registration. * @see http://logging.apache.org/log4j/1.2/apidocs/index.html?org/apache/log4j/jmx/package-summary.html * @throws JMException if registration fails */ @SuppressWarnings("rawtypes") public static void registerLog4jMBeans() throws JMException { if (Boolean.getBoolean("zookeeper.jmx.log4j.disable") == true) { return; } MBeanServer mbs = MBeanRegistry.getInstance().getPlatformMBeanServer(); // Create and Register the top level Log4J MBean HierarchyDynamicMBean hdm = new HierarchyDynamicMBean(); ObjectName mbo = new ObjectName("log4j:hiearchy=default"); mbs.registerMBean(hdm, mbo); // Add the root logger to the Hierarchy MBean Logger rootLogger = Logger.getRootLogger(); hdm.addLoggerMBean(rootLogger.getName()); // Get each logger from the Log4J Repository and add it to // the Hierarchy MBean created above. LoggerRepository r = LogManager.getLoggerRepository(); Enumeration enumer = r.getCurrentLoggers(); Logger logger = null; while (enumer.hasMoreElements()) { logger = (Logger) enumer.nextElement(); hdm.addLoggerMBean(logger.getName()); } }
/** * Posts the logging event to a logger in the configured logger * repository. * * @param event the log event to post to the local log4j environment. */ public void doPost(final LoggingEvent event) { // if event does not meet threshold, exit now if (!isAsSevereAsThreshold(event.getLevel())) { return; } // get the "local" logger for this event from the // configured repository. Logger localLogger = getLoggerRepository().getLogger(event.getLoggerName()); // if the logger level is greater or equal to the level // of the event, use the logger to append the event. if (event.getLevel() .isGreaterOrEqual(localLogger.getEffectiveLevel())) { // call the loggers appenders to process the event localLogger.callAppenders(event); } } }
remoteLogger = hierarchy.getLogger(event.getLoggerName()); if(event.getLevel().isGreaterOrEqual(remoteLogger.getEffectiveLevel())) { remoteLogger.callAppenders(event); logger.info("Caught java.io.EOFException closing conneciton."); } catch(java.net.SocketException e) { logger.info("Caught java.net.SocketException closing conneciton.");
public static Enumeration getCurrentLoggers() { return getLoggerRepository().getCurrentLoggers(); }
public static Logger exists(final String name) { return getLoggerRepository().exists(name); }