C#实现程序单例日志输出功能
对于一个完整的程序系统,一个日志记录是必不可少的。可以用它来记录程序在运行过程中的运行状态和报错信息。比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等。
首先,在你的解决方案中,适当的目录中新建一个类,比如LogManager:
编写如下代码:
//////日志管理 /// publicclassLogManager { privatestring_logDir;//日志文件存放目录 privatestaticLogManagerm_LogInstance;//静态单例对象 //静态构造函数 staticLogManager() { m_LogInstance=newLogManager(); } //私有构造函数(必备函数,不允许外部对该类进行实例化) privateLogManager() { _logDir=Environment.CurrentDirectory+"\\Log"; this.DelOldFile(); } //////属性获取单例对象 /// publicstaticLogManagerLogInstance { get{returnm_LogInstance;} } //////写入一条日志记录 /// ///日志记录内容 publicvoidWriteLog(stringpLog) { lock(this._logDir)//排它锁:防止主程序中出现多线程同时访问同一个文件出错 { //根据时间创建一个日志文件 varvDT=DateTime.Now; stringvLogFile=string.Format("{0}\\Log{1}{2}{3}.log",_logDir,vDT.Year,vDT.Month,vDT.Day); //创建文件流,用于写入 using(FileStreamfs=newFileStream(vLogFile,FileMode.Append)) { StreamWritersw=newStreamWriter(fs); sw.WriteLine("{0}>>{1}",vDT.ToString("yyyy-MM-ddHH:mm:ss"),pLog); sw.Flush(); sw.Close(); fs.Close(); } } } //删除过期文件 privatevoidDelOldFile() { //遍历指定文件夹下所有子文件,将一定期限前的日志文件删除。 if(!Directory.Exists(this._logDir)) { //如果文件夹目录不存在 Directory.CreateDirectory(this._logDir); return; } varvFiles=(newDirectoryInfo(this._logDir)).GetFiles(); for(inti=vFiles.Length-1;i>=0;i--) { //指定条件,然后删除 if(vFiles[i].Name.Contains("Log")) { if((DateTime.Now-vFiles[i].LastWriteTime).Days>7) { vFiles[i].Delete(); } } } } }//endclass
其中,第8行-第26行是关于实现单例模式的一种方法。这样,在你程序的需要位置执行:
LogManager.LogInstance.WriteLog("产生了一条日志记录");
就会在指定文件中参数一条日志记录了。
即:2016-11-2323:53:45 >> 产生了一条日志记录
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。