2015-01-13 4 views
1

Я использую параметр настройки Nibernate-logging appsettings для использования моего настраиваемого регистратора, реализующего IInternalLogger и ILoggerFactory, но я хочу только регистрировать предложения SQL.Как зарегистрировать только SQL в NHibernate 3, используя протокол Nhibernate?

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... 
} 

ответ

1

"ключ" является парам KEYNAME в методе LoggerFor (строка 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"/> 

 Смежные вопросы

  • Нет связанных вопросов^_^