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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? logfile.java

?? Ftp服務1.0
?? JAVA
字號:
package ranab.io;

import java.io.File;
import java.io.Writer;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.RandomAccessFile;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Date;
import java.util.Random;
import java.text.DateFormat;
import java.text.SimpleDateFormat;


/**
 * Log class to write log data. It uses <code>RandomAccessFile</code>.
 * If the log file size exceeds the limit, a new log file will be created.
 *
 * @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a>
 */
public
class LogFile {
    
    /**
     * Line separator
     */
    private final static String LINE_SEP = System.getProperty("line.separator", "\n");
    
    
    /**
     * Date format to backup old files. 
     */
    private DateFormat LOG_FILE_DATE = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
    
    /**
     * Debug log level - lowest priority.
     */
    public static final int DEBUG  = 0;
    
    /**
     * Normal log level - print messages.
     */
    public static final int INFO   = 1;
    
    /**
     * Warning message
     */
    public static final int WARN   = 2;    
    
    /**
     * Eror log level - print errors.
     */
    public static final int ERROR  = 3;
    
    private static final String mstLogHeader[] = { 
        "DEB",
        "INF",
        "WAR",
        "ERR"
    };

    private DateFormat mDateFmt = null;
    private Writer mOfs         = null;
    private File mLogFile       = null;
    private int miLogLevel      = INFO;
    private long mlMaxSize      = -1;    // no size limit
    private long mlSize         = 0;     // current size
    private boolean mbAutoFlush = false; 

    /**
     * Constructor. 
     */
    public LogFile(File logFile) {

        if (logFile == null) {
            throw new NullPointerException("Log file is null.");
        }

        mDateFmt = new SimpleDateFormat("MM/dd HH:mm:ss");
        mLogFile = logFile;
        open();
    }

    /**
     * Set log date format
     */
    public void setDateFormat(DateFormat fmt)  {
        mDateFmt = fmt;
    }
    
    /**
     * Get the log date format.
     */
    public DateFormat getDateFormat() {
        return mDateFmt;
    }
    
    /**
     * Get auto flush
     */
    public boolean getAutoFlush() {
        return mbAutoFlush;
    }
    
    /**
     * Set auto flush
     */
    public void setAutoFlush(boolean flush) {
        mbAutoFlush = flush;
    }
    
    /**
     * Get log file.
     */
    public File getFile() {
        return mLogFile;
    }
     
    /**
     * Get max size.
     */
    public long getMaxSize() {
        return mlMaxSize;
    }
    
    /**
     * Set max file size.
     * Set <code>max</code> less than or equal
     * to zero to disable max size limitation.
     */
    public synchronized void setMaxSize(long max) {
        mlMaxSize = max;
    }

    /**
     * Get the current file size.
     */
    public long getCurrentSize() {
        return mlSize;
    }
    
    /**
     * Get current log level.
     */
    public int getLogLevel() {
        return miLogLevel;
    }
    
    /**
     * Set log level. If <code>level</code> is beypnd the
     * range, it uses <code>LOG_NORMAL</code> to wtite log data.
     */
    public synchronized void setLogLevel(int level) {
        miLogLevel = calculateLogLevel(level);
    }
    
