3


0

NHibernateをOR / Mとして統合しようとしていますが、現在Enterprise Libraryのロギングアプリケーションブロックを使用しています。 NHibernateはlog4netを使ってログを記録することを私は知っています。 NHibernate関連のログを記録するためのEnterprise Libraryの使い方の例はありますか?

4 Answer


5


ELロガーに書き込む独自のlog4netアペンダを書きます。 それはアダプターパターンです。

`+ log4net.Appender.AppenderSkeleton +`から新しい/カスタムアペンダークラスを継承します

スケルトンクラスの `+ Append `イベントハンドラをオーバーライドし、その中に次のような ` RenderedMessage +`を表示します。

using System;
using log4net;
using System.Windows.Forms;

namespace MyAppender
{
    public class CustomAppender : log4net.Appender.AppenderSkeleton
    {
        protected override void Append(log4net.spi.LoggingEvent log)
        {
            // log to EL logger based on log properties.
        }
    }
}

その後、log4net設定ファイルを設定する必要があります。


私はこれをテストしていませんが、うまくいくはずです。


1


なぜnHibernateにlog4netを使わせないのですか? はい、2つ管理する必要がありますが、それ以外の場合は、EntLibraryにログインするためのlog4net用のアダプタを作成する必要があります。

私はEntLibraryも使用しています、そしてnHibernateのためにそこにあるLog4Netを扱うだけです。 彼らの開発ディスカッショングループでは、彼らはlog4netを詐欺行為として除去することについて話しましたが、私はそれについて何の作業もされていないと思います。


1


これは私が自分自身について疑問に思っていたものでした。 http://groups.google.com/group/nhusers/browse_thread/thread/1fe14d3c2548ddf8/9d9bb9297b03092a?q=#9d9bb9297b03092a[NibernateにはLog4Netへの強い依存関係があることを確認してください。ジョシュが指摘したアペンダー。

*編集:NHibernate 3以降、強い依存関係はなくなりました。


1


NHibernate 3以降では、必要なバイナリを取得して設定するだけで、MicrosoftのEnterprise Library 5.0と並んでCommon Loggingの実装を使用できます。 NHibernate.Logging.CommonLoggingおよびhttp://nuget.org/packages/Common.Logging.EntLib50[Common.Logging.EntLib50]を参照してください。

私はこれがオンラインのどこにも見つからなかったので、質問が古いにもかかわらず私がそれを投稿するだろうと考えました。 これが設定ファイルです(必要な参照を追加する必要があります)。