예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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"));
                }
            }
        }