/// <summary> /// 如果需要文件名独一无二,则添加一个数字到该文件名中 /// </summary> /// <param name="logFilename">要重命名的文件名</param> /// <returns>eg:C:\Log\MapWinGIS#3.log</returns> private static string MakeLogName(string logFilename) { string tryName; int ltry = 1; do { tryName = FileOperator.FilenameNoExt(logFilename) + "#" + ltry.ToString() + ".log"; ltry++; } while (FileOperator.FileOrDirExists(tryName)); return(tryName); }
/// <summary> /// 开始向指定文件中写入程序运行日志 /// </summary> /// <param name="logFileName">要写入运行日志的文件名</param> /// <param name="append">true-将记录附加到现有文件中,false-创建一个新的文件记录</param> /// <param name="renameExisting">true-重命名现有文件作为新的日志文件,false-覆写当前存在的文件</param> /// <param name="forceNameChange">true-改变日志文件</param> public static void StartToFile(string logFileName, bool append = false, bool renameExisting = true, bool forceNameChange = false) { if (forceNameChange || pFileStream == null) //允许修改日志文件的文件名 { if (pFileStream != null) //forceNameChange=true,改变文件名,并且文件已打开,关闭已经存在的文件 { try { pFileStream.Close(); } catch { throw new Exception("日志文件关闭失败!"); } pFileStream = null; } pFileName = logFileName; if (pFileName.Length > 0) { FileOperator.MkDirPath(FileOperator.PathNameOnly(pFileName)); if (FileOperator.FileOrDirExists(pFileName)) //该文件是否存在 { if (!append) //文件存在,创建一个新的文件 { if (renameExisting) //新建一个新名字的该文件,原文件保留 { File.Move(pFileName, MakeLogName(pFileName)); } else//删除原文件,以便可以新建一个新的该文件名的文件 { File.Delete(pFileName); } } } else //文件不存在,则给的路径名 { pFileName += "\\" + CreatLogName(pFileName); } pFileStream = new StreamWriter(pFileName, append); Dbg("开始写入日志文件 " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); } } }