Я знаю, как настроить NHibernate и log4net для регистрации полученного SQL-запроса. Возможно ли, однако, зарегистрировать только конкретные запросы (например, активирование активности ведения журнала перед запросом LINQ и деактивация его сразу после запроса)?Журналы конкретных NHibernate SQL-запросов
ответ
Вы можете программно добавлять и удалять приложения к экземпляру log4net. Итак, что вы можете сделать, это когда вы нажимаете на запрос, который хотите записать, программно добавляете новый appender, запускаете запрос и затем программно удаляете appender. Я не тестировал это, но думаю, что это должно быть возможно.
Here is a reference о том, как программно добавлять дополнения.
Вы можете зарегистрировать 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 отключает журналы log4net
- 2. Есть ли ресурс, который описывает все журналы log4net, используемые NHibernate?
- 3. Как проверить NHibernate приложения: четыре конкретных пунктов для проверки
- 4. Журналы и журналы IIS
- 5. browser.manage(). Журналы(). Получить ('браузер') журналы не загружается браузер журналы отладки
- 6. Php обновление конкретных конкретных пользователей
- 7. Переадресовать журналы приложений на журналы докеров
- 8. Журналы базы данных и журналы файлов
- 9. Получить журналы iPhone (не журналы сбоев)
- 10. Улей отключить журналы истории и журналы запросов
- 11. UnitOfWork журналы
- 12. Java: Как я могу настроить журналы регистрации конкретных типов журналов один раз в день
- 13. Назначение конкретных цветов для конкретных значений
- 14. VBA Кодирование конкретных ячеек для конкретных листов
- 15. Взаимодействующий свободный NHibernate + NHibernate + Linq To NHibernate
- 16. Добавить пользовательские журналы в лазурное приложение HDInsight
- 17. NHibernate или Fluent NHibernate?
- 18. Fluent NHibernate/NHibernate Mappings
- 19. NHibernate + Fluent NHibernate исключение
- 20. NHibernate/Fluent NHibernate Mapping
- 21. Django: Как создать пользовательские журналы?
- 22. Визуализировать журналы ошибок из winston (node.js)
- 23. как различать журналы ядра и журналы пользовательского интерфейса и остальные журналы на основе содержимого в файле
- 24. Отключить NHibernate регистрации
- 25. Проблема в запросе с NHibernate
- 26. Fluent Nhibernate и Nhibernate 2.1.0.1003
- 27. Obscure ошибка NHibernate/Fluent NHibernate
- 28. Fluent NHibernate/NHibernate Inheritance Вопрос
- 29. Fluent NHibernate с NHibernate 3.0
- 30. NHibernate + Fluent NHibernate + Oracle Index
спасибо. Это, по вашему мнению, правильный способ регистрации только определенных (сложных) запросов? – StockBreak
Да, я бы попытался это сделать. Вы должны иметь возможность программно включить требуемое ведение журнала, выполнить запрос и затем отключить ведение журнала. Я уверен, что что-то по этой линии будет работать; Тем не менее, я лично лично не проверял это сам. –
Это приведет к тому, что запросы одновременных сеансов будут регистрироваться. Но я не думаю, что другое решение доступно, если OP хочет использовать NHibernate встроенный журнал, а не какой-то пользовательский. –