2016-09-27 1 views
0

AdoNetAppender에서 SendBuffer 방법을 재정의하여 데이터베이스에 로그를 대량 삽입 할 수 있습니까? in this link in SendBuffer 방법 log4net은 loggingevent에서 반복하여 데이터베이스에 기록하고 각각을 분리 된 쿼리에 삽입합니다. 모든 로그를 쿼리에 삽입하고 싶습니다.이 방법으로 성능이 향상됩니다.Log4net adoNetAppender dosent 벌크 이벤트를 벌크에 삽입하십시오

당신은 같은 클래스를 만들 수 있습니다
+0

당신을 데이터베이스에 일괄 쓰기의 관점에서 정확할 수 있지만이 로깅 아닌가요? 로깅은 이벤트를 "기록"하는 것입니다. 이 녹음은 최대한 빨리 이루어져야합니다. 그러면 오버라이드 된 메소드에서 낮은 워터 마크를 설정하는 방법은 무엇입니까? 로깅 이벤트를 대량으로 작성하는 것이 가장 좋은시기를 어떻게 결정할 것입니까? 만약 당신이 아직도 기다리고있는 이벤트의 전체 배열을 가지고있는 동안 애플 리케이션이 충돌한다면? 나는 log4net 사람들이 이것에 대한 연구를 해왔다고 생각한다. 팝 오버하고 그들에게 물어보십시오 ... –

+0

성능이 정말로 문제가되면 [로깅 너무 많이]입니까 (https://blog.codinghorror.com/the-problem-with-logging/)? – stuartd

답변

0

: 당신은 같은 설정에서 클래스를 사용할 수 있습니다

public class MyAdoNetAppender : AdoNetAppender 
{ 
    override protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events) 
    { 
     (... implementation goes here) 
    } 
} 

을 (MyDll는 DLL 이름이고, 당신이 올바른 네임 스페이스가 있는지 확인) :

<appender name="A1" type="MyAdoNetAppender,MyDll"> 
관련 문제