Bläddra i källkod

存储采集数据

zhuhao 2 år sedan
förälder
incheckning
5a0d3d150a
1 ändrade filer med 74 tillägg och 0 borttagningar
  1. 74 0
      IMCS_CCS/Utils/Log/CollectDataLog.cs

+ 74 - 0
IMCS_CCS/Utils/Log/CollectDataLog.cs

@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Concurrent;
+using System.IO;
+using System.Threading.Tasks;
+
+namespace IMCS.CCS
+{
+    public class CollectDataLog
+    {
+        private static CollectDataLog _log = new CollectDataLog();
+        public static CollectDataLog Instance { get { return _log; } }
+        DataDefaultList item = new DataDefaultList();
+        string Path = AppDomain.CurrentDomain.BaseDirectory + "webApiLog/采集数据";
+        ConcurrentQueue<DataDefaultList> qs = new ConcurrentQueue<DataDefaultList>();
+        System.IO.StreamWriter streamWriter;
+
+        public CollectDataLog()
+        {
+            if (!System.IO.Directory.Exists(Path))
+            {
+                Directory.CreateDirectory(Path);
+            }
+            ThreadWrite();
+        }
+
+        public void WriteLogAdd(string msg, string path = null)
+        {
+            qs.Enqueue(new DataDefaultList() { msg = msg, path = path });
+        }
+        public delegate void DelShowLog(string msg);
+        public event DelShowLog EveShowLog;
+        private void WriteLog(string msg, string path)
+        {
+            if (string.IsNullOrEmpty(path))
+            {
+                path = DateTime.Now.ToString("yyyy-MM-dd");
+            }
+            else
+            {
+                path = path + " " + DateTime.Now.ToString("yyyy-MM-dd");
+            }
+            streamWriter = new System.IO.StreamWriter(Path + "\\" + path + ".txt", true);
+            streamWriter.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "-->>>" + msg);
+            streamWriter.Close();
+            this.EveShowLog?.Invoke(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "-->>>" + msg);
+        }
+        private void ThreadWrite()
+        {
+            Task.Factory.StartNew(() =>
+            {
+
+                while (true)
+                {
+                    System.Threading.Thread.Sleep(20);
+                    if (qs.Count > 0)
+                    {
+                        if (qs.TryDequeue(out item))
+                        {
+                            WriteLog(item.msg, item.path);
+                        }
+                    }
+                }
+            });
+        }
+
+    }
+
+    public class DataDefaultList
+    {
+        public string path { get; set; }
+
+        public string msg { get; set; }
+    }
+}