    /**
     * Open log file.
     */
    private synchronized void open() {
        try {
            if (mLogFile != null) {
                mlSize = mLogFile.length();
                RandomAccessFile raf = new RandomAccessFile(mLogFile, "rw");
                raf.seek(raf.length());
                FileWriter fw = new FileWriter(raf.getFD()); 
                mOfs = new BufferedWriter(fw);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            mOfs = null;
        }
    }

    

    /**
     * Print log data.
     *
     * @param str - log message
     * @param level - log level of this message.
     */
    public synchronized void write(int level, String str) {

        level = calculateLogLevel(level);

        // write the string
        if (level >= miLogLevel) {
            String logStr = "[" + mDateFmt.format(new Date()) + " (" + mstLogHeader[level] +")] " + str + LINE_SEP;
            long strLen = logStr.length();
            
            if (mOfs != null) {

                // save file if needed
                if ( (mlMaxSize > 0) && ((mlSize + strLen) > mlMaxSize) ) {
                    save();
                }
                
                // now write it
                try {
                    mOfs.write(logStr);
                    if (mbAutoFlush) {
                        mOfs.flush();
                    }
                    mlSize += strLen;
                } catch (Exception ex) {
                    mOfs = null;
                    ex.printStackTrace();
                }
            } 
            else {
                System.out.print(logStr);
            }
        }
    }
    
    
    /**
     * Print debug log.
     * Here the log level is <code>DEBUG</code>.
     */
    public void debug(String str) {
        write(DEBUG ,str);
    }
    
    /**
     * Print info log.
     */
    public void info(String str) {
        write(INFO ,str);
    }
    
    /**
     * Print warning log.
     */
    public void warn(String str) {
        write(WARN ,str);
    }
    
    /**
     * Print info log.
     */
    public void error(String str) {
        write(ERROR ,str);
    }
    
    /**
     * Print debug log.
     * Here the log level is <code>DEBUG</code>.
     */
    public void debug(Throwable th) {
        write(DEBUG ,IoUtils.getStackTrace(th));
    }
    
    /**
     * Print info log.
     */
    public void info(Throwable th) {
        write(INFO ,IoUtils.getStackTrace(th));
    }
    
    /**
     * Print warning log.
     */
    public void warn(Throwable th) {
        write(WARN ,IoUtils.getStackTrace(th));
    }
    
    /**
     * Print info log.
     */
    public void error(Throwable th) {
        write(ERROR ,IoUtils.getStackTrace(th));
    }
    
    /**
     * Log exception
     */
    public synchronized void write(int level, Throwable th) {
        write(level, IoUtils.getStackTrace(th));
    }
    

    /**
     * Set the log file and open a new log file.
     * Returns the name of the saved log file.
     */
    private synchronized void save() {
        if (mLogFile == null) {
            return;
        }

        try {
            dispose();
            File sf = new File(mLogFile.getAbsolutePath() + '.' + LOG_FILE_DATE.format(new Date()));
            sf = IoUtils.getUniqueFile(sf);
            mLogFile.renameTo(sf);
            open();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }  
    

    /**
     * Calculate the log level
     */
    private static int calculateLogLevel(int level) {
        int logLevel = level;

        if (level > ERROR) {
            logLevel = ERROR;
        }    
        else if (level < DEBUG) {
            logLevel = DEBUG;
        } 
        return logLevel;
    }
    
    /**
     * Close the log file.
     */
    public synchronized void dispose() {
        if (mOfs != null){
            IoUtils.close(mOfs);
            mOfs = null;
        }
    }
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
懂色av一区二区三区免费观看| 18成人在线观看| 日韩精品国产欧美| 欧美一级一区二区| 国产最新精品免费| 国产精品午夜免费| 欧美亚洲一区三区| 欧美aa在线视频| 国产亚洲成aⅴ人片在线观看| 成人午夜在线免费| 亚洲精品日韩综合观看成人91| 欧日韩精品视频| 久久精品99国产精品| 国产三级一区二区| 色偷偷88欧美精品久久久| 天天操天天干天天综合网| 欧美成人官网二区| 成人h版在线观看| 亚洲一级二级在线| 久久色在线视频| 色av综合在线| 国产美女主播视频一区| 亚洲精品日产精品乱码不卡| 欧美一区二区三区视频免费播放| 国产精品911| 午夜精品成人在线视频| 国产精品久久毛片a| 欧美一区二区三区思思人| 不卡视频一二三四| 久久国产生活片100| 亚洲视频一区在线| 久久女同互慰一区二区三区| 色网站国产精品| 国产精品影视在线| 亚洲小说欧美激情另类| 国产欧美日韩精品在线| 91精品久久久久久蜜臀| 91丨国产丨九色丨pron| 韩国毛片一区二区三区| 午夜伦欧美伦电影理论片| 欧美国产日产图区| 精品美女在线播放| 欧美喷水一区二区| 一本大道久久a久久综合婷婷| 国产米奇在线777精品观看| 日韩激情视频网站| 亚洲综合自拍偷拍| 国产精品久久久久久久久免费丝袜 | 久久精品亚洲精品国产欧美kt∨| 色综合久久六月婷婷中文字幕| 国产一区二区三区高清播放| 亚洲成在人线免费| 伊人夜夜躁av伊人久久| 国产精品三级久久久久三级| 亚洲精品一区二区三区四区高清| 在线免费不卡视频| 国产成人精品午夜视频免费| 蜜臀精品一区二区三区在线观看| 亚洲乱码一区二区三区在线观看| 国产亚洲欧美日韩日本| 久久蜜桃av一区二区天堂| 日韩欧美成人午夜| 欧美一区二区黄| 91精品国产入口| 538prom精品视频线放| 欧美日韩在线播放一区| 欧美综合色免费| 色婷婷国产精品久久包臀| 99视频一区二区| 不卡的av网站| 97久久超碰国产精品电影| 99在线热播精品免费| 国产.欧美.日韩| 国产高清久久久久| 成人免费毛片app| 成人综合婷婷国产精品久久蜜臀 | 亚洲一二三专区| 一卡二卡欧美日韩| 亚洲国产欧美在线| 天堂一区二区在线免费观看| 五月综合激情日本mⅴ| 日韩在线a电影| 麻豆精品久久久| 国产精品资源在线| 高清国产午夜精品久久久久久| 国产精品91一区二区| 99久久久久久| 欧美性感一区二区三区| 91麻豆精品国产91久久久久久 | 91久久精品一区二区| 欧美调教femdomvk| 制服丝袜av成人在线看| 日韩午夜在线播放| 国产亚洲精品aa午夜观看| 国产精品三级久久久久三级| 亚洲女与黑人做爰| 午夜视频在线观看一区| 激情都市一区二区| 99这里都是精品| 欧美日韩午夜影院| 精品av综合导航| 综合在线观看色| 亚洲一区二区三区在线看| 毛片不卡一区二区| 99久久久久久99| 欧美一区二区三区在| 欧美韩国日本一区| 亚洲成av人片在线观看| 国产资源精品在线观看| 波多野结衣91| 制服丝袜激情欧洲亚洲| 国产日韩欧美高清在线| 一区二区久久久久| 国产精品自在在线| 色综合天天在线| 欧美电影免费观看高清完整版在线| 91免费小视频| 亚洲五码中文字幕| 国产福利一区二区三区| 欧美视频精品在线| 国产免费成人在线视频| 日产欧产美韩系列久久99| 成人午夜私人影院| 日韩免费高清电影| 亚洲午夜精品在线| 成人永久aaa| 欧美成人一级视频| 亚洲v精品v日韩v欧美v专区| 国产.欧美.日韩| 日韩欧美一二区| 亚洲二区在线视频| 97久久超碰国产精品电影| 久久综合久久鬼色中文字| 亚洲丰满少妇videoshd| 91性感美女视频| 久久久777精品电影网影网| 日韩av二区在线播放| 91在线观看地址| 精品成人私密视频| 日韩av网站免费在线| 欧美性感一区二区三区| 中文字幕视频一区| 高清国产一区二区| 久久精品一区二区三区不卡牛牛| 日本中文字幕一区| 欧美色图一区二区三区| 综合精品久久久| 成人sese在线| 中文字幕精品—区二区四季| 国产一区在线不卡| www亚洲一区| 久久精品国产精品亚洲综合| 欧美一区二区三区精品| 日韩国产欧美三级| 在线观看日产精品| 一区二区三区成人| 色综合咪咪久久| 亚洲欧美日韩国产综合| 色综合中文综合网| 欧美国产精品一区二区三区| 精品一区二区在线视频| 日韩一级大片在线| 美国毛片一区二区三区| 日韩久久久精品| 国产精品一卡二卡在线观看| 欧美精品一区视频| 国产毛片精品国产一区二区三区| 精品国产一区二区三区忘忧草| 韩国v欧美v日本v亚洲v| 久久精品人人爽人人爽| 国产成人av一区| 亚洲天堂久久久久久久| 91国产丝袜在线播放| 亚洲国产精品影院| 91精品国产一区二区| 精品一区免费av| 国产精品青草久久| 色一情一乱一乱一91av| 婷婷综合在线观看| 久久一区二区三区四区| 成人黄色小视频在线观看| 亚洲人成网站影音先锋播放| 欧美日韩视频在线观看一区二区三区 | 色婷婷久久久久swag精品| 一区二区三区电影在线播| 欧美另类高清zo欧美| 蜜桃av一区二区| 久久精品视频一区二区三区| av动漫一区二区| 亚洲国产精品麻豆| 精品久久久久久久久久久院品网| 丰满亚洲少妇av| 亚洲一区二区中文在线| 日韩精品一区二区在线| 成人动漫一区二区在线| 亚洲电影激情视频网站| 久久丝袜美腿综合| 在线中文字幕一区二区| 狠狠色2019综合网| 亚洲激情图片小说视频|