网站制作内容文案,seo公司是什么意思,如何设计软件,惠州seo外包文章目录 业务需求代码运行效果 欢迎讨论#xff01;
业务需求
在生产环境中#xff0c;控制台窗口不便展示出来。 为了在生产环境中#xff0c;完整记录控制台应用的输出#xff0c;选择将其输出到文件中。 但是#xff0c;存储所有输出的话会占用很多空间#xff0c;… 文章目录 业务需求代码运行效果 欢迎讨论
业务需求
在生产环境中控制台窗口不便展示出来。 为了在生产环境中完整记录控制台应用的输出选择将其输出到文件中。 但是存储所有输出的话会占用很多空间故而在时间上只存储近期一段时间里的。 本项目实现 将控制台输出重定向到文件。 按天存储且仅存储最近2天的输出。 代码
这里在测试时使用时分格式HHmm代替日期格式yyyyMMdd来测试。在实际应用时应该使用后者。
public class Log2Days : TextWriter
{private string pathFormat null; // 可以根据文件计数打开的日志文件路径待填充后缀private string path null; // 当日日志文件路径private string perviousPath null; // 前一日日志文件路径private string today null; // 今日如20230402private StreamWriter fileWriter null; // 文件写入对象public Log2Days(string defaultPath){Directory.CreateDirectory(Path.GetDirectoryName(defaultPath));// 解析原有路径以为文件名添加后缀pathFormat Path.Combine(Path.GetDirectoryName(defaultPath), Path.GetFileNameWithoutExtension(defaultPath) {0} Path.GetExtension(defaultPath));}/// summary/// 选择要输出的文件目标/// /summarypublic void SelectTarget(){try{string theDay DateTime.Now.ToString(HHmm); // 今日日期要改为yyyyMMddif (fileWriter is null || !today.Equals(theDay)) // 未初始化或未成功创建文件或隔天{if (!(fileWriter is null)) // 隔天{ // 如果有文件正在使用则关闭之fileWriter.Close();fileWriter.Dispose();fileWriter null;if (File.Exists(perviousPath)) // 当前是第三天才会满足此条件File.Delete(perviousPath); // 删除前天的文件昨天成了前天perviousPath path; // 更新昨日的路径}// 未初始化或未成功创建文件today theDay; // 今日日期path string.Format(pathFormat, today); // 今日路径fileWriter new StreamWriter(path, true, Encoding.UTF8) { AutoFlush true }; // 追加如果今日已写则继续写}}catch { }}/// summary/// [可选]覆盖写的方法WriteLine(int)/// /summarypublic override void WriteLine(int content){SelectTarget();fileWriter.WriteLine(content);}/// summary/// [可选]覆盖写的方法Write(int)/// /summarypublic override void Write(int content){SelectTarget();fileWriter.Write(content);}/// summary/// 需实现抽象类的此方法/// /summarypublic override Encoding Encoding{get { return fileWriter.Encoding; }}
}运行效果
当1705分时 当1706分时 当1708分时 当第二日8点多时