--- /dev/null
+package hayashi.yuu.tools.logger;\r
+\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.util.logging.LogManager;\r
+import java.util.logging.Logger;\r
+\r
+\r
+/**\r
+ * ロギングファイルに動作ログを出力する簡単なモデル\r
+ * "log"+日時+".log"ファイルに出力される。\r
+ * 利用例:\r
+ * (1) インスタンスを取得する。\r
+ * Logger logger = LoggerFactory.getInstance();\r
+ * (2) ログ出力例\r
+ * logger.finest("[finest] 詳細レベル(高)");\r
+ * logger.finer("[finer] 詳細レベル(中)");\r
+ * logger.fine("[fine] 詳細レベル(小)");\r
+ * logger.config("[config] 設定");\r
+ * logger.info("[info] 情報");\r
+ * logger.warning("[warning] 警告");\r
+ * logger.severe("[severe] 致命的");\r
+ * @author yuu\r
+ * @version 2010/02/07\r
+ * @since 2010/02/07\r
+ */\r
+public abstract class LoggerFactory\r
+{\r
+ public static void main(String[] args) {\r
+ /*\r
+ * (設定例)\r
+ * handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler\r
+ * .level=FINEST\r
+ *\r
+ * java.util.logging.ConsoleHandler.level=FINEST\r
+ * java.util.logging.ConsoleHandler.formatter=hayashi.yuu.tools.logger.YuuLogFormatter\r
+ *\r
+ * java.util.logging.FileHandler.level=WARNING\r
+ * java.util.logging.FileHandler.pattern=SampleLogging%u.%g.log\r
+ * java.util.logging.FileHandler.formatter=hayashi.yuu.tools.logger.YuuLogFormatter\r
+ * java.util.logging.FileHandler.count=10\r
+ *\r
+ *\r
+ * 標準設定時でのログ出力。\r
+ * info、warning、severeの3つのレベルのみ標準エラー出力に出力されます。\r
+ * また、同時にファイルへも出力します。\r
+ * 出力先ファイルは「Logging%u.%g.txt」。ログファイルは10個でローテーションする。\r
+ *\r
+ * 情報: [info] 情報\r
+ * 警告: [warning] 警告\r
+ * 致命的: [severe] 致命的\r
+ */\r
+ Logger logger;\r
+ try {\r
+ logger = LoggerFactory.getInstance();\r
+ logger.finest("[finest] 詳細レベル(高)");\r
+ logger.finer("[finer] 詳細レベル(中)");\r
+ logger.fine("[fine] 詳細レベル(小)");\r
+ logger.config("[config] 設定");\r
+ logger.info("[info] 情報");\r
+ logger.warning("[warning] 警告");\r
+ logger.severe("[severe] 致命的");\r
+ }\r
+ catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ /**\r
+ * ログ設定プロパティファイルのファイル内容\r
+ *\r
+ */\r
+ protected static final String LOGGING_PROPERTIES = "log.properties";\r
+\r
+ /**\r
+ * 簡単な標準ロガーを得る\r
+ * @return 標準ロガー\r
+ */\r
+ public static Logger getInstance() {\r
+ final Logger logger = Logger.getLogger("log"); // Loggerオブジェクトの生成\r
+\r
+ logger.fine("ログ設定: "+ LOGGING_PROPERTIES +"をもとにログを設定します。");\r
+ final InputStream inStream = hayashi.yuu.tools.logger.YuuLogFormatter.class.getClassLoader().getResourceAsStream(LOGGING_PROPERTIES);\r
+ if (inStream == null) {\r
+ logger.info("ログ設定: "+ LOGGING_PROPERTIES +"はクラスパスには見つかりませんでした。");\r
+ }\r
+ else {\r
+ try {\r
+ LogManager.getLogManager().readConfiguration(inStream);\r
+ logger.config("ログ設定: LogManagerを設定しました。");\r
+ }\r
+ catch (IOException e) {\r
+ logger.warning("ログ設定: LogManager設定の際に例外が発生しました。:" + e.toString());\r
+ }\r
+ finally {\r
+ try {\r
+ if (inStream != null) inStream.close();\r
+ }\r
+ catch (IOException e) {\r
+ logger.warning("ログ設定: ログ設定プロパティファイルのストリームクローズ時に例外が発生しました。:" + e.toString());\r
+ }\r
+ }\r
+ }\r
+ return logger;\r
+ }\r
+}\r