NHibernateとlog4netを構成して、結果として得られるクエリのSQLを記録する方法を知っています。ただし、の特定のクエリのみをログに記録することはできますか(たとえば、LINQクエリの前にログアクティビティをアクティブにし、クエリの直後にログをアクティブにするなど)特定のNHibernate SQLクエリをログに記録する
0
A
答えて
2
log4netのインスタンスにアペンダーをプログラムで追加したり削除したりすることができます。つまり、ログに記録するクエリにヒットしたり、プログラムで新しいアペンダーを追加したり、クエリを実行したり、プログラムでアペンダーを削除したりすることができます。私はこれをテストしていないが、これが可能でなければならないと思う。
Here is a referenceアペンダーをプログラムで追加する方法です。
0
必要に応じて有効にするインターセプタを使用して、自分でSQLをログすることができます。セッションを開くとき
public class SqlLogInterceptor : EmptyInterceptor
{
private static readonly ILog _log =
LogManager.GetLogger(typeof(SqlLogInterceptor));
public bool Enabled { get; set; }
public override SqlString OnPrepareStatement(SqlString sql)
{
// Adjust your log level as you see fit.
if (Enabled)
_log.Info(sql);
return sql;
}
}
は、OpenSession
にインターセプターのインスタンスを提供し、その上に参照を続けます。
ロギングが必要なときは、Enabled
プロパティを設定します。 1つのセッションでインターセプタインスタンスを使用した場合、そのセッションSQLだけがログに記録されます。
パラメータ値はこのソリューションでは記録されません。
関連する問題
- 1. 特定のクエリをログに記録する方法は?
- 2. 特定のメッセージをログに記録
- 3. プログラムでElmahでエラーをログに記録する:特定の情報をログに記録する
- 4. SQLスクリプトエラーをログに記録する
- 5. すべてのsqlクエリをログに記録
- 6. NHibernate Enversで現在のユーザをログに記録する方法
- 7. pg-promiseを使用して特定のpostgresqlクエリをログに記録
- 8. JooqがSQLクエリをログに記録できない
- 9. Parse Server:特定の機能をログに記録
- 10. CoreData SQLクエリを記録するには?
- 11. ReharperでユニットテストプロジェクトからNHibernate情報をログに記録
- 12. データベース変更クエリのみをログに記録する
- 13. Symfony3 - Doctrineクエリをログに記録するロガーを追加する
- 14. SLF4JのBaseJdbcLoggerは、SQLをログに記録するlogback.xmlする
- 15. 特定の期間の後にFirebaseAnalyticsイベントをログに記録する
- 16. 遅いクエリのみをログに記録するmongodb
- 17. コンコースCIで特定のコマンドをログに記録しないようにする
- 18. 特定のモジュールのlogcatに詳細ログを記録する方法
- 19. ユーザーアクティビティをログに記録
- 20. セロリタスクのキューにログを記録する
- 21. cassandra-python-driverですべてのクエリをログに記録
- 22. ファイル内でSQLバッチクエリをログに記録する方法
- 23. PreparedStatementをログに記録するには?
- 24. ユーザーアクティビティをログに記録するには
- 25. Laravel一定のログ記録NotFoundHttpException
- 26. 特定のクラスのログ情報を特定のファイルに記録する方法は?
- 27. Authlogic。ログアウトタイムアウトをログに記録する
- 28. JdbcTemplateクエリの実行時間をログに記録
- 29. エンティティフレームワークコア2 SQLは常にログに記録されます
- 30. OpenEJBクライアントのログ記録を設定するには?
ありがとうございます。あなたの意見では、特定の(複雑な)クエリだけを記録する正しい方法ですか? – StockBreak
はい、これはやってみる方法です。プログラムで目的のログを有効にし、クエリを実行してからログをオフにできる必要があります。私はこの行に沿った何かがうまくいくと確信しています。しかし、私はこれを個人的にテストしていません。 –
これにより、同時セッションのクエリが記録されます。しかし、OPがNHibernateビルトインロギングを使用したいのであれば、別の解決策が利用可能ではないと思います。 –