OSDN Git Service

version 1.0.0.6
[kybernetes/Kybernetes.git] / KyberNetes / control / KybernetesLogger.cs
1 using System;\r
2 using System.Text;\r
3 using System.IO;\r
4 \r
5 namespace com.andoutomo.kybernetes.control\r
6 {\r
7 \r
8 \r
9     internal enum LogMode\r
10     {\r
11         Error,\r
12         Trace,\r
13         Debug\r
14 \r
15     }\r
16     internal class KybernetesLogger\r
17     {\r
18         string logpath;\r
19         StreamWriter writer;\r
20 \r
21 \r
22         internal static LogMode CurrentLogMode\r
23         {\r
24             private get;\r
25             set;\r
26         }\r
27 \r
28         static KybernetesLogger innerObject;\r
29 \r
30         private KybernetesLogger()\r
31         {\r
32             logpath = System.AppDomain.CurrentDomain.BaseDirectory + "asurada.log";\r
33         }\r
34         /// <summary>\r
35         /// ログ出力オブジェクト\r
36         /// </summary>\r
37         internal static KybernetesLogger Log\r
38         {\r
39             get\r
40             {\r
41                 if (innerObject == null)\r
42                 {\r
43                     innerObject = new KybernetesLogger();\r
44                 }\r
45                 return innerObject;\r
46             }\r
47         }\r
48         /// <summary>\r
49         /// ログレベル・エラー(常時出力)\r
50         /// </summary>\r
51         /// <param name="logContents"></param>\r
52         internal void error(string logContents)\r
53         {\r
54             switch (CurrentLogMode)\r
55             {\r
56                 case LogMode.Error:\r
57                 case LogMode.Trace:\r
58                 case LogMode.Debug:\r
59                     sendLog(logContents);\r
60                     break;\r
61                 default:\r
62                     break;\r
63             }\r
64         }\r
65         /// <summary>\r
66         /// ログレベル・トレース(通常時は出力しない)\r
67         /// </summary>\r
68         /// <param name="logContents"></param>\r
69         internal void trace(string logContents)\r
70         {\r
71             switch (CurrentLogMode)\r
72             {\r
73                 case LogMode.Error:\r
74                     break;\r
75                 case LogMode.Trace:\r
76                 case LogMode.Debug:\r
77                     sendLog(logContents);\r
78                     break;\r
79                 default:\r
80                     break;\r
81             }\r
82         }\r
83         /// <summary>\r
84         /// ログレベル・デバッグ(通常/トレース時は出力しない)\r
85         /// </summary>\r
86         /// <param name="logContents"></param>\r
87         internal void debug(string logContents)\r
88         {\r
89             switch (CurrentLogMode)\r
90             {\r
91                 case LogMode.Error:\r
92                 case LogMode.Trace:\r
93                     break;\r
94                 case LogMode.Debug:\r
95                     sendLog(logContents);\r
96                     break;\r
97                 default:\r
98                     break;\r
99             }\r
100         }\r
101 \r
102 \r
103         private void sendLog(string logContents)\r
104         {\r
105             StringBuilder builder = new StringBuilder();\r
106             builder.Append(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff")).Append("---");\r
107             builder.Append(logContents);\r
108 \r
109             try\r
110             {\r
111                 writer = new StreamWriter(logpath, true, System.Text.Encoding.GetEncoding("shift_jis"));\r
112                 writer.WriteLine(builder.ToString());\r
113             }\r
114             catch (Exception e)\r
115             {\r
116                 //ここでは何もしない\r
117             }\r
118             finally\r
119             {\r
120                 if (writer != null)\r
121                 {\r
122                     writer.Close();\r
123                 }\r
124 \r
125             }\r
126         }\r
127 \r
128     }\r
129 }\r