1

これがすでに回答されている場合は申し訳ありません。最善を尽くして確認しました。

コンソールに情報を書き込むライブラリがあります。ライブラリを使用するアプリケーションでは、各行の先頭にタイムスタンプを書き込みながら、その出力をログ ファイルだけでなくコントロールにもリダイレクトしたいと考えています。これは私のクラスがどのように見えるかです:

class TextBoxStreamWriter : TextWriter
{
    TextBox _output;
    FileStream _stream;
    StreamWriter _writer;

    // constructor
    public TextBoxStreamWriter(TextBox output)
    {
        _output = output;

        _stream = new FileStream(@"C:\example.log", FileMode.OpenOrCreate, FileAccess.Write);
        _writer = new StreamWriter(_stream);
        _writer.AutoFlush = true;
    }

    // override methods
    public override void Write(char value)
    {
        base.Write(value);
        _output.AppendText(value.ToString());
        _writer.Write(value);
    }
    public override void WriteLine(string value)
    {
        base.WriteLine(DateTime.Now.ToString("[yyyy/MM/dd HH:mm:ss]\t") + value);
    }

Console.WriteLine()もちろん、これはあなたが使用している限りうまくいくようです。しかし、XMLWriter の出力をコンソールに送信しようとすると、これは をバイパスしConsole.WriteLine()、タイムスタンプなしで行の出力を開始します。一例は次のとおりです。

    protected void WriteXMLToConsole(XmlDocument xmlDocument)
    {
        XmlTextWriter writer = new XmlTextWriter(Console.Out);
        writer.Formatting = Formatting.Indented;
        xmlDocument.WriteContentTo(writer);
        writer.Flush();
        Console.WriteLine();
    }

助言がありますか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

これは、xmlDocがNewLineを含む単一の文字列として受信されたためと考えられます。
xmlDocをプレーンテキストファイルとして読み取り、そのテキストを1行ずつコンソールに送信してみてください

于 2011-10-12T21:44:37.270 に答える