亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? logger.java

?? edtftpj-1.4.5.zip
?? JAVA
字號:
/**
 * 
 *  Copyright (C) 2000-2004 Enterprise Distributed Technologies Ltd
 *
 *  www.enterprisedt.com
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  Bug fixes, suggestions and comments should be sent to bruce@enterprisedt.com
 *
 *  Change Log:
 *
 *    $Log: Logger.java,v $
 *    Revision 1.7  2004/10/20 21:03:09  bruceb
 *    catch SecurityExceptions
 *
 *    Revision 1.6  2004/09/17 12:27:11  bruceb
 *    1.1 compat
 *
 *    Revision 1.5  2004/08/31 13:54:50  bruceb
 *    remove compile warnings
 *
 *    Revision 1.4  2004/08/16 21:08:08  bruceb
 *    made cvsids public
 *
 *    Revision 1.3  2004/06/25 11:52:26  bruceb
 *    fixed logging bug
 *
 *    Revision 1.2  2004/05/08 21:13:51  bruceb
 *    renamed property
 *
 *    Revision 1.1  2004/05/01 16:55:42  bruceb
 *    first cut
 *
 *
 */
package com.enterprisedt.util.debug;

import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Hashtable;
import java.util.Vector;

/**
 *  Logger class that mimics log4j Logger class. If log4j integration
 *  is desired, the "edtftp.log4j" property should be set to "true" and
 *  log4j classes must be in the classpath
 *
 *  @author      Bruce Blackshaw
 *  @version     $Revision: 1.7 $
 */
public class Logger {
    
    /**
     *  Revision control id
     */
    public static String cvsId = "@(#)$Id: Logger.java,v 1.7 2004/10/20 21:03:09 bruceb Exp $";
    
    /**
     * Level of all loggers
     */
    private static Level globalLevel;
    
    /**
     * Timestamp formatter
     */
    private SimpleDateFormat format = new SimpleDateFormat("d MMM yyyy HH:mm:ss.S");
    
    /**
     * Hash of all loggers that exist
     */
    private static Hashtable loggers = new Hashtable(10);
    
    /**
     * Vector of all appenders
     */
    private static Vector appenders = new Vector(2);
    
    /**
     * Shall we use log4j or not?
     */
    private boolean useLog4j = false;
    
    /**
     * Timestamp
     */
    private Date ts = new Date();
    
    /**
     * Class name for this logger
     */
    private String clazz;
    
    /**
     *  Log4j methods
     */
    private Method[][] methods = null;
    
    /**
     * Logger log4j object
     */
    private Object logger = null;
    
    /**
     * Arg arrays for use in invoke
     */
    private Object[] argsPlain = new Object[1];
    
    /**
     * Arg arrays for use in invoke
     */
    private Object[] argsThrowable = new Object[2];
    
    /**
     * Determine the logging level
     */
    static {
        String level = Level.OFF.toString();
        try {
            System.getProperty("edtftp.log.level", Level.OFF.toString());
        }
        catch (SecurityException ex) {
            System.out.println("Could not read property 'edtftp.log.level' due to security permissions");
        }

        globalLevel = Level.getLevel(level);
    }
    
    /**
     * Constructor
     * 
     * @param clazz     class this logger is for
     * @param uselog4j  true if using log4j
     */
    private Logger(String clazz, boolean uselog4j) {
        this.clazz = clazz;
        this.useLog4j = uselog4j;
        if (uselog4j)
            setupLog4j();
    }
    
    /**
     * Attempt to set up log4j logging. Of course, the classes
     * must be in the classpath
     */
    private void setupLog4j() {
        methods = new Method[Level.LEVEL_COUNT][2];
        try {
            Class log4jLogger = Class.forName("org.apache.log4j.Logger");
            Class[] args = { String.class };
            
            // get static logger method & use to get our logger
            Method getLogger = log4jLogger.getMethod("getLogger", args);
            Object[] invokeArgs = {clazz};
            logger = getLogger.invoke(null, invokeArgs);
            
            // now get the logger's methods and store them
            Class[] plainArgs = {Object.class};
            Class[] throwableArgs = {Object.class,Throwable.class};
            methods[Level.FATAL_INT][0] = log4jLogger.getMethod("fatal", plainArgs);
            methods[Level.FATAL_INT][1] = log4jLogger.getMethod("fatal", throwableArgs);
            methods[Level.ERROR_INT][0] = log4jLogger.getMethod("error", plainArgs);
            methods[Level.ERROR_INT][1] = log4jLogger.getMethod("error", throwableArgs);
            methods[Level.WARN_INT][0] = log4jLogger.getMethod("warn", plainArgs);
            methods[Level.WARN_INT][1] = log4jLogger.getMethod("warn", throwableArgs);
            methods[Level.INFO_INT][0] = log4jLogger.getMethod("info", plainArgs);
            methods[Level.INFO_INT][1] = log4jLogger.getMethod("info", throwableArgs);
            methods[Level.DEBUG_INT][0] = log4jLogger.getMethod("debug", plainArgs);
            methods[Level.DEBUG_INT][1] = log4jLogger.getMethod("debug", throwableArgs);
        } 
        catch (Exception ex) {
            useLog4j = false;
            error("Failed to initialize log4j logging", ex);
        } 
    }

