<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java.util.logging.Logger 類

     




    1、可以在main方法中書寫以下語句進行log。

            final Logger baseLogger = Logger.getLogger("LogTest");
            baseLogger.setLevel(Level.INFO);//this set the log level to info. that means you can only pring info message to log file.
            final Handler[] handlers = baseLogger.getHandlers();
            for (int i = 0; i < handlers.length; i++) {
                baseLogger.removeHandler(handlers[i]);
            }

            try {
                baseLogger.addHandler(new DefaultHandler()); //class "DefaultHandler" is the default handler for log records. It currently only logs to a file in the format offered by TextFormatter.
            } catch (FreeColException e) {
                e.printStackTrace();
            }


    2、可以在配置文件(${jdk}\jar\lib下面找到logging.properties文件)里面改日志記錄的級別。

    3、定義"DefaultHandler" 類,用于處理日志。

    public final class DefaultHandler extends Handler {

        private static final String fileName = new String("test.log");

        private FileWriter fileWriter;

        /**
        * The constructor to use.
        * @throws Exception In case the log file could not be created/written to.
        */
        public DefaultHandler() throws Exception {
            File file = new File(fileName);

            if (file.exists()) {
                if (file.isDirectory()) {
                    throw new Exception("Log file \"" + fileName + "\" could not be created.");
                } else if (file.isFile()) {
                    file.delete();
                }
            }

            try {
                file.createNewFile();
            } catch (IOException e) {
                throw new Exception("Log file \"" + fileName + "\" could not be created.");
            }

            if (!file.canWrite()) {
                throw new Exception("Can not write in log file \"" + fileName + "\".");
            }

            try {
                fileWriter = new FileWriter(file);
            } catch (IOException e) {
                throw new Exception("Can not write in log file \"" + fileName + "\".");
            }

            // We  use TextFormatter that we build latter.
            setFormatter(new TextFormatter());
           
            try {
                String str = "version: 1.0\n" 
                            + "Java vendor: " + System.getProperty("java.vendor") + "\n"
                            + "Java version: " + System.getProperty("java.version") + "\n"
                            + "Java WM name: " + System.getProperty("java.vm.name") + "\n"
                            + "Java WM vendor: " + System.getProperty("java.vm.vendor") + "\n"
                            + "Java WM version: " + System.getProperty("java.vm.version") + "\n\n"
                            + "OS name: " + System.getProperty("os.name") + "\n"
                            + "OS architecture: " + System.getProperty("os.arch") + "\n"
                            + "OS version: " + System.getProperty("os.version") + "\n\n";
                fileWriter.write(str, 0, str.length());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

         /**
        * Closes this handler so that it will stop handling log records.
        */
        public void close() {
            try {
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


        /**
        * Flushes the data that this handler has logged.
        */
        public void flush() {
            try {
                fileWriter.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


        /**
        * Publishes the given LogRecord by writing its data to a file using
        * a TextFormatter.
        *
        * @param record The log record to publish.
        */
        public void publish(LogRecord record) {
            if (record.getLevel().intValue() < getLevel().intValue()) {
                return;
            }

            String str = getFormatter().format(record);
            try {
                fileWriter.write(str, 0, str.length());
            } catch (IOException e) {
                e.printStackTrace();
            }
            flush();
        }
    }
       
    4、定義自己的Formatter格式。

    /**
    * Formats a log record's data into human-readable text.
    */
    final class TextFormatter extends Formatter {

        /**
        * The constructor to use.
        */
        public TextFormatter() {
        }

        /**
        * Formats the given log record's data into human-readable text.
        *
        * @param record The log record whose data needs to be formatted.
        * @return The log record's data as a string.
        */
        public String format(LogRecord record) {
            String level;
            if (record.getLevel() == Level.INFO) {
                level = "INFO";
            } else if (record.getLevel() == Level.ALL) {
                level = "ALL";
            } else if (record.getLevel() == Level.SEVERE) {
                level = "SEVERE";
            } else if (record.getLevel() == Level.WARNING) {
                level = "WARNING";
            } else {
                level = "UNKNOWN";
            }

            //you can build your own result format

            String result = record.getSourceClassName() + ' ' + record.getSourceMethodName();
            result += "\n\t" + level + ": " + record.getMessage().replaceAll("\n", "\n\t");
            result += "\n\t" + new Date(record.getMillis()).toString();
            result += "\n\tThread ID: " + record.getThreadID() + '\n';

            return result;
        }
    }

    5、實際應用中的使用.

    public class Client {
        private static final Logger logger = Logger.getLogger(Client.class.getName());

        private void createDirs() {
            String dir = System.getProperty("user.home");
            String fileSeparator = System.getProperty("file.separator");

            if (!dir.endsWith(fileSeparator)) {
                dir += fileSeparator;
            }
            dir += "test";

            File file = new File(dir);
            if (file.exists() && file.isFile()) {
                logger.warning("Could not create .freecol under ~ because there already exists a regular file with the same name.");
                return;
            } else if (!file.exists()) {
                file.mkdir();
               logger.info("Could not create .freecol under ~ because there already exists a regular file with the same name.");
             }
         }
    }

    posted on 2007-05-22 16:06 leoli 閱讀(760) 評論(0)  編輯  收藏 所屬分類: java

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案(17)

    文章分類(86)

    收藏夾(3)

    flex blog

    good site

    java blog

    my friend

    tools

    抓蝦

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中文字幕亚洲一区二区三区| 日本一道一区二区免费看 | 一本岛v免费不卡一二三区| 美女裸身网站免费看免费网站| 亚洲第一中文字幕| 无码精品国产一区二区三区免费| 亚洲成A∨人片在线观看不卡| 国内永久免费crm系统z在线| 国产av天堂亚洲国产av天堂| a级毛片免费在线观看| 亚洲成AV人片在| 性色午夜视频免费男人的天堂| 亚洲色图国产精品| 久久国产免费福利永久| 国产成人精品亚洲日本在线| 午夜精品在线免费观看| 国产精品亚洲一区二区三区| 亚洲精品成人片在线观看| 99re8这里有精品热视频免费| 亚洲av最新在线网址| 97视频免费在线| 欧美激情综合亚洲一二区| 亚洲色偷偷综合亚洲AV伊人| 免费a级毛片无码a∨免费软件| 亚洲AV无码一区东京热| 1000部啪啪毛片免费看| 亚洲色精品vr一区二区三区 | 无码国产精品一区二区免费 | 国产在线一区二区综合免费视频| 亚洲AV无码一区二区三区DV | 综合亚洲伊人午夜网 | 亚洲成A∨人片天堂网无码| 亚洲精品偷拍视频免费观看| 亚洲AV日韩AV永久无码绿巨人| 免费成人福利视频| 在线观看亚洲专区| 国产成人A在线观看视频免费| 曰批全过程免费视频观看免费软件 | 亚洲丁香色婷婷综合欲色啪| 人妻视频一区二区三区免费| 一出一进一爽一粗一大视频免费的|