@Avramの答えは、彼のコードの単一のオーバーロードがlog4netConsoleAppenderが私のシステムで使用していたものではないことを除いて、私にとってはうまくいきました。(Console.SetOutlog4netの出力がVisual Studioの「デバッグ」出力ペインに出力されるように興味がありConsoleAppenderます。)したがって、これらの1つ以上が.StringWriterWriteWriteLinestringobjectchar[]ConsoleAppenderConsole
これは成功し、log4net ログが [デバッグ] ペインに表示されるようになりました。
同様の目標を持つ人の利益のために、以下のコードを含めています。(完全に安全を期すために、残りのStringWriter.Writeおよび.WriteLineメソッドをオーバーライドできます。) の呼び出しはbase不要と思われるため削除しました。内部に大きなバッファーが構築されるだけだと思いますStringWriter(通常は、そのクラスの を介してアクセスされ.ToString()ます)。
namespace GeneralLibrary.Logging
{
using System.Diagnostics;
using System.IO;
public class DebugWriter : StringWriter
{
public override void Write(string format, object arg0)
{
Debug.Write(string.Format(format, arg0));
}
public override void Write(string format, object arg0, object arg1)
{
Debug.Write(string.Format(format, arg0, arg1));
}
public override void Write(string format, object arg0, object arg1, object arg2)
{
Debug.Write(string.Format(format, arg0, arg1, arg2));
}
public override void Write(string format, params object[] arg)
{
Debug.Write(string.Format(format, arg));
}
public override void Write(object value)
{
Debug.Write(value);
}
public override void Write(string value)
{
Debug.Write(value);
}
public override void Write(char[] buffer)
{
Debug.Write(buffer);
}
public override void Write(char[] buffer, int index, int count)
{
Debug.Write(new string(buffer, index, count));
}
public override void WriteLine(string value)
{
Debug.WriteLine(value);
}
public override void WriteLine(object value)
{
Debug.WriteLine(value);
}
public override void WriteLine(string format, object arg0)
{
Debug.WriteLine(format, arg0);
}
public override void WriteLine(string format, object arg0, object arg1)
{
Debug.WriteLine(format, arg0, arg1);
}
public override void WriteLine(string format, object arg0, object arg1, object arg2)
{
Debug.WriteLine(format, arg0, arg1, arg2);
}
public override void WriteLine(string format, params object[] arg)
{
Debug.WriteLine(format, arg);
}
public override void WriteLine(char[] buffer)
{
Debug.WriteLine(buffer);
}
public override void WriteLine(char[] buffer, int index, int count)
{
Debug.WriteLine(new string(buffer, index, count));
}
public override void WriteLine()
{
Debug.WriteLine(string.Empty);
}
}
}