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

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

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

    hengheng123456789

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks

       在這里向初學者介紹一個簡單使用日志記錄程序信息的方法,希望有所幫助。


    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-04-25 15:55 哼哼 閱讀(3074) 評論(1)  編輯  收藏 所屬分類: JAVA-Common

    Feedback

    # re: (基礎)使用java.util.logging.Logger類[未登錄] 2014-04-01 11:49 123
    123456789  回復  更多評論
      

    主站蜘蛛池模板: 国产美女做a免费视频软件| 亚洲成人免费网址| 四虎在线播放免费永久视频| 亚洲国产成人精品激情| 国产精品久久久久免费a∨| 亚洲13又紧又嫩又水多| 黄瓜视频影院在线观看免费| 亚洲一区中文字幕在线电影网 | 七次郎成人免费线路视频| 国产真人无遮挡作爱免费视频| 亚洲精品理论电影在线观看| 午夜寂寞在线一级观看免费| 国产天堂亚洲国产碰碰| 久久久久亚洲AV成人网人人软件| 九九99热免费最新版| 国产V亚洲V天堂无码| 18成禁人视频免费网站| 亚洲avav天堂av在线网爱情| 国内精品免费视频自在线| 国产成人综合亚洲| 国产亚洲精久久久久久无码| 1000部夫妻午夜免费| 亚洲精品亚洲人成在线| 亚洲中文字幕伊人久久无码| 久久精品无码精品免费专区| 亚洲乱码在线播放| 亚洲情侣偷拍精品| 日韩插啊免费视频在线观看| 亚洲精品国产精品国自产网站| 国产无遮挡色视频免费视频| 久久国产乱子精品免费女| 亚洲妇女水蜜桃av网网站| 免费人成视频在线观看不卡| 手机看片国产免费永久| 2020国产精品亚洲综合网| 亚洲国产a级视频| 四虎在线视频免费观看视频| 免费精品视频在线| 亚洲精品视频免费看| 免费v片在线观看无遮挡| 精品无码人妻一区二区免费蜜桃 |