NHibernate + беглое отображение + NLog = не отображаются сопоставленные документы в сборке - PullRequest
0 голосов
/ 01 февраля 2019

Я успешно использовал слой CommonLogging в NHibernate для записи своих внутренних сообщений, используя NLog для предыдущих проектов, которые использовали файлы hbm.xml.Сейчас я переключаюсь на свободное отображение, и журналы NHibernate теперь содержат только одну строку:

[Log entry: Warn] 2019-02-01 13:30:42.5537 No mapped documents found in assembly: <assembly name>

Я также пытался переместить директиву конфигурации nhibernate-logger из файла App.config в код, простопосле настройки сопоставления - и я получаю то же предупреждение, что и раньше:

var dbCfg = new Configuration();
dbCfg.Configure();
dbCfg = Fluently.Configure(dbCfg)
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<RetailerMapping>())
    .ExposeConfiguration(c =>
    {
        c.SetProperty(@"nhibernate-logger", @"NHibernate.Logging.CommonLogging.CommonLoggingLoggerFactory, NHibernate.Logging.CommonLogging");
    })
    .BuildConfiguration();
dbCfg.AddAssembly(Assembly.GetExecutingAssembly().GetName().Name);

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Хорошо, меня это очень смущает, и я испытал соблазн полностью удалить вопрос, но я решил опубликовать решение на тот случай, если какая-то другая воздушная голова попадет в ту же загадку: я забыл удалить minLevelдиректива от конфигурации NLog, и я только регистрировал предупреждения, ошибки и неустранимые ошибки - и это предупреждение заставило меня думать, что это не входило в журнал из-за предупреждения, тогда как на самом деле это не было ведение журнала, потому что я запретил сообщения более низкого уровня.

0 голосов
/ 01 февраля 2019

Как уже говорилось в комментариях, log4net также подходит для вас.

Ниже приведен код, который включает ведение журнала операторов SQL в NHibernate:

Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.RemoveAllAppenders();

FileAppender fileAppender = new FileAppender();
fileAppender.Name = "NHFileAppender";
fileAppender.File = config.LogFilePath;
fileAppender.AppendToFile = true;
fileAppender.LockingModel = new FileAppender.MinimalLock();
fileAppender.Layout = new PatternLayout("%d{yyyy-MM-dd HH:mm:ss}:%m%n%n");
fileAppender.ActivateOptions();

Logger logger = hierarchy.GetLogger("NHibernate.SQL") as Logger;
logger.Additivity = false;
logger.Level = Level.Debug;
logger.AddAppender(fileAppender);

hierarchy.Configured = true;

Вы можетеИграйте с классами FileAppender и Logger, чтобы удовлетворить ваши дополнительные требования. Это Q / A также может помочь.

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

...