@Avramの答えは、彼のコードの単一のオーバーロードがlog4netConsoleAppender
が私のシステムで使用していたものではないことを除いて、私にとってはうまくいきました。(Console.SetOut
log4netの出力がVisual Studioの「デバッグ」出力ペインに出力されるように興味がありConsoleAppender
ます。)したがって、これらの1つ以上が.StringWriter
Write
WriteLine
string
object
char[]
ConsoleAppender
Console
これは成功し、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);
}
}
}