| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | using System;using System.Collections.Concurrent;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace YG{    public class Log    {        private static Log _log = new Log();        public static Log Instance { get { return _log; } }        LogDefaultList item = new LogDefaultList();        string Path = AppDomain.CurrentDomain.BaseDirectory+"YGLog";        ConcurrentQueue<LogDefaultList> qs = new ConcurrentQueue<LogDefaultList>();        System.IO.StreamWriter streamWriter;           public Log()        {            if (!System.IO.Directory.Exists(Path))            {                Directory.CreateDirectory(Path);            }            ThreadWrite();        }        public void WriteLogAdd(string msg, string path=null)        {            qs.Enqueue(new LogDefaultList() { 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");            }            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 LogDefaultList    {        public string path { get; set; }              public string msg { get; set; }    }}
 |