我会在这里分享我的意见。我要说的是,从性能的角度来看,您不应该为之烦恼。可能在代码中,有些部分可以比这件事优化得多:)
现在,关于您的问题。看一下LoggerFactory的代码
请注意,
getLogger(Class<?> name)仅调用重载方法:
Logger logger = getLogger(clazz.getName());
并进行一些额外的计算。因此,使用String的方法显然要快一些。
通常,模式是将Logger引用维护为类中的静态字段,如下所示:
public class SomeClass { private static final Logger LOG = LoggerFactory.getLogger(SomeClass.class);}在这种情况下,您不能真正使用它,
this.getClass()因为
this它实际上不存在(您在静态上下文中运行)。
根据我的经验,最好将
ClassName.getClass()用作参数,除非您真的想使用来自不同类的相同记录器。在这种情况下,最好使用一些表示记录器的逻辑常数。
例如,假设您要尝试使用3个不同的类来访问数据库。因此,您创建了记录器’DB’,分配了一个文件附加程序,该文件附加器将写入database.log,并且您想在这3个不同的类之间重用同一记录器。
因此,您应该使用以下代码:
public class SomeClass { private static final Logger LOG = LoggerFactory.getLogger("DB");}希望这可以帮助



