Closed
Description
Hi folks,
I use NH 5.3.1 on two projects: Asp.net core and Console.
I created a component that allows to use multiple data sources simultaneously (1 SQL, 1 Oracle) in each project.
I created a second component that wraps logging and add extra features. In this component I use your INHibernateLogger
but I have an issue: I do not know the log line which database is refering to. For example:
hibernate-configuration #1
: <session-factory name="dev_nhibernatetests1">
hibernate-configuration #2
: <session-factory name="dev_nhibernatetests2">
NLog.config
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="file" xsi:type="File"
layout="${shortdate}|${date:format=HH\:mm\:ss}|${logger} ${message} ${exception}"
fileName="D:\logs\dbtest.log" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
Acording previous NLog.config, dbtest.log result is:
2022-04-24|08:59:34|NHibernate.Dialect.Dialect Using dialect: JMRB.Db.Relational.MicrosoftDataSqlClient.MsSql2019Dialect
(...)
2022-04-24|08:59:34|NHibernate.Dialect.Dialect Using dialect: NHibernate.Dialect.Oracle10gDialec
2022-04-24|09:09:31|NHibernate.Persister.Entity.AbstractEntityPersister Insert 0: INSERT INTO ...
(...)
2022-04-24|09:09:45|NHibernate.Persister.Entity.AbstractEntityPersister Insert 0: INSERT INTO ...
What I need is:
2022-04-24|08:59:34|NHibernate.Dialect.Dialect|dev_nhibernatetests1 Using dialect: JMRB.Db.Relational.MicrosoftDataSqlClient.MsSql2019Dialect
(...)
2022-04-24|08:59:34|NHibernate.Dialect.Dialect|dev_nhibernatetests2 Using dialect: NHibernate.Dialect.Oracle10gDialec
2022-04-24|09:09:31|NHibernate.Persister.Entity.AbstractEntityPersister|dev_nhibernatetests1 Insert 0: INSERT INTO ...
(...)
2022-04-24|09:09:45|NHibernate.Persister.Entity.AbstractEntityPersister|dev_nhibernatetests2 Insert 0: INSERT INTO ...
Can I achieve this changing NLog.config? or can you expand INHibernateLogger
?
public interface INHibernateLogger
{
void Log(NHibernateLogLevel logLevel, NHibernateLogValues state, Exception exception);
bool IsEnabled(NHibernateLogLevel logLevel);
// For example:
//(Configuration.Properties)
IDictionary<string, string> Properties { get; set; }
// or
void Log(NHibernateLogLevel logLevel, NHibernateLogValues state, string sessionFactoryName, Exception exception);
}
Cheers