对于一个完整的程序系统,一个日志记录是必不可少的。可以用它来记录程序在运行过程中的运行状态和报错信息。比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等。首先,在你的解决方案中,适当的目录中新建一个类,比如 LogManager:编写如下代码: 1 /// < ...
对于一个完整的程序系统,一个日志记录是必不可少的。可以用它来记录程序在运行过程中的运行状态和报错信息。比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等。
首先,在你的解决方案中,适当的目录中新建一个类,比如 LogManager:
编写如下代码:
1 /// <summary> 2 /// 日志管理 3 /// </summary> 4 public class LogManager 5 { 6 private get='_blank'>string _logDir; // 日志文件存放目录 7 8 private static LogManager m_LogInstance; // 静态单例对象 9 // 静态构造函数10 static LogManager()11 {12 m_LogInstance = new LogManager();13 }14 // 私有构造函数(必备函数,不允许外部对该类进行实例化)15 private LogManager()16 {17 _logDir = Environment.CurrentDirectory + "\\Log";18 this.DelOldFile();19 }20 /// <summary>21 /// 属性获取单例对象22 /// </summary>23 public static LogManager LogInstance24 {25 get { return m_LogInstance; }26 }27 28 /// <summary>29 /// 写入一条日志记录30 /// </summary>31 /// <param name="pLog">日志记录内容</param>32 public void WriteLog(string pLog)33 {34 lock (this._logDir) //排它锁:防止主程序中出现多线程同时访问同一个文件出错35 {36 // 根据时间创建一个日志文件37 var vDT = DateTime.Now;38 string vLogFile = string.Format("{0}\\Log{1}{2}{3}.log",_logDir,vDT.Year,vDT.Month,vDT.Day);39 // 创建文件流,用于写入40 using (FileStream fs = new FileStream(vLogFile, FileMode.Append))41 {42 StreamWriter sw = new StreamWriter(fs);43 sw.WriteLine("{0} >> {1}", vDT.ToString("yyyy-MM-dd HH:mm:ss"), pLog);44 sw.Flush();45 sw.Close();46 fs.Close();47 }48 }49 }50 51 // 删除过期文件52 private void DelOldFile()53 {54 // 遍历指定文件夹下所有子文件,将一定期限前的日志文件删除。55 if (!Directory.Exists(this._logDir))56 {57 // 如果文件夹目录不存在58 Directory.CreateDirectory(this._logDir);59 return;60 }61 62 var vFiles = (new DirectoryInfo(this._logDir)).GetFiles();63 for (int i = vFiles.Length - 1; i >= 0; i--)64 { 65 // 指定条件,然后删除66 if (vFiles[i].Name.Contains("Log"))67 {68 if ((DateTime.Now - vFiles[i].LastWriteTime).Days > 7)69 {70 vFiles[i].Delete();71 }72 } 73 }74 }75 76 } // end class
原标题:C#实现程序单例日志输出
关键词:C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。