Журнал конкретных запросов NHibernate SQL - PullRequest
0 голосов
/ 18 января 2012

Я знаю, как настроить NHibernate и log4net для записи результирующего SQL моих запросов.Возможно ли, однако, регистрировать только определенные запросы (например, активировать активность регистрации перед запросом LINQ и деактивировать ее сразу после запроса)?

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Вы можете программно добавлять и удалять дополнения к экземпляру log4net.Так что вы можете сделать, когда вы нажмете на запрос, который хотите зарегистрировать, программно добавите нового приложения, запустите запрос, а затем программно удалите приложение.Я не проверял это, но я думаю, что это должно быть возможно.

Ниже приведена справка о том, как программно добавлять дополнительные устройства.

0 голосов
/ 16 июля 2017

Вы можете самостоятельно регистрировать 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.

Значения параметров не будут регистрироваться с этим решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...