<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  回復  更多評論
      

    主站蜘蛛池模板: 日韩午夜理论免费TV影院| 在线观看免费人成视频色9| 亚洲国产成人久久综合碰碰动漫3d| 永久黄色免费网站| 青青青亚洲精品国产| 亚洲av无码专区在线播放| 免费av欧美国产在钱| 国产vA免费精品高清在线观看| 中文字幕亚洲精品资源网| 国产无遮挡裸体免费视频| 国内精品久久久久影院免费| 亚洲色大成网站www永久网站| 国产福利电影一区二区三区,亚洲国模精品一区| 亚洲免费人成在线视频观看| 亚洲国产精品无码久久98| 亚洲AV无码一区二区二三区入口| 97人伦色伦成人免费视频| 成人无码WWW免费视频| 亚洲精品乱码久久久久久V| 久久丫精品国产亚洲av不卡 | 亚洲av片在线观看| 亚洲最大的成网4438| 亚洲综合激情另类专区| 免费无码AV片在线观看软件| 最近免费中文字幕MV在线视频3| 亚洲熟妇丰满xxxxx| 西西人体44rt高清亚洲| 亚洲黄黄黄网站在线观看| 日韩吃奶摸下AA片免费观看| 曰批全过程免费视频在线观看无码| 亚洲av无一区二区三区| 亚洲国产成+人+综合| 亚洲精品乱码久久久久久按摩| 大陆一级毛片免费视频观看i| 99国产精品视频免费观看| 成年大片免费视频播放一级| 亚洲精品无码久久久久YW| 亚洲精品国产啊女成拍色拍| 久久亚洲欧洲国产综合| 国产免费av片在线播放| 最新免费jlzzjlzz在线播放|