using System.IO; using System.Text; namespace Serein.WorkBench.tool { /// /// 可以捕获类库输出的打印输出 /// public class LogTextWriter(Action logAction) : TextWriter { private readonly Action logAction = logAction; private readonly StringWriter stringWriter = new(); public override Encoding Encoding => Encoding.UTF8; public override void Write(char value) { stringWriter.Write(value); if (value == '\n') { logAction(stringWriter.ToString()); stringWriter.GetStringBuilder().Clear(); } } public override void Write(string? value) { if(string.IsNullOrWhiteSpace(value)) { return; } stringWriter.Write(value); if (value.Contains('\n')) { logAction(stringWriter.ToString()); stringWriter.GetStringBuilder().Clear(); } } public override void WriteLine(string? value) { if (string.IsNullOrWhiteSpace(value)) { return; } stringWriter.WriteLine(value); logAction(stringWriter.ToString()); stringWriter.GetStringBuilder().Clear(); } } }