    /**
     * Set all loggers to this level
     * 
     * @param level  new level
     */
    public static void setLevel(Level level) {
        globalLevel = level;
    }
    
    /**
     * Get a logger for the supplied class
     * 
     * @param clazz    full class name
     * @return  logger for class
     */
    public static Logger getLogger(Class clazz) {
        return getLogger(clazz.getName());
    }
           
    /**
     * Get a logger for the supplied class
     * 
     * @param clazz    full class name
     * @return  logger for class
     */
    public static Logger getLogger(String clazz) {
        Logger logger = (Logger)loggers.get(clazz);
        if (logger == null) {
            boolean useLog4j = false;
            try {
                String log4j = System.getProperty("edtftp.log.log4j");
                if (log4j != null && log4j.equalsIgnoreCase("true")) {
                    useLog4j = true;
                }
            }
            catch (SecurityException ex) {
                System.out.println("Could not read property 'edtftp.log.log4j' due to security permissions");
            }
            logger = new Logger(clazz, useLog4j);
            loggers.put(clazz, logger);
        }
        return logger;
    }
    
    /**
     * Add an appender to our list
     * 
     * @param newAppender
     */
    public static void addAppender(Appender newAppender) {
        appenders.addElement(newAppender);
    }
    
    /**
     * Close all appenders
     */
    public static void shutdown() {
        for (int i = 0; i < appenders.size(); i++) {
            Appender a = (Appender)appenders.elementAt(i);
            a.close();
        }        
    }
    
    /**
     * Log a message 
     * 
     * @param level     log level
     * @param message   message to log
     * @param t         throwable object
     */
    public void log(Level level, String message, Throwable t) {
        if (useLog4j)
            log4jLog(level, message, t);
        else if (globalLevel.isGreaterOrEqual(level))
            ourLog(level, message, t);
    }
    
    /**
     * Log a message to log4j
     * 
     * @param level     log level
     * @param message   message to log
     * @param t         throwable object
     */
    private void log4jLog(Level level, String message, Throwable t) {
        
        // set up arguments
        Object[] args = null;
        int pos = -1;
        if (t == null) {
            args = argsPlain;
            pos = 0;
        }
        else {
            args = argsThrowable;
            args[1] = t;
            pos = 1;
        }
        args[0] = message;
        
        // retrieve the correct method
        Method method = methods[level.getLevel()][pos];
        
        // and invoke the method
        try {
            method.invoke(logger, args);
        } 
        catch (Exception ex) { // there's a few, we don't care what they are
            ourLog(Level.ERROR, "Failed to invoke log4j method", ex);
            ourLog(level, message, t);
        }
    }

    /**
     * Log a message to our logging system
     * 
     * @param level     log level
     * @param message   message to log
     * @param t         throwable object
     */
    private void ourLog(Level level, String message, Throwable t) {
        ts.setTime(System.currentTimeMillis());
        String stamp = format.format(ts);
        StringBuffer buf = new StringBuffer(level.toString());
        buf.append(" [").append(clazz).append("] ").append(stamp).
        append(" : ").append(message);
        if (appenders.size() == 0) { // by default to stdout
            System.out.println(buf.toString());
            if (t != null) {
                t.printStackTrace(System.out);
            }
        }
        else {
            for (int i = 0; i < appenders.size(); i++) {
                Appender a = (Appender)appenders.elementAt(i);
                a.log(buf.toString());
                if (t != null) {
                    a.log(t);
                }
            }
        }
    }
        
    /**
     * Log an info level message
     * 
     * @param message   message to log
     */
    public void info(String message)  {
        log(Level.INFO, message, null); 
    }
    
