OSDN Git Service

2019-02-11
[hayashilib/hayashi.git] / src / hayashi / yuu / tools / logger / LoggerFactory.java
1 package hayashi.yuu.tools.logger;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.InputStream;\r
5 import java.util.logging.LogManager;\r
6 import java.util.logging.Logger;\r
7 \r
8 \r
9 /**\r
10  * ロギングファイルに動作ログを出力する簡単なモデル\r
11  * "log"+日時+".log"ファイルに出力される。\r
12  * 利用例:\r
13  * (1) インスタンスを取得する。\r
14  *              Logger logger = LoggerFactory.getInstance();\r
15  * (2) ログ出力例\r
16  *              logger.finest("[finest] 詳細レベル(高)");\r
17  *              logger.finer("[finer] 詳細レベル(中)");\r
18  *              logger.fine("[fine] 詳細レベル(小)");\r
19  *              logger.config("[config] 設定");\r
20  *              logger.info("[info] 情報");\r
21  *              logger.warning("[warning] 警告");\r
22  *              logger.severe("[severe] 致命的");\r
23  * @author yuu\r
24  * @version 2010/02/07\r
25  * @since 2010/02/07\r
26  */\r
27 public abstract class LoggerFactory\r
28 {\r
29         public static void main(String[] args) {\r
30                 /*\r
31                  * (設定例)\r
32                  *              handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler\r
33                  *              .level=FINEST\r
34                  *\r
35                  *              java.util.logging.ConsoleHandler.level=FINEST\r
36                  *              java.util.logging.ConsoleHandler.formatter=hayashi.yuu.tools.logger.YuuLogFormatter\r
37                  *\r
38                  *              java.util.logging.FileHandler.level=WARNING\r
39                  *              java.util.logging.FileHandler.pattern=SampleLogging%u.%g.log\r
40                  *              java.util.logging.FileHandler.formatter=hayashi.yuu.tools.logger.YuuLogFormatter\r
41                  *              java.util.logging.FileHandler.count=10\r
42                  *\r
43                  *\r
44                  * 標準設定時でのログ出力。\r
45                  * info、warning、severeの3つのレベルのみ標準エラー出力に出力されます。\r
46                  * また、同時にファイルへも出力します。\r
47                  * 出力先ファイルは「Logging%u.%g.txt」。ログファイルは10個でローテーションする。\r
48                  *\r
49                  * 情報: [info] 情報\r
50                  * 警告: [warning] 警告\r
51                  * 致命的: [severe] 致命的\r
52                  */\r
53                 Logger logger;\r
54                 try {\r
55                         logger = LoggerFactory.getInstance();\r
56                         logger.finest("[finest] 詳細レベル(高)");\r
57                         logger.finer("[finer] 詳細レベル(中)");\r
58                         logger.fine("[fine] 詳細レベル(小)");\r
59                         logger.config("[config] 設定");\r
60                         logger.info("[info] 情報");\r
61                         logger.warning("[warning] 警告");\r
62                         logger.severe("[severe] 致命的");\r
63                 }\r
64                 catch (Exception e) {\r
65                         e.printStackTrace();\r
66                 }\r
67         }\r
68 \r
69     /**\r
70          * ログ設定プロパティファイルのファイル内容\r
71          *\r
72          */\r
73         protected static final String LOGGING_PROPERTIES = "log.properties";\r
74 \r
75         /**\r
76          * 簡単な標準ロガーを得る\r
77          * @return      標準ロガー\r
78          */\r
79         public static Logger getInstance() {\r
80                 final Logger logger = Logger.getLogger("log");                                                  // Loggerオブジェクトの生成\r
81 \r
82                 logger.fine("ログ設定: "+ LOGGING_PROPERTIES +"をもとにログを設定します。");\r
83                 final InputStream inStream = hayashi.yuu.tools.logger.YuuLogFormatter.class.getClassLoader().getResourceAsStream(LOGGING_PROPERTIES);\r
84                 if (inStream == null) {\r
85                         logger.info("ログ設定: "+ LOGGING_PROPERTIES +"はクラスパスには見つかりませんでした。");\r
86                 }\r
87                 else {\r
88             try {\r
89                 LogManager.getLogManager().readConfiguration(inStream);\r
90                 logger.config("ログ設定: LogManagerを設定しました。");\r
91             }\r
92             catch (IOException e) {\r
93                 logger.warning("ログ設定: LogManager設定の際に例外が発生しました。:" + e.toString());\r
94             }\r
95                 finally {\r
96                     try {\r
97                         if (inStream != null) inStream.close();\r
98                     }\r
99                     catch (IOException e) {\r
100                         logger.warning("ログ設定: ログ設定プロパティファイルのストリームクローズ時に例外が発生しました。:" + e.toString());\r
101                     }\r
102                 }\r
103                 }\r
104                 return logger;\r
105         }\r
106 }\r