2017-02-06 6 views
4

저는 먼저 Entity Framework를 먼저 사용하고 log4Net을 SQL Server 데이터베이스에 기록하려고합니다. 버퍼 크기 값을 1로 설정하고log4Net - 별도의 프로젝트에있는 Entity Framework 데이터베이스에 로깅

log4net.Config.XmlConfigurator.Configure(); 

을 내 Global.asax 파일에 추가했습니다.

나는 또한 나의 SQL Server 데이터베이스에 출력 아무것도 아직 없다, 그러나
<section name="log4net" 
     type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 

을 추가했습니다. 내가 거기에 ErrorLog 데이터 모델과 별도의 프로젝트에서 내 엔터티 프레임 워크 물건 있어요. 내 log4Net 설정은 내 웹 프로젝트의 web.config에 있고 웹 프로젝트에는 내 Entity Framework 프로젝트에 대한 참조가 있습니다.

여기에 내가 오류를받지 못했습니다 log4Net

<log4net> 
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="1" /> 
     <threshold value="ALL" /> 
     <connectionType value="System.Data.EntityClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="data source=(LocalDb)\MSSQLLocalDB;initial catalog=AutoForms;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" /> 
     <commandText value="INSERT INTO ErrorLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
     <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> 
     <parameter> 
      <parameterName value="@exception" /> 
      <dbType value="String" /> 
      <size value="2000" /> 
      <layout type="log4net.Layout.ExceptionLayout" /> 
     </parameter> 
    </appender> 
    <root> 
     <appender-ref ref="AdoNetAppender" /> 
    </root> 
</log4net> 

web.config에있을거야. 그 밖에 무엇을해야할지 모르겠습니다. 나는 성공하지 못한 Entity Framework의 모든 것을 처리하는 프로젝트의 app.config에 log4Net 설정을 추가하려고 시도했다. 어떤 도움을 주시면 감사하겠습니다. 감사.

답변

2

나는 조금 주위를 파고 나서 이것을 알아낼 수 있었다. 연결 유형에 대한 나의 값은

<connectionType value="System.Data.EntityClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

대신

<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

을 주목 connectionType 값이었다. 이것을 변경 한 후에 작동했습니다. 누군가가 도움이되기를 바랍니다.

0

EF에 대한 대리인과 함께 context.Database.Log를 설정해야 DB의 모든 내용을 출력 할 수 있습니다.

예를 들어 하나의 사용 nLog에 대한 :

context.Database.Log = s=> LogManager.GetLogger("myLogger").Info(s); 

그것이 log4net 함께있을 것입니다 방법을 알고하지 않습니다하지만 도움,에 란에

+0

감사 비슷한입니다. 게시 한 후 몇 분 후에 확인할 수있었습니다. 내 web.config의 connectionType 값 때문이었습니다. – Hao