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 的实现,则使用非静态变量更好.