• 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; }
            }
    
        }
    声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!
  • 相关阅读:
    Modelsim仿真笔记
    RTP协议
    SHFileOperation使用
    浅谈基于IP网络的H.264关键技术及应用
    jrtplib在windows下的编译步骤
    DEBUG AND RELEASE
    CTree 使用详解 转:
    VC中给树形控件的图标加上工具提示
    MFC六大关键技术之(二)——运行时类型识别(RTTI)
    Linux下编译jrtplib和jthread:
  • 原文地址:https://www.cnblogs.com/lsgsanxiao/p/9020264.html
Copyright © 2020-2023  润新知