日志学习-slf4j

1.日志变量在类中申明为静态变量还是动态变量?

package some.package;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
      
public class MyClass {
  final (static) Logger logger = LoggerFactory.getLogger(MyClass.class);
  ... etc
}

例如上例.可以参考:http://slf4j.org/faq.html#declared_static

这里对上面的参考做一个大概的总结:

1.静态的每个类只会加载一个实例.动态的每个实例生成一个,但是在logback 的实现中,同一个application(项目)中多个相同类的实例也只会返回一个实例,因为logback保存了上下文的原因.

2.设置为静态变量,则日志框架不能在多个项目中共享.设置为非静态的可以.

3.设置为静态变量则不能IOC 注入,不能序列化;而非静态的可以.

结论是:是如果是使用logback 作为slf4j 的实现,则使用非静态变量更好.

原文地址:https://www.cnblogs.com/predisw/p/4756974.html