当前位置: 首页 > news >正文

销售网站有哪些广州品牌网站开发

销售网站有哪些,广州品牌网站开发,百度霸屏培训,php 企业网站源码1.错误和警告信息单独生产文本进行记录#xff1b; 2.日志到一定内存阈值可以打包压缩#xff0c;单独存储起来#xff0c;修改字段MaxLogFileSizeForCompress的值即可#xff1b; 3.Log类调用举例#xff1a;Log.Txt(JB.信息,“日志记录内容”,通道1); usi…1.错误和警告信息单独生产文本进行记录 2.日志到一定内存阈值可以打包压缩单独存储起来修改字段MaxLogFileSizeForCompress的值即可 3.Log类调用举例Log.Txt(JB.信息,“日志记录内容”,通道1); using System; using System.IO; using System.Windows.Forms; using ICSharpCode.SharpZipLib.Zip;namespace _程序日志 {// 定义日志级别枚举虽然取消了日志级别过滤功能但保留该枚举方便后续可能的扩展public enum JB{错误, //ERROR代表程序运行过程中出现的错误情况通常是需要重点关注和排查问题的日志级别警告, //WARN用于表示程序运行时出现的一些可能会引发问题的异常情况但不像错误那样严重起到提醒作用信息, //INFO一般记录程序正常运行过程中的一些常规信息用于记录流程、状态等内容调试 //DEBUG主要用于开发阶段帮助开发者调试程序输出更详细的程序执行过程信息}public class Log{// 日志文件基础路径可通过配置等方式修改这里指定了默认的基础路径后续所有日志文件都会基于此路径进一步构建具体的文件路径private static string _logFilePath D:\\Logs\\程序日志;// 日志文件大小阈值这里可按需调整单位为字节当日志文件达到这个大小后会触发相应的文件压缩等处理逻辑private static long MaxLogFileSizeForCompress 100 * 1024 * 1024;// 存放压缩日志文件的文件夹路径可按需配置用于存放经过压缩处理后的日志文件便于节省磁盘空间以及对历史日志进行归档管理private static string CompressFolderPath D:\\Logs\\压缩日志;// 用于标记当前正在写入的日志文件是文本A还是文本B初始化为文本A通过这个标记来实现类似双缓冲的机制方便在文件切换、压缩等操作时保证日志记录的连续性private static bool isUsingTextA true;// 记录当前正在使用的日志文件路径文本A或文本B会根据程序运行过程中的实际情况动态更新指向当前真正进行日志写入操作的文件路径private static string currentLogFilePath;// 记录文本A的文件路径专门用于记录文本A对应的文件完整路径方便后续针对文本A进行一些特定操作比如检查文件大小等private static string textAFilePath;// 新增用于记录错误日志的文件路径文本A和文本B在发现有“错误”级别日志时对应文本A的错误日志文件路径会存储在这里方便后续操作private static string errorTextAFilePath;// 对应文本B的错误日志文件路径与isUsingTextA标记配合当切换到文本B进行日志记录时错误日志也会相应切换写入到这个文件路径对应的文件中如果需要的话private static string errorTextBFilePath;// 新增用于记录警告日志的文件路径文本A和文本B功能类似上述错误日志文件路径用于存放“警告”级别日志对应的文件路径private static string warnTextAFilePath;// 文本B的警告日志文件路径用于在相应阶段存储“警告”级别日志信息private static string warnTextBFilePath;// 辅助方法确保文件夹存在private static void EnsureFolderExists(string folderPath){// 检查指定的文件夹路径对应的文件夹是否已经存在if (!Directory.Exists(folderPath)){try{// 如果文件夹不存在则尝试创建该文件夹Directory.CreateDirectory(folderPath);}catch (IOException ex){// 如果在创建文件夹过程中出现IOException异常比如权限不足、磁盘已满等原因导致无法创建文件夹// 这里通过消息框向用户展示创建文件夹失败的异常信息方便用户知晓问题所在MessageBox.Show($创建文件夹 {folderPath} 失败异常信息: {ex.Message});// 重新抛出异常让调用这个方法的上层代码知道创建文件夹出现了问题以便进行进一步的处理比如终止程序或者尝试其他恢复操作throw;}}}/// summary/// 保存txt文档即实现日志记录功能是整个日志记录模块的核心方法接收日志级别、要保存的内容以及通道等参数来决定如何将日志信息保存到对应的文件中/// /summary/// param namejb日志级别目前未使用级别过滤功能通过传入不同的日志级别来区分不同重要程度的日志信息方便后续查看和分析日志时筛选不同级别的内容/param/// param namezhi保存内容即具体要记录到日志文件中的文本信息描述了程序运行过程中发生的相关事件、状态等内容/param/// param nametongdao通道可用于对日志进行分类比如按照不同的功能模块、业务流程等划分不同的通道便于对日志进行归类查看和管理/parampublic static void Txt(Enum jb, string zhi, string tongdao){string basePath _logFilePath;string year DateTime.Now.ToString(yyyy-MM);//年月日文件夹根据当前时间获取年份和月份信息用于构建日志文件所在的年月文件夹路径便于按时间对日志进行分类存储string passageway tongdao;//通道文件夹使用传入的通道参数作为文件夹名称用于进一步细分日志文件的存储位置// 构建日志文件所在文件夹路径将基础路径、通道文件夹和年月文件夹路径组合起来形成完整的日志文件所在文件夹的路径string logFolderPath Path.Combine(basePath, passageway, year);EnsureFolderExists(logFolderPath);// 拼接完整日志文件路径文件名格式保持不变这里以简单的日期格式为例你可按需调整以当前日期作为文件名格式为yyyy-MM-dd.txt方便按天查看和管理日志文件string filename DateTime.Now.ToString(yyyy-MM-dd) .txt;if (isUsingTextA){textAFilePath Path.Combine(logFolderPath, filename);currentLogFilePath textAFilePath;// 同时确定错误和警告日志对应的文本A文件路径在原文件名基础上添加相应前缀Error_和WARN_用于区分不同级别的专用日志文件errorTextAFilePath Path.Combine(logFolderPath, Error_ filename);warnTextAFilePath Path.Combine(logFolderPath, WARN_ filename);}else{currentLogFilePath Path.Combine(logFolderPath, filename);// 同时确定错误和警告日志对应的文本B文件路径同样添加相应前缀以对应文本B的情况errorTextBFilePath Path.Combine(logFolderPath, Error_ filename);warnTextBFilePath Path.Combine(logFolderPath, WARN_ filename);}bool fileExists File.Exists(currentLogFilePath);// 先处理文件已存在且未超过阈值的情况直接打开并追加内容这种情况下无需进行复杂的文件切换或压缩等操作直接在现有文件末尾追加新的日志信息即可if (fileExists){long fileSize new FileInfo(currentLogFilePath).Length;if (fileSize MaxLogFileSizeForCompress){WriteToExistingFile(jb, zhi, currentLogFilePath);// 根据日志级别额外处理错误和警告日志写入对应的专用文件调用该方法来处理将“错误”和“警告”级别日志分别写入对应的专用文件的操作HandleSpecialLogLevel(jb, zhi);return;}}// 如果文件不存在或者已超过阈值执行创建文件或切换文件等逻辑比如首次创建日志文件或者当前文件已满需要切换到新文件进行日志记录等情况FileStream fs null;try{fs fileExists ? File.Open(currentLogFilePath, FileMode.Append) : File.Create(currentLogFilePath);WriteToFileAndHandleSize(jb, zhi, fs, currentLogFilePath);}catch (IOException ex){MessageBox.Show($打开或创建日志文件 {currentLogFilePath} 失败异常信息: {ex.Message});throw; // 重新抛出异常避免程序继续执行可能导致的数据不一致等问题确保上层代码知道日志文件操作出现了异常}finally{if (fs ! null){fs.Close();}}}/// summary/// 根据日志级别处理错误和警告日志写入对应的专用文件该方法根据传入的日志级别判断是“错误”还是“警告”级别然后分别进行对应的文件写入操作/// /summaryprivate static void HandleSpecialLogLevel(Enum jb, string zhi){if (jb.ToString() 错误){string currentErrorFilePath isUsingTextA ? errorTextAFilePath : errorTextBFilePath;EnsureErrorFileExists(currentErrorFilePath);WriteToSpecialFile(currentErrorFilePath, zhi);}else if (jb.ToString() 警告){string currentWarnFilePath isUsingTextA ? warnTextAFilePath : warnTextBFilePath;EnsureWarnFileExists(currentWarnFilePath);WriteToSpecialFile(currentWarnFilePath, zhi);}}/// summary/// 确保错误日志文件存在如果不存在则创建该方法用于保证在写入“错误”级别日志到对应的专用文件时文件是存在的避免出现写入失败的情况/// /summaryprivate static void EnsureErrorFileExists(string errorFilePath){if (!File.Exists(errorFilePath)){try{// 使用File.Create创建文件创建后需要手动关闭文件流这里直接调用Close方法关闭File.Create(errorFilePath).Close();}catch (IOException ex){MessageBox.Show($创建错误日志文件 {errorFilePath} 失败异常信息: {ex.Message});throw;}}}/// summary/// 确保警告日志文件存在如果不存在则创建与EnsureErrorFileExists类似只是针对“警告”级别日志对应的专用文件进行存在性检查和创建操作/// /summaryprivate static void EnsureWarnFileExists(string warnFilePath){if (!File.Exists(warnFilePath)){try{File.Create(warnFilePath).Close();}catch (IOException ex){MessageBox.Show($创建警告日志文件 {warnFilePath} 失败异常信息: {ex.Message});throw;}}}/// summary/// 向专用文件写入日志内容负责将具体的日志内容按照一定格式写入到指定的专用文件错误或警告日志文件中/// /summaryprivate static void WriteToSpecialFile(string specialFilePath, string zhi){FileStream fs null;try{// 以追加模式打开指定的专用文件以便在文件末尾添加新的日志内容fs File.Open(specialFilePath, FileMode.Append);using (StreamWriter sw new StreamWriter(fs)){// 将写入位置定位到文件末尾确保新的日志内容追加在已有内容之后sw.BaseStream.Seek(0, SeekOrigin.End);sw.Write($操作时间{DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss)} 内容{zhi}\n);sw.Flush();}}catch (IOException ex){MessageBox.Show($打开或创建特殊日志文件 {specialFilePath} 失败异常信息: {ex.Message});throw;}finally{if (fs ! null){fs.Close();}}}/// summary/// 向已存在且未超过阈值的文件中写入内容用于向已经存在且文件大小未超过设定阈值的普通日志文件中追加新的日志信息按照一定格式写入日志内容并进行必要的异常处理/// /summaryprivate static void WriteToExistingFile(Enum jb, string zhi, string currentLogFilePath){FileStream fs null;try{// 以追加模式打开当前的普通日志文件准备写入新的日志内容fs File.Open(currentLogFilePath, FileMode.Append);using (StreamWriter sw new StreamWriter(fs)){// 将写入位置定位到文件末尾使得新日志信息添加在文件已有内容的后面sw.BaseStream.Seek(0, SeekOrigin.End);// 获取当前日志级别字符串表示虽然取消了日志级别过滤功能但这里保留获取级别字符串表示的代码用于在日志内容中记录当前日志的级别信息string zt jb.ToString();sw.Write([{0}] 操作时间 DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) 内容{1}\n, zt, zhi);sw.Flush();}}catch (IOException ex){MessageBox.Show($写入日志到文件 {currentLogFilePath} 失败异常信息: {ex.Message});throw; // 重新抛出异常保证数据完整性不丢失此次写入数据的异常情况确保日志记录的可靠性}finally{if (fs ! null){fs.Close();}}}/// summary/// 向文件写入内容并处理文件大小超过阈值的情况在向普通日志文件写入内容后检查文件大小是否超过阈值如果超过则触发文件压缩、切换等相关处理逻辑/// /summaryprivate static void WriteToFileAndHandleSize(Enum jb, string zhi, FileStream fs, string currentLogFilePath){using (StreamWriter sw new StreamWriter(fs)){// 将写入位置定位到文件末尾确保日志内容按顺序追加到文件末尾sw.BaseStream.Seek(0, SeekOrigin.End);// 获取当前日志级别字符串表示虽然取消了日志级别过滤功能但这里保留获取级别字符串表示的代码用于在日志记录中体现日志级别信息string zt jb.ToString();sw.Write([{0}] 操作时间 DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss) 内容{1}\n, zt, zhi);sw.Flush();}// 获取文件大小如果文件存在的话只针对文本A进行大小检查根据当前是否正在使用文本A以及文件是否存在来决定是否检查文件大小并进行后续处理if (isUsingTextA File.Exists(currentLogFilePath)){long fileSize new FileInfo(currentLogFilePath).Length;if (fileSize MaxLogFileSizeForCompress){HandleFileCompressionAndSwitch(currentLogFilePath);}}}/// summary/// 处理文件压缩以及切换使用的文件从文本A切换到文本B当文本A对应的日志文件大小达到阈值后执行文件压缩操作将文本A文件压缩保存到指定的压缩文件夹中然后删除原文本A文件并切换到使用文本B进行后续日志记录/// /summaryprivate static void HandleFileCompressionAndSwitch(string currentLogFilePath){// 确保压缩文件夹存在如果不存在则创建为即将进行的文件压缩操作准备好存放压缩文件的目标文件夹EnsureFolderExists(CompressFolderPath);// 生成压缩文件的文件名文本A的压缩文件名带上时分秒信息在原日志文件名基础上添加当前时分秒信息使得压缩文件名具有唯一性便于区分不同时间压缩的文件string zipFileName Path.GetFileNameWithoutExtension(currentLogFilePath) _ DateTime.Now.ToString(HH-mm-ss) .zip;string zipFilePath Path.Combine(CompressFolderPath, zipFileName);try{// 使用SharpZipLib进行文件压缩文本A创建输出的压缩文件流然后基于此流创建ZipOutputStream对象用于实际的压缩操作并设置较高的压缩级别0 - 99为最高压缩比可按需调整以获得较好的压缩效果using (FileStream fsOut File.Create(zipFilePath)){using (ZipOutputStream zipStream new ZipOutputStream(fsOut)){zipStream.SetLevel(9);ZipEntry entry new ZipEntry(Path.GetFileName(currentLogFilePath));zipStream.PutNextEntry(entry);using (FileStream fsIn File.OpenRead(currentLogFilePath)){byte[] buffer new byte[4096];int sourceBytes;do{sourceBytes fsIn.Read(buffer, 0, buffer.Length);zipStream.Write(buffer, 0, sourceBytes);} while (sourceBytes 0);}zipStream.CloseEntry();}}}catch (IOException ex){MessageBox.Show($压缩日志文件 {currentLogFilePath} 失败异常信息: {ex.Message});throw; // 重新抛出异常避免掩盖压缩失败问题确保上层代码知道压缩操作出现了异常情况}try{// 删除原日志文件文本A可根据实际需求考虑是否备份等其他操作File.Delete(currentLogFilePath);}catch (IOException ex){MessageBox.Show($删除原日志文件 {currentLogFilePath} 失败异常信息: {ex.Message});throw; // 重新抛出异常防止后续出现文件冲突等问题}// 切换到使用文本B进行后续写入isUsingTextA false;}} }
http://www.pierceye.com/news/913450/

