zoukankan      html  css  js  c++  java
  • 一种多线程写日志文件的解决方案 c#源代码演示

    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Text;
    using System.IO;
    using System.Timers;

    namespace ComUtil
    {
        public class LogWriter
        {
            private LogWriter()
            {
                logtimer.Stop();
                logtimer.Elapsed += new ElapsedEventHandler(logtimer_Elapsed);
            }

             private  void logtimer_Elapsed(object sender, ElapsedEventArgs e)
            {
                string rootpath = System.AppDomain.CurrentDomain.BaseDirectory;

                if (!Directory.Exists(rootpath + "\logs"))
                {
                    Directory.CreateDirectory(rootpath + "\logs");
                }


               
                while(LogList.Count>0)
                {
                    StreamWriter Writer = new StreamWriter(rootpath + "\logs\" + LogList[0]["logfilename"].ToString(), true);
                    StringBuilder wb = new StringBuilder();

                    wb.Append("[");
                    wb.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    wb.Append("]");
                    wb.Append("[");
                    wb.Append(LogList[0]["logtype"].ToString());
                    wb.Append("]");
                    wb.Append(LogList[0]["msg"].ToString());
                    wb.Append(" ");
                    Writer.Write(wb.ToString());
                    wb = wb.Remove(0, wb.Length);
                    Writer.Flush();
                    Writer.Close();

                    LogList.RemoveAt(0);
                }

                logtimer.Stop();  //关闭定时器

            }

            private List<Hashtable> LogList = new List<Hashtable>();
            private static LogWriter mInstance = null;

            private Timer logtimer = new Timer(1000);

            public static LogWriter GetInstance()
            {
                if (mInstance==null)
                {
                    mInstance = new LogWriter();
                }
                return mInstance;
            }

          
            public void WriteMessage(string msg,string logtype,string logfilename)
            {

                Hashtable newlog = new Hashtable();
                newlog.Add("msg", msg);
                newlog.Add("logtype", logtype);
                newlog.Add("logfilename", logfilename);
                LogList.Add(newlog);
                logtimer.Start();
            }


        }
    }

  • 相关阅读:
    青魔法圣堂法术 Django的技术栈(持续更新)
    青魔法圣堂法术 Django REST framework (DRF) 框架(持续更新)
    Python无法卸载的解决办法
    Django开发social-auth-app-django 第三方登陆
    【转载】青魔法圣堂法术Django项目知识点汇总
    基于session 的springMvc 国际化
    java导出生成csv文件
    mybatis + log4j 打印mybatis的sql
    spring Mvc + Mybatis 中使用junit
    spring官网项目
  • 原文地址:https://www.cnblogs.com/cxd4321/p/3934290.html
Copyright © 2011-2022 走看看