2015-01-13 2 views
1

나는 IIhternalLogger 및 ILoggerFactory를 구현하면서 사용자 정의 로거를 사용하기 위해 Nhibernate-logging appsettings 옵션을 사용하고 있지만 SQL 문장 만 로깅하려고합니다.Nhibernate-logging을 사용하여 NHibernate 3에서 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... 
} 

답변

1

은 "키"는 LoggerFor (문자열 키 이름) 방법에서 PARAM 키 이름은 다음

<add key="nhibernate-logger" value="myNamespace.LoggerFactory, myAssemblyName"/> 
:
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