⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hierarchy.java

📁 基于Jabber协议的即时消息服务器
💻 JAVA
字号:
/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */package org.jivesoftware.util.log;import org.jivesoftware.util.log.format.PatternFormatter;import org.jivesoftware.util.log.output.io.StreamTarget;import org.jivesoftware.util.log.util.DefaultErrorHandler;/** * This class encapsulates a basic independent log hierarchy. * The hierarchy is essentially a safe wrapper around root logger. * * @author <a href="mailto:peter@apache.org">Peter Donald</a> */public class Hierarchy {    ///Format of default formatter    private static final String FORMAT =            "%7.7{priority} %5.5{time}   [%8.8{category}] (%{context}): %{message}\\n%{throwable}";    ///The instance of default hierarchy    private static final Hierarchy c_hierarchy = new Hierarchy();    ///Error Handler associated with hierarchy    private ErrorHandler m_errorHandler;    ///The root logger which contains all Loggers in this hierarchy    private Logger m_rootLogger;    /**     * Retrieve the default hierarchy.     * <p/>     * <p>In most cases the default LogHierarchy is the only     * one used in an application. However when security is     * a concern or multiple independent applications will     * be running in same JVM it is advantageous to create     * new Hierarchies rather than reuse default.</p>     *     * @return the default Hierarchy     */    public static Hierarchy getDefaultHierarchy() {        return c_hierarchy;    }    /**     * Create a hierarchy object.     * The default LogTarget writes to stdout.     */    public Hierarchy() {        m_errorHandler = new DefaultErrorHandler();        m_rootLogger = new Logger(new InnerErrorHandler(), "", null, null);        //Setup default output target to print to console        final PatternFormatter formatter = new PatternFormatter(FORMAT);        final StreamTarget target = new StreamTarget(System.out, formatter);        setDefaultLogTarget(target);    }    /**     * Set the default log target for hierarchy.     * This is the target inherited by loggers if no other target is specified.     *     * @param target the default target     */    public void setDefaultLogTarget(final LogTarget target) {        if (null == target) {            throw new IllegalArgumentException("Can not set DefaultLogTarget to null");        }        final LogTarget[] targets = new LogTarget[]{target};        getRootLogger().setLogTargets(targets);    }    /**     * Set the default log targets for this hierarchy.     * These are the targets inherited by loggers if no other targets are specified     *     * @param targets the default targets     */    public void setDefaultLogTargets(final LogTarget[] targets) {        if (null == targets || 0 == targets.length) {            throw new IllegalArgumentException("Can not set DefaultLogTargets to null");        }        for (int i = 0; i < targets.length; i++) {            if (null == targets[i]) {                throw new IllegalArgumentException("Can not set DefaultLogTarget element to null");            }        }        getRootLogger().setLogTargets(targets);    }    /**     * Set the default priority for hierarchy.     * This is the priority inherited by loggers if no other priority is specified.     *     * @param priority the default priority     */    public void setDefaultPriority(final Priority priority) {        if (null == priority) {            throw new IllegalArgumentException("Can not set default Hierarchy Priority to null");        }        getRootLogger().setPriority(priority);    }    /**     * Set the ErrorHandler associated with hierarchy.     *     * @param errorHandler the ErrorHandler     */    public void setErrorHandler(final ErrorHandler errorHandler) {        if (null == errorHandler) {            throw new IllegalArgumentException("Can not set default Hierarchy ErrorHandler to null");        }        m_errorHandler = errorHandler;    }    /**     * Retrieve a logger for named category.     *     * @param category the context     * @return the Logger     */    public Logger getLoggerFor(final String category) {        return getRootLogger().getChildLogger(category);    }//    /**//     * Logs an error message to error handler.//     * Default Error Handler is stderr.//     *//     * @param message a message to log//     * @param throwable a Throwable to log//     * @deprecated Logging components should use ErrorHandler rather than Hierarchy.log()//     *///    public void log(final String message, final Throwable throwable) {//        m_errorHandler.error(message, throwable, null);//    }////    /**//     * Logs an error message to error handler.//     * Default Error Handler is stderr.//     *//     * @param message a message to log//     * @deprecated Logging components should use ErrorHandler rather than Hierarchy.log()//     *///    public void log(final String message) {//        log(message, null);//    }    private class InnerErrorHandler            implements ErrorHandler {        /**         * Log an unrecoverable error.         *         * @param message   the error message         * @param throwable the exception associated with error (may be null)         * @param event     the LogEvent that caused error, if any (may be null)         */        public void error(final String message,                          final Throwable throwable,                          final LogEvent event) {            m_errorHandler.error(message, throwable, event);        }    }    /**     * Utility method to retrieve logger for hierarchy.     * This method is intended for use by sub-classes     * which can take responsibility for manipulating     * Logger directly.     *     * @return the Logger     */    protected final Logger getRootLogger() {        return m_rootLogger;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -