@Avram's answer私のシステムでlog4netのConsoleAppender
が使用していたものではありません。 (私は。のVisual Studioの「デバッグ」を出力ペインにConsole.SetOut
ようにlog4netのConsoleAppender
出力に興味がある)だから私は、その一つ以上を前提になどstring
、object
、char[]
を受け入れるStringWriter
のWrite
とWriteLine
すべてのメソッドを、オーバーライドこれらのうちConsoleAppender
はConsole
経由で呼び出していました。
これが成功し、「デバッグ」ペインにlog4netのログが表示されるようになりました。
同様の目標を持つ人のために、以下のコードを追加します。 (私は完全に安全であるため、残りのStringWriter.Write
と.WriteLine
のメソッドをオーバーライドすることができます)。base
への呼び出しを削除しました。これらは不要であると思われ、StringWriter
)。
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);
}
}
}
良い答え。ありがとう! –
くそー!私は最終的にVisual StudioでNHibernateのクエリを見ることができます! –
ありがとう!なぜ 'base.WriteLine'の呼び出しに気をつけますか? –