package jp.gr.java_conf.skrb.logging; import java.util.Timer; import java.util.TimerTask; import java.util.logging.ConsoleHandler; import java.util.logging.FileHandler; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.MemoryHandler; public class FavoriteNumberWithLog7 extends FavoriteNumberWithLog1 { private MemoryHandler memoryHandler; public FavoriteNumberWithLog7(){ super(); logger.setUseParentHandlers(false); initHandler(); setLevel(); } private void initHandler(){ // Handler を生成して、登録 logger.addHandler(new ConsoleHandler()); Handler fileHandler; try{ fileHandler = new FileHandler("fnumber%u.log"); // FileHandler をターゲットにした MemoryHandler memoryHandler = new MemoryHandler(fileHandler, 100, Level.WARNING); logger.addHandler(memoryHandler); // 定期的にバッファ中のログを push する Timer timer = new Timer(); timer.schedule(new TimerTask(){ public void run(){ memoryHandler.push(); memoryHandler.flush(); } }, 0, 60000L); }catch (java.io.IOException ex){ ex.printStackTrace(); } } private void setLevel(){ // Logger の Level 設定 logger.setLevel(Level.ALL); // Handler の Level 設定 Handler[] handlers = logger.getHandlers(); for(int i = 0 ; i < handlers.length ; i++){ handlers[i].setLevel(Level.ALL); } } public static void main(String[] args){ new FavoriteNumberWithLog7().init(); } }