我在整个解决方案中使用log4net来满足我的日志记录需求(其中包含各种类别的项目)。
是否真的需要始终创建一个实例(aka对象),如下所示:
private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));
或我的方式:
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
要使用log4net吗?是否有替代方案,以便我不必在课堂上这样做,因此需要更少的副本和粘贴:-)?
答案 0 :(得分:5)
在一个小帮手的帮助下:
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