2017-02-06 22 views
4

私はEntity Frameworkをコードファーストで使用しており、log4NetをSQL Serverデータベースにログオンさせようとしています。バッファサイズの値を1に設定して、log4Net - 別のプロジェクトにあるEntity Frameworkデータベースへのログ

log4net.Config.XmlConfigurator.Configure(); 

Global.asaxファイルを追加しました。

は私も

​​

を追加しましたしかし、私のSQL Serverデータベースに出力するものはまだありません。私はそこにErrorLogデータモデルを持つ別のプロジェクトに自分のEntity Frameworkを持っています。私のlog4Net設定は私のWebプロジェクトのweb.configにあり、Webプロジェクトは私の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

DBから任意のものをEFに出力する代理人とcontext.Database.Logを設定する必要があります。

あれば例えば1使用nLog、のために:

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

が、それはlog4netのでだろうか分からないのですが、それは助け、エランのため

+0

おかげで似たようなのです。あなたが投稿してから数分後にそれを把握することができました。それはweb.configのconnectionType値のためでした。 – Hao

関連する問題