    /**
     * Log an info level message
     * 
     * @param message   message to log
     * @param t         throwable object
     */
    public void info(String message, Throwable t)  {
        log(Level.INFO, message, t); 
    }

    /**
     * Log a warning level message
     * 
     * @param message   message to log
     */
    public void warn(String message)  {
        log(Level.WARN, message, null); 
    }
    
    /**
     * Log a warning level message
     * 
     * @param message   message to log
     * @param t         throwable object
     */
    public void warn(String message, Throwable t)  {
        log(Level.WARN, message, t); 
    }
    
    /**
     * Log an error level message
     * 
     * @param message   message to log
     */
    public void error(String message)  {
        log(Level.ERROR, message, null);   
    }
    
    /**
     * Log an error level message
     * 
     * @param message   message to log
     * @param t         throwable object
     */
    public void error(String message, Throwable t)  {
        log(Level.ERROR, message, t);   
    } 
    
    /**
     * Log a fatal level message
     * 
     * @param message   message to log
     */
    public void fatal(String message)  {
        log(Level.FATAL, message, null); 
    }

    /**
     * Log a fatal level message
     * 
     * @param message   message to log
      * @param t         throwable object
    */
    public void fatal(String message, Throwable t)  {
        log(Level.FATAL, message, t); 
    }
    
    /**
     * Log a debug level message
     * 
     * @param message   message to log
     */
    public void debug(String message)  {
        log(Level.DEBUG, message, null); 
    }
    

    /**
     * Log a debug level message
     * 
     * @param message   message to log
     * @param t         throwable object
     */
    public void debug(String message, Throwable t)  {
        log(Level.DEBUG, message, t); 
    }
    
    /**
     * Is logging enabled for the supplied level?
     * 
     * @param level   level to test for
     * @return true   if enabled
     */
    public boolean isEnabledFor(Level level) {
        if (globalLevel.isGreaterOrEqual(level))
            return true;
        return false;
    }
    
    /**
     * Is logging enabled for the supplied level?
     * 
     * @return true if enabled
     */
    public boolean isDebugEnabled() {
        return isEnabledFor(Level.DEBUG);
    }
    
