• 一个关于日志操作方法


     public static class LogHelper<T>
        {
            private static System.Timers.Timer _timer;
            private static ConcurrentDictionary<string, ConcurrentQueue<T>> _dic = new ConcurrentDictionary<string, ConcurrentQueue<T>>();
    
            static LogHelper()
            {
                _dic = new ConcurrentDictionary<string, ConcurrentQueue<T>>();
                _timer = new System.Timers.Timer();
                _timer.Interval = 1000*60;
                _timer.Enabled = true;
                _timer.Start();
                _timer.Elapsed += _timer_Elapsed;
            }
    
            private static void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                foreach (var key in _dic.Keys)
                {
                    ConcurrentQueue<T> q;
                    var has = _dic.TryGetValue(key, out q);
                    if (!has)
                        continue;
    
                    List<T> lst = new List<T>();
                    while (q.Count > 0)
                    {
                        T obj;
                        var hasorder = q.TryDequeue(out obj);
                        if (hasorder)
                            lst.Add(obj);
                    }
                    if (lst.Count > 0)
                    {
                        var str = Newtonsoft.Json.JsonConvert.SerializeObject(lst);
    
                        string pushDataSavePatch = ConfigurationManager.AppSettings["PushDataPath"];
    
                        var fileName = DateTime.Today.ToString("yyyy-MM-dd");
                        var fileRoad = pushDataSavePatch + "\\" + fileName;
                        if (Directory.Exists(fileRoad) == false)//如果不存在就创建file文件夹
                        {
                            Directory.CreateDirectory(fileRoad);
                        }
    
                        string filePath = fileRoad + $"\\{key}.txt";
                        if (File.Exists(filePath))
                        {
                            using (StreamWriter sw = File.AppendText(filePath))
                            {
                                sw.WriteLine(str);
                            }
                        }
                        else
                        {
                            File.WriteAllText(filePath, str + "\r\n");
                        }
    
    
    
                    }
    
                }
            }
    
            public static void Log(string key, T obj)
            {
                _dic.TryAdd(key, new ConcurrentQueue<T>());
                ConcurrentQueue<T> q;
                _dic.TryGetValue(key, out q);
                q.Enqueue(obj);
            }
    
        }

    调用

                        LogHelper<string>.Log("TestLog", jsonStr);
  • 相关阅读:
    了解Javascript的函数调用和'this'
    js 实现简单收起功能
    页面跳转,form方式提交参数或数据
    查看图片大图效果
    2018phpstom 破解码
    JDK安装
    java 语法释义
    java的特性
    CSS(属性)
    CSS(层叠样式表概述)
  • 原文地址:https://www.cnblogs.com/xuhongcai/p/6927981.html
Copyright © 2020-2023  润新知