@Avram's answer 그의 코드에서 단일 오버로드가 log4net의 ConsoleAppender
이 내 시스템에서 사용하지 않은 것을 제외하고는 저에게 효과적이었습니다. (그래서 비주얼 스튜디오의 "디버그"출력 창. 해당 log4net의 ConsoleAppender
출력 내가 Console.SetOut
에 관심이 있어요) 그래서 가정에 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'에 대한 호출을 왜 귀찮게합니까? –