    /**
     * Is logging enabled for the supplied level?
     * 
     * @return true if enabled
     */
    public boolean isInfoEnabled()  {
        return isEnabledFor(Level.INFO);
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产美| 国产老妇另类xxxxx| 欧美在线一二三四区| 亚洲欧洲日本在线| 色拍拍在线精品视频8848| 亚洲综合一区在线| 7878成人国产在线观看| 久久精品国产99| 久久久精品免费观看| 国产iv一区二区三区| 综合久久国产九一剧情麻豆| 在线观看精品一区| 日本不卡视频一二三区| 欧美精品一区在线观看| www.日韩精品| 婷婷开心激情综合| 久久综合色鬼综合色| 不卡视频一二三| 爽好久久久欧美精品| 国产网站一区二区三区| 91浏览器入口在线观看| 青青草国产成人99久久| 国产精品入口麻豆原神| 欧美图片一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久人人97超碰com| 91免费精品国自产拍在线不卡| 亚洲午夜电影在线| 久久久久久久精| 欧美最猛性xxxxx直播| 韩国av一区二区| 一区二区三区高清不卡| 精品国产sm最大网站免费看| 成人福利在线看| 日韩激情一区二区| 国产精品成人免费在线| 91精品国产色综合久久ai换脸| 国产91精品久久久久久久网曝门| 亚洲国产一区二区三区| 国产女人aaa级久久久级| 精品视频在线免费| 成人免费va视频| 青青草成人在线观看| 亚洲精品亚洲人成人网在线播放| 2024国产精品| 欧美日韩国产一区二区三区地区| 国产宾馆实践打屁股91| 日本不卡一区二区三区| 亚洲色图一区二区| 国产欧美精品一区二区三区四区 | 99re热视频这里只精品| ...xxx性欧美| 欧美一区二区三区在线观看视频 | 久久网站热最新地址| av电影在线不卡| 一区二区高清视频在线观看| 日韩欧美一卡二卡| 色吊一区二区三区| 国产91丝袜在线播放0| 午夜精品福利视频网站| 国产精品素人一区二区| 日韩美女一区二区三区| 欧美在线观看一二区| 国产91精品免费| 麻豆91精品91久久久的内涵| 国产精品久久久久7777按摩| 色激情天天射综合网| 懂色av一区二区夜夜嗨| 婷婷综合五月天| 亚洲在线观看免费视频| 国产精品女主播av| 精品日韩一区二区| 色成年激情久久综合| 免费高清不卡av| 五月天欧美精品| 一区二区三区日韩精品| 国产精品久久久久久久久免费樱桃| 欧美美女一区二区三区| 99国产欧美另类久久久精品| 日韩av电影天堂| 成人黄色网址在线观看| 日本中文在线一区| 亚洲成av人片在线| 欧美一区二区三区在线视频| 欧美美女网站色| 欧美区一区二区三区| 91网站黄www| av在线不卡网| 国产高清视频一区| 黑人巨大精品欧美黑白配亚洲| 亚洲国产综合视频在线观看| 亚洲欧美成人一区二区三区| 国产色产综合色产在线视频| 26uuu久久天堂性欧美| 日韩欧美国产一区二区在线播放| 欧美电视剧在线看免费| 日韩欧美高清dvd碟片| 日韩精品中文字幕一区二区三区 | 99国产精品久久| 不卡的av电影| 色哟哟国产精品免费观看| 国产高清在线精品| 韩国理伦片一区二区三区在线播放| 午夜精品久久久久久久蜜桃app| 五月激情综合色| 免费三级欧美电影| 激情久久五月天| 成人免费av网站| 国产不卡视频一区二区三区| 亚洲精品videosex极品| 亚洲国产精品ⅴa在线观看| 亚洲国产精品成人综合| 亚洲手机成人高清视频| 午夜精品久久一牛影视| 老色鬼精品视频在线观看播放| 国产美女在线观看一区| 精品亚洲成a人在线观看| 久久综合综合久久综合| 国产黄色成人av| 成人黄色免费短视频| 在线免费一区三区| 欧美一区二区三区四区在线观看| 日韩亚洲欧美高清| 欧美国产精品v| 亚洲特级片在线| 视频一区二区国产| 高清成人免费视频| 欧美日韩国产123区| 久久综合九色综合97婷婷女人 | 亚洲免费观看高清| 污片在线观看一区二区| 国产麻豆欧美日韩一区| 国产91丝袜在线观看| 欧美一a一片一级一片| 精品久久人人做人人爱| 最新欧美精品一区二区三区| 天堂一区二区在线| 精品亚洲aⅴ乱码一区二区三区| 久草这里只有精品视频| 国产suv精品一区二区6| 在线不卡a资源高清| 久久久欧美精品sm网站| 亚洲一二三四区| 国产成人在线色| 555夜色666亚洲国产免| 国产精品国产三级国产三级人妇| 首页综合国产亚洲丝袜| 94色蜜桃网一区二区三区| 日韩欧美一区电影| 中文在线资源观看网站视频免费不卡| 亚洲二区在线观看| 丁香桃色午夜亚洲一区二区三区| 欧美另类videos死尸| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 色综合网站在线| 久久婷婷一区二区三区| 亚洲久本草在线中文字幕| 日本午夜精品视频在线观看| 波多野结衣欧美| 欧美精品一区二| 日本不卡一二三| 欧美性大战久久| 亚洲视频图片小说| 亚洲一区二区五区| 欧美日韩精品一区二区天天拍小说| 亚洲欧美中日韩| 国产高清视频一区| 精品免费国产一区二区三区四区| 亚洲欧美日韩中文播放| 麻豆国产91在线播放| 欧美性一二三区| 国产精品每日更新在线播放网址| 免费成人深夜小野草| 欧美日韩精品欧美日韩精品一| 国产精品国产三级国产| 国产精品综合av一区二区国产馆| 欧美美女网站色| 亚洲h在线观看| 在线视频你懂得一区| 亚洲欧美日本韩国| 国产不卡在线播放| 亚洲欧美日韩在线不卡| 99精品视频一区二区| 亚洲欧美一区二区三区久本道91| 成人丝袜18视频在线观看| 2023国产精华国产精品| 久88久久88久久久| 26uuu久久天堂性欧美| 国产麻豆一精品一av一免费 | 欧美精品一区二区三区久久久| 肉肉av福利一精品导航| 欧美日韩精品欧美日韩精品一 | 欧美手机在线视频| 亚洲在线一区二区三区| 欧美日韩不卡在线| 午夜视频一区在线观看| 欧美日本一区二区| 亚洲精品综合在线| 欧美日韩免费一区二区三区视频| 亚洲影视在线播放|