山东省建设工程造价管理协会网站,免费拍卖网站模板,江阴企业网站制作,江西网站建设哪家公司好参考文章 将C#的Console.Write同步到控制台和log文件输出
业务需求
在生产环境中#xff0c;控制台窗口不便展示出来。 为了在生产环境中#xff0c;完整记录控制台应用的输出#xff0c;选择将其输出到文件中。 但是#xff0c;一次性存储所有输出的话#xff0c;文件会…参考文章 将C#的Console.Write同步到控制台和log文件输出
业务需求
在生产环境中控制台窗口不便展示出来。 为了在生产环境中完整记录控制台应用的输出选择将其输出到文件中。 但是一次性存储所有输出的话文件会很大阅读体验不佳。 故而本项目实现 将控制台输出到文件。 限定输出文件的最大长度。 代码
using System;
using System.IO;
using System.Text;
class Program
{static void Main(){Console.SetOut(new WrtToFile(D:\LearnOutput.txt, 15));Console.WriteLine(testing 1-2-301);Console.WriteLine(t);Console.WriteLine(testing 4-5-6712);//Console.ReadLine();}public class WrtToFile : TextWriter{private int maxLen 0; // 设定的文件最大保存长度private int fileCount 1; // 当前操作第几个文件文件计数private int wordCount 0; // 当前文件的字数private string pathFormat null; // 可以根据文件计数打开的文件路径待填充private string path null; // 文件路径已填充private StreamWriter fileWriter null; // 文件写入对象/// summary/// /summary/// param namedefaultPath文件路径/param/// param namemaxLen默认最多65535个字符约131M大小/parampublic WrtToFile(string defaultPath, int maxLen UInt16.MaxValue){pathFormat Path.Combine(Path.GetDirectoryName(defaultPath), Path.GetFileNameWithoutExtension(defaultPath) {0} Path.GetExtension(defaultPath));this.maxLen maxLen;}/// summary/// 选择输出目标文件/// /summary/// param namelength待输出字符串的长度/parampublic void SelectTarget(int length){if (length wordCount maxLen || 0 wordCount) // 满了新建或者第一次建{try{if (!(fileWriter is null)){ // 如果有文件正在使用则关闭之fileWriter.Close();fileWriter.Dispose();}while (File.Exists(path string.Format(pathFormat, fileCount)))fileCount; // 新建文件名后缀wordCount 0; // 清空字长// 创建文件流fileWriter new StreamWriter(path, true, Encoding.UTF8) { AutoFlush true };}catch { }}wordCount length; // 追加}/// summary/// 覆盖写的方法/// /summary/// param namecontent/parampublic override void WriteLine(string content){SelectTarget(content.Length);fileWriter.WriteLine(content);}/// summary/// 需实现抽象类的此方法/// /summarypublic override Encoding Encoding{get { return fileWriter.Encoding; }}}
}第一次运行结果
三个文件各一行
第二次运行结果
六个文件各一行