zoukankan      html  css  js  c++  java
  • LogHelp 日记分天记录,只记30天日记

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    
    namespace Share
    {
        public class LogHelp
        {
            private static object Block = new object();
            #region 记录日志
            /// <summary>
            /// 记录日志
            /// </summary>
            /// <param name="msg"></param>
            public static void WriteLog(string msg)
            {
    
                //string path = @"C:log.txt";
                lock (Block)
                {
                    string filename = DateTime.Now.ToString("yyyyMMdd");
                    //该日志文件会存在windows服务程序目录下
                    string path = AppDomain.CurrentDomain.BaseDirectory + "\Logs\" + filename + ".txt";
    
                    #region 删除前30天的日记
                    string sYue = DateTime.Now.AddDays(-30).ToString("yyyyMMdd");
                    FileHelp.DeleteFile(AppDomain.CurrentDomain.BaseDirectory + "\Logs\" + sYue + ".txt");
                    #endregion
                    if (!Directory.Exists(path))//如果不存在,则创建
                    {
                        Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\Logs\");
                    }
    
    
                    FileInfo file = new FileInfo(path);
                    if (!file.Exists)
                    {
                        FileStream fs;
                        fs = File.Create(path);
                        fs.Close();
                    }
                    else if (file.Length > 30 * 1000 * 1000)
                    {
                        file.Delete();
                        FileStream fs;
                        fs = File.Create(path);
                        fs.Close();
                    }
    
                    using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
                    {
                        using (StreamWriter sw = new StreamWriter(fs))
                        {
                            sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff") + "   " + msg);
                        }
                    }
                }
            }
            public static void WriteLog2(string msg)
            {
    
                //string path = @"C:log.txt";
                lock (Block)
                {
                    //该日志文件会存在windows服务程序目录下
                    string path = AppDomain.CurrentDomain.BaseDirectory + "\log.txt";
                    FileInfo file = new FileInfo(path);
                    if (!file.Exists)
                    {
                        FileStream fs;
                        fs = File.Create(path);
                        fs.Close();
                    }
                    else if (file.Length > 30 * 1000 * 1000)
                    {
                        file.Delete();
                        FileStream fs;
                        fs = File.Create(path);
                        fs.Close();
                    }
    
                    using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
                    {
                        using (StreamWriter sw = new StreamWriter(fs))
                        {
                            sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff") + "   " + msg);
                        }
                    }
                }
            }
    
            #endregion
        }
    }

     改进版,加入线程处理写日记

    public class LogHelp
        {
            /// <summary>
            /// 1为写日记,0为不写
            /// </summary>
            private static int LogMode = 1;
            private static object Block = new object();
    
            /// <summary>
            /// 处理缓存控制器
            /// </summary>
            private static Queue<LogMsg> _HandleCacheCr = new Queue<LogMsg>();
    
            public static void Init(int logMode)
            {
                LogMode = logMode;
                if (LogMode == 1)
                {
                    Thread td = new Thread(WriteLogThread);
                    td.Start();
                }
            }
    
            private static void WriteLogThread()
            {
                while (LogMode == 1)
                {
                    WriteLog();
                    Thread.Sleep(10);
                }
            }
    
            private static void WriteLog()
            {
                if (_HandleCacheCr.Count <= 0) return;
                LogMsg logMsg = _HandleCacheCr.Dequeue();
                Write_Log(logMsg.Time.ToString("yyyy-MM-dd HH:mm:ss:ffff") + "   " + logMsg.Msg);
            }
    
            #region 记录日志
            public static void WriteLog(string msg)
            {
                if (LogMode != 1) return;
                LogMsg logMsg = new LogMsg();
                logMsg.Time = DateTime.Now;
                logMsg.Msg = msg;
                _HandleCacheCr.Enqueue(logMsg);
    
            }
            /// <summary>
            /// 记录日志
            /// </summary>
            /// <param name="msg"></param>
            private static void Write_Log(string msg)
            {
                
                //string path = @"C:log.txt";
                lock (Block)
                {
                    string filename = DateTime.Now.ToString("yyyyMMdd");
                    //该日志文件会存在windows服务程序目录下
                    string path = AppDomain.CurrentDomain.BaseDirectory + "\Logs\" + filename + ".txt";
    
                    #region 删除前30天的日记
                    string sYue = DateTime.Now.AddDays(-30).ToString("yyyyMMdd");
                    FileHelp.DeleteFile(AppDomain.CurrentDomain.BaseDirectory + "\Logs\" + sYue + ".txt");
                    #endregion
                    if (!Directory.Exists(path))//如果不存在,则创建
                    {
                        Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\Logs\");
                    }
    
    
                    FileInfo file = new FileInfo(path);
                    if (!file.Exists)
                    {
                        FileStream fs;
                        fs = File.Create(path);
                        fs.Close();
                    }
                    else if (file.Length > 30 * 1000 * 1000)
                    {
                        file.Delete();
                        FileStream fs;
                        fs = File.Create(path);
                        fs.Close();
                    }
    
                    using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
                    {
                        using (StreamWriter sw = new StreamWriter(fs))
                        {
                            sw.WriteLine( msg);
                        }
                    }
                }
            }
    
    
            #endregion
    
            public class LogMsg
            {
                /// <summary>
                /// 写日记的时间
                /// </summary>
                public DateTime Time { get; set; }
                /// <summary>
                /// 信息
                /// </summary>
                public string Msg { get; set; }
            }
    
        }
    声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!
  • 相关阅读:
    #454. 【UER #8】打雪仗
    6496. 【GDOI2020模拟03.08】圣痕
    6495. 【GDOI2020模拟03.08】死星
    6494. 【GDOI2020模拟03.08】勘探
    NOI Online划水记
    6482. 【GDOI2020模拟02.22】代数几何(algebraic)
    6493. 【GDOI2020模拟03.04】迷宫
    6492. 【GDOI2020模拟03.04】多项式
    6491. 【GDOI2020模拟03.04】铺路
    #76. 【UR #6】懒癌
  • 原文地址:https://www.cnblogs.com/lsgsanxiao/p/9020264.html
Copyright © 2011-2022 走看看