java.util.logging.Logger 類

           




          1、可以在main方法中書寫以下語句進行l(wèi)og。

                  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 閱讀(762) 評論(0)  編輯  收藏 所屬分類: java

          導航

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

          統(tǒng)計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案(17)

          文章分類(86)

          收藏夾(3)

          flex blog

          good site

          java blog

          my friend

          tools

          抓蝦

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 罗城| 浦东新区| 儋州市| 西乌珠穆沁旗| 镇雄县| 沅江市| 罗江县| 佛坪县| 保山市| 共和县| 丘北县| 郸城县| 乐陵市| 南昌市| 永和县| 七台河市| 承德县| 新绛县| 岗巴县| 建阳市| 三江| 沾化县| 平乡县| 察雅县| 融水| 定远县| 兴文县| 阿坝| 淳安县| 岑溪市| 互助| 巴马| 三江| 肃北| 葫芦岛市| 西丰县| 和林格尔县| 东辽县| 行唐县| 会东县| 滨州市|