2017-11-23 1 views
1

내가 이상한 매개 변수 오류log4net AdoNetAppender 기본 매개 변수

log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database 
System.IndexOutOfRangeException: An SqlParameter with ParameterName '@log_date' is not contained by this SqlParameterCollection. 

내가 매개 변수 선언

<parameter> 
    <parameterName value="@log_date"/> 
    <dbType value="DateTime" /> 
    <layout type="log4net.Layout.RawTimeStampLayout" /> 
</parameter> 
잘못 아무것도 볼 수 없습니다에게지고있어 예/기본 구성으로 log4net AdoNetAppender를 사용하려고 실종

그러나 여전히 매개 변수를 제거하려고하면 같은 방식으로 실패하는 다음 코드 일 뿐이며 연결 문자열을 변경하려고 시도했습니다. 근본적인 오류가있을 수 있다고 생각합니다. 운이 좋지 않을 수도 있습니다.

log4net 디버그 로그도 명확하게 모든 매개 변수에 대한

log4net: Setting Collection Property [AddParameter] to object [log4net.Appender.AdoNetAppenderParameter] 

을 언급, 그래서 정말

우는 소리에 무슨 일이 일어나고 있는지 모르는 내가 log4net

<log4net> 
    <root> 
    <level value="ALL" /> 
    <appender-ref ref="DBAppender" /> 
    <appender-ref ref="RollingFileAppender" /> 
    <appender-ref ref="DebugAppender" /> 
    </root> 

    <appender name="DBAppender" type="log4net.Appender.AdoNetAppender"> 
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
    <connectionStringName value="CustomerDB" /> 
    <bufferSize value="1" /> 
    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" /> 
    <parameter> 
     <parameterName value="@log_date"/> 
     <dbType value="DateTime" /> 
     <layout type="log4net.Layout.RawTimeStampLayout" /> 
    </parameter> 
    <parameter> 
     <parameterName value="@thread" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%thread" /> 
     </layout> 
    </parameter> 
    <parameter> 
     <parameterName value="@log_level" /> 
     <dbType value="String" /> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%level" /> 
     </layout> 
    </parameter> 
    <parameter> 
     <parameterName value="@logger" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%logger" /> 
     </layout> 
    </parameter> 
    <parameter> 
     <parameterName value="@message" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%message" /> 
     </layout> 
    </parameter> 
    </appender> 

    <appender name="DebugAppender" type="log4net.Appender.DebugAppender"> 
    <immediateFlush value="true" /> 
    <layout type="log4net.Layout.SimpleLayout" /> 
    </appender> 
</log4net> 
에 대한했습니다 전체 설정입니다
+1

버전 - https://stackoverflow.com/questions/33696604/log4net-adonetappender-sqlparametercollection-does-not-contain-parameters#33732495 – sgmoore

+0

2.0.4를 참조하십시오. 시도 할 다음 항목은 업데이트였습니다. 불행히도 NuGet의 다운로드 주소 중 하나가 현재 사무실에서 차단되어 있으므로 나중에 시도해야합니다. –

답변

2

log4net 2.0.5, 2.0.4로 업데이트해야합니다. AdoNetAppenderis가 손상되었습니다.

관련 문제