OSDN Git Service

構成変更のためファイルを置き直し。
[kybernetes/Kybernetes.git] / base / control / KybernetesLogger.cs
diff --git a/base/control/KybernetesLogger.cs b/base/control/KybernetesLogger.cs
new file mode 100644 (file)
index 0000000..8c304b4
--- /dev/null
@@ -0,0 +1,129 @@
+using System;\r
+using System.Text;\r
+using System.IO;\r
+\r
+namespace com.andoutomo.kybernetes.control\r
+{\r
+\r
+\r
+    public enum LogMode\r
+    {\r
+        Error,\r
+        Trace,\r
+        Debug\r
+\r
+    }\r
+    public class KybernetesLogger\r
+    {\r
+        string logpath;\r
+        StreamWriter writer;\r
+\r
+\r
+        public static LogMode CurrentLogMode\r
+        {\r
+            private get;\r
+            set;\r
+        }\r
+\r
+        static KybernetesLogger innerObject;\r
+\r
+        private KybernetesLogger()\r
+        {\r
+            logpath = System.AppDomain.CurrentDomain.BaseDirectory + "kybernetes.log";\r
+        }\r
+        /// <summary>\r
+        /// ログ出力オブジェクト\r
+        /// </summary>\r
+        public static KybernetesLogger Log\r
+        {\r
+            get\r
+            {\r
+                if (innerObject == null)\r
+                {\r
+                    innerObject = new KybernetesLogger();\r
+                }\r
+                return innerObject;\r
+            }\r
+        }\r
+        /// <summary>\r
+        /// ログレベル・エラー(常時出力)\r
+        /// </summary>\r
+        /// <param name="logContents"></param>\r
+        public void error(string logContents)\r
+        {\r
+            switch (CurrentLogMode)\r
+            {\r
+                case LogMode.Error:\r
+                case LogMode.Trace:\r
+                case LogMode.Debug:\r
+                    sendLog(logContents);\r
+                    break;\r
+                default:\r
+                    break;\r
+            }\r
+        }\r
+        /// <summary>\r
+        /// ログレベル・トレース(通常時は出力しない)\r
+        /// </summary>\r
+        /// <param name="logContents"></param>\r
+        public void trace(string logContents)\r
+        {\r
+            switch (CurrentLogMode)\r
+            {\r
+                case LogMode.Error:\r
+                    break;\r
+                case LogMode.Trace:\r
+                case LogMode.Debug:\r
+                    sendLog(logContents);\r
+                    break;\r
+                default:\r
+                    break;\r
+            }\r
+        }\r
+        /// <summary>\r
+        /// ログレベル・デバッグ(通常/トレース時は出力しない)\r
+        /// </summary>\r
+        /// <param name="logContents"></param>\r
+        public void debug(string logContents)\r
+        {\r
+            switch (CurrentLogMode)\r
+            {\r
+                case LogMode.Error:\r
+                case LogMode.Trace:\r
+                    break;\r
+                case LogMode.Debug:\r
+                    sendLog(logContents);\r
+                    break;\r
+                default:\r
+                    break;\r
+            }\r
+        }\r
+\r
+\r
+        private void sendLog(string logContents)\r
+        {\r
+            StringBuilder builder = new StringBuilder();\r
+            builder.Append(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff")).Append("---");\r
+            builder.Append(logContents);\r
+\r
+            try\r
+            {\r
+                writer = new StreamWriter(logpath, true, System.Text.Encoding.GetEncoding("shift_jis"));\r
+                writer.WriteLine(builder.ToString());\r
+            }\r
+            catch (Exception e)\r
+            {\r
+                //ここでは何もしない\r
+            }\r
+            finally\r
+            {\r
+                if (writer != null)\r
+                {\r
+                    writer.Close();\r
+                }\r
+\r
+            }\r
+        }\r
+\r
+    }\r
+}\r