我知道如何配置NHibernate和log4net來記錄我的查詢的結果SQL。但是,是否可以僅記錄特定查詢(例如,在LINQ查詢之前激活記錄活動並在查詢之後立即將其停用)?記錄特定的NHibernate SQL查詢
0
A
回答
2
您可以以編程方式將appender添加到log4net的實例並將其移除。所以你可以做的是,當你點擊你想要記錄的查詢時,以編程方式添加一個新的appender,運行查詢,然後以編程方式刪除appender。我沒有測試過這個,但我認爲這應該是可能的。
Here is a reference如何以編程方式添加appenders。
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
屬性。假設您只使用一個會話使用攔截器實例,則它將只記錄該會話SQL。
此解決方案不會記錄參數值。
相關問題
- 1. 記錄NHibernate的SQL查詢
- 2. SQL查詢查找具有特定前綴的記錄
- 3. 特定記錄的Mysql查詢
- 4. 查詢Lotus Notes中的特定記錄
- 5. SQL查詢按日期查找特定記錄
- 6. SQL查詢多個記錄中的每個記錄中的特定值
- 7. 對具有特定列值的記錄的Oracle SQL「元」查詢
- 8. 獲取特定月份的所有記錄 - 構建SQL查詢
- 9. sql查詢返回特定記錄的條件
- 10. SQL查詢左外連接與特定的記錄
- 11. 具有記錄數的特定sql查詢
- 12. 排除特定的記錄從SQL查詢
- 13. SQL查詢基於特定條件顯示唯一的記錄
- 14. 查詢不同記錄的SQL查詢
- 15. 如何Mysqli先查詢特定記錄?
- 16. 如何記錄特定查詢?
- 17. LINQ查詢刪除特定記錄
- 18. 子查詢拉特定記錄
- 19. 每個記錄特定的查詢記錄
- 20. Glimpse不記錄Nhibernate查詢(mvc3)
- 21. nHibernate獨特查詢
- 22. 如何查詢特定類型的NHibernate?
- 23. 通過記錄號查詢SQL查詢
- 24. vb6記錄集sql查詢
- 25. SQL查詢多記錄
- 26. SQL查詢選擇記錄
- 27. SQL查詢重複記錄
- 28. SQL查詢最新記錄
- 29. SQL查詢重複記錄
- 30. SQL查詢記錄總數
謝謝。在你看來,是否只有記錄特定(複雜)查詢的正確方法? – StockBreak 2012-01-18 20:03:21
是的,這是我嘗試這樣做的方式。您應該能夠以編程方式打開所需的日誌記錄,執行您的查詢,然後關閉日誌記錄。我非常肯定沿着這條線將會發揮作用;然而,我沒有親自親自測試過。 – 2012-01-18 20:11:42
這將導致併發會話的查詢順便記錄。但我不認爲如果OP想要使用NHibernate內置日誌記錄,而不是一些自定義的日誌,可以使用其他解決方案。 – 2017-07-16 19:08:07