4

我在整个解决方案中使用 log4net 来满足我的日志记录需求(它有各种项目,而这些项目又具有各种类)。

是否真的需要像这样创建一个实例(又名对象):

private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));

或者我这样做的方式:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

使用log4net?难道没有替代方法,这样我就不必上课了,因此需要更少的复制和粘贴:-)?

4

1 回答 1

6

在一个小助手的帮助下:

public static class LogGateway
{
    static LogGateway() 
    { 
        XmlConfigurator.Configure();  
    }

    public static ILog For( object LoggedObject )
    {
        if ( LoggedObject != null )
            return For( LoggedObject.GetType() );
        else
            return For( (string)null );
    }

    public static ILog For( Type ObjectType )
    {
        if ( ObjectType != null )
            return LogManager.GetLogger( ObjectType );
        else
            return LogManager.GetLogger( string.Empty );
    }

    public static ILog For( string LoggerName )
    {
        return LogManager.GetLogger( LoggerName );
    }
} 

您不会复制代码,只需将记录器称为:

...
LogGateway.For( this ).Debug( "hello!" ); // instance method
LogGateway.For( typeof( Foo ) ).Debug( "hello!" ); // static method
于 2012-11-19T08:15:55.360 回答