相关文章:

  • 中文域名网站网站制作wap页面
  • wordpress站内全文检索一个人完成网站建设
  • wordpress自定义重用结构北京seo怎么优化
  • 苏州做网站专业的公司vs2008怎么做网站
  • 效果好的徐州网站建设休闲食品网站建设策划书
  • 如何发布自己的网站wordpress 4.9.6 下载
  • 织梦网站打开慢企业咨询师资格证
  • 蓬莱网站建设哪家好广州白云网站建设
  • 网站建设得花多少钱做购物网站能否生存
  • 多语言网站 用什么cms深圳Wordpress网站
  • 常州市建设工程质量监督站网站开发公司设计管理岗位述职
  • 国外网站顶部菜单设计谷歌seo文章
  • 梅州网站开发外国自适应企业网站
  • 大型网站建设动力无限哪个公司的装饰设计公司
  • 网站建设与管理自考wordpress替换默认的编辑器
  • 企业在网站推广咸阳做网站开发公司
  • 从美洲开始做皇帝免费阅读网站wordpress嵌入优酷视频播放
  • 长沙 外贸网站建设国际足联世界排名
  • 辽宁省建设执业继续教育协会网站深圳网站制作建设服务公司
  • 个人网站备案都需要什么运营seo是什么意思
  • 局域网内部网站建设app下载苏州网络推广企业
  • 重庆美邦 网站建设保定最新消息发布
  • 东莞手机建网站旅游网站 分析
  • 网站seo优化技术入门做网站怎样实现网上支付
  • 陕西西安网站建设公司源码编程器
  • 网站开发的前端技术有哪些软件制作是什么专业
  • 淘宝网站建设目标是什么意思厦门seo计费
  • 高端网站建设注意简述网络营销的基本方法
  • html5网站开发实例教程沈阳软件定制开发公司
  • 做透水砖的网站下载爱南宁乘车