Search in sources :

Example 1 with FileLogger

use of mx4j.log.FileLogger in project geode by apache.

the class MX4JModelMBean method findLogger.

private Logger findLogger(Descriptor descriptor) {
    Logger logger = getLogger();
    if (descriptor == null) {
        if (logger.isEnabledFor(Logger.TRACE))
            logger.trace("Can't find MBean logger, descriptor is null");
        return null;
    }
    String log = (String) descriptor.getFieldValue("log");
    String location = (String) descriptor.getFieldValue("logFile");
    if (logger.isEnabledFor(Logger.DEBUG))
        logger.debug("Log fields: log=" + log + ", file=" + location);
    if (log == null || !Boolean.valueOf(log).booleanValue()) {
        if (logger.isEnabledFor(Logger.DEBUG))
            logger.debug("Logging is not supported by this ModelMBean");
        return null;
    }
    // Logger is supported, where log to ?
    if (location == null) {
        // As an extension, see if the field logMBean has been defined
        location = (String) descriptor.getFieldValue("logMBean");
        if (logger.isEnabledFor(Logger.DEBUG))
            logger.debug("Log fields: mbean=" + location);
        if (location == null) {
            if (logger.isEnabledFor(Logger.TRACE))
                logger.trace("Logging is not supported by this ModelMBean");
            return null;
        }
        // It seems that the user wants to delegate a registered mbean to log
        try {
            ObjectName objectName = new ObjectName(location);
            MBeanServer server = getMBeanServer();
            if (server == null)
                throw new MBeanException(new IllegalStateException(LocalizedStrings.MX4JModelMBean_MX4JMODELMBEAN_IS_NOT_REGISTERED.toLocalizedString()));
            if (server.isRegistered(objectName)) {
                MBeanLogger l = new MBeanLogger(server, objectName);
                if (logger.isEnabledFor(Logger.DEBUG))
                    logger.debug("ModelMBean log supported by delegating to this MBean: " + objectName);
                return l;
            }
            return null;
        } catch (MalformedObjectNameException x) {
            // Ah, was not a correct object name
            if (logger.isEnabledFor(Logger.DEBUG))
                logger.debug("Specified logMBean field does not contain a valid ObjectName: " + location);
            return null;
        } catch (MBeanException x) {
            if (logger.isEnabledFor(Logger.DEBUG))
                logger.debug("logMBean field does not specify an MBean that supports logging delegation", x);
            return null;
        }
    } else {
        // User decided to log to a file
        if (logger.isEnabledFor(Logger.DEBUG))
            logger.debug("ModelMBean log supported on file system");
        return new FileLogger(location);
    }
}
Also used : MalformedObjectNameException(javax.management.MalformedObjectNameException) MBeanLogger(mx4j.log.MBeanLogger) MBeanException(javax.management.MBeanException) FileLogger(mx4j.log.FileLogger) Logger(mx4j.log.Logger) FileLogger(mx4j.log.FileLogger) MBeanLogger(mx4j.log.MBeanLogger) ObjectName(javax.management.ObjectName) MBeanServer(javax.management.MBeanServer)

Aggregations

MBeanException (javax.management.MBeanException)1 MBeanServer (javax.management.MBeanServer)1 MalformedObjectNameException (javax.management.MalformedObjectNameException)1 ObjectName (javax.management.ObjectName)1 FileLogger (mx4j.log.FileLogger)1 Logger (mx4j.log.Logger)1 MBeanLogger (mx4j.log.MBeanLogger)1