OSDN Git Service

meven
[hayashilib/hayashi.git] / src / main / java / hayashi / yuu / tools / logger / LoggerFactory.java
diff --git a/src/main/java/hayashi/yuu/tools/logger/LoggerFactory.java b/src/main/java/hayashi/yuu/tools/logger/LoggerFactory.java
new file mode 100755 (executable)
index 0000000..d10da18
--- /dev/null
@@ -0,0 +1,106 @@
+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