如何使用 Nhibernate-logging 在 NHibernate 3 中仅记录 SQL
本文关键字:记录 SQL NHibernate 何使用 Nhibernate-logging | 更新日期: 2023-09-27 18:37:25
我正在使用Nhibernate-logging appsettings选项来使用我的自定义记录器,实现IInternalLogger和ILoggerFactory,但我只想记录SQL句子。
public class CustomLogger: IInternalLogger, ILoggerFactory
{
private TraceSource traceSource;
public CustomLogger()
{
this.traceSource = new TraceSource("CustomLogger");
}
public IInternalLogger LoggerFor(Type type)
{
return new CustomLogger();
}
public IInternalLogger LoggerFor(string keyName)
{
return new CustomLogger();
}
public void Info(object message)
{
this.Log(TraceEventType.Information, message.ToString());
}
// etc...
}
"key" 是 LoggerFor(string keyName) 方法中的参数 keyName:
public class LoggerFactory : ILoggerFactory
{
public LoggerFactory()
{
}
public IInternalLogger LoggerFor(Type type)
{
return new AllCustomLogger();
}
public IInternalLogger LoggerFor(string keyName)
{
if (keyName == "NHibernate.SQL")
{
return new OnlySqlCustomLogger();
}
else
{
return new AllCustomLogger();
}
}
}
public class OnlySqlCustomLogger: IInternalLogger
{
public OnlySqlCustomLogger()
{
}
public void Info(object message)
{
this.Log(message.ToString());
}
// etc...
}
在web.config/app.config中:
<add key="nhibernate-logger" value="myNamespace.LoggerFactory, myAssemblyName"/>