2013-07-05 3 views
0

몇 가지 예제와 튜토리얼을 따른 후 내 데이터베이스에 log4net 로깅이 있습니다. 두 가지가 나에게 불분명하다.log4net의 AdoNetAppender에 관한 질문

the log4net page의 예제에서는 구성 영역에 다음 노드를 나열합니다.

<parameter> 
    <parameterName value="@exception" /> 
    <dbType value="String" /> 
    <size value="2000" /> 
    <layout type="log4net.Layout.ExceptionLayout" /> 
</parameter> 

이 매개 변수는 예외 내에서 로그온 할 때도 데이터베이스에 빈 문자열을 전달하는 것처럼 보입니다.

누군가이 필드에 무엇을 기록해야하는지 명확히 할 수 있습니까?

또한이 예에서는 '스레드'가 데이터베이스에 varchar (255)로 기록됩니다. 내가 그 분야에서 얻는 것은 정수입니다. 나는 쓰레드에 익숙하지 않다. 이것을 int로 저장할 수 있습니까? 어떤 경우에는 이것이 문자열이 될까요? 예외 위해서는

<parameter> 
    <parameterName value="@thread" /> 
    <dbType value="String" /> 
    <size value="255" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%thread" /> 
    </layout> 
    </parameter> 

답변

1

catch (Exception ex) 
{ 
    log.Error("Error saving details" , ex); 
    ... 
} 

다음 데이터베이스를 제외하고 열이 설정됩니다 사용하는 경우, 올바른 과부하 예를 들어

를 사용할 필요가 채워합니다 ex.ToString()

당신이

log.Error("Error saving details " + ex.ToString()); 
을 사용하는 경우

예외가 채워지지 않습니다.

스레드 식별자는 데이터베이스의 문자열이어야합니다. 기본 스레드 ID는 정수이지만, 훨씬 쉽게 indentifying/필터링을 만들면서 명시 적, 스레드,

예를 들어

var ts = new System.Threading.ThreadStart(InitialiseDatabase); 
var thread = new System.Threading.Thread(ts); 
thread.Name = "Initialising Database"; 

당신의 스레드의 이름을하는 것이 좋습니다 이름을 지정할 수 있습니다.

+0

고마워요! 둘 다 나를 위해 일하는 것으로 확인했습니다. – BillyPilgrim