记录器是否应声明为静态?通常我会看到两种类型的记录器声明:
protected Log log = new Log4JLogger(aClass.class);
要么
private static Log log = new Log4JLogger(aClass.class);
应该使用哪一个?这两者的专业和概念是什么?
可以从许多线程访问类.在这种情况下必须是记录器也是最终的和静态的吗?谢谢.
我想创建一个Spring的bean生成器方法,它知道是谁调用了它,所以我开始使用以下代码:
@Configuration
public class LoggerProvider {
@Bean
@Scope("prototype")
public Logger produceLogger() {
// get known WHAT bean/component invoked this producer
Class<?> clazz = ...
return LoggerFactory.getLogger(clazz);
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这些信息谁想要得到这个bean注入?
我正在寻找一些在Spring世界中相当于CDI的东西InjectionPoint.
我设置了一个基本的 Java 程序,我正在关注本教程并拥有以下确切代码:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
Run Code Online (Sandbox Code Playgroud)
我的构建路径上有 jars slf4j-api-1.7.5.jar 和 slf4j-log4j12-1.7.5 jar。我不明白是什么给出的,getLogger 方法存在于 LoggerFactory 类中,我可以 F3(源代码查找)到它。我对此进行了 Google 搜索,似乎是唯一解决此问题的方法。有任何想法吗?
这是我用于 Eclipse 的 .classpath:
<xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdit..../>
<classpathentry kind="lib" path="/home/Desktop/slf4j-api-1.7.5.jar" sourcepath="/home/Desktop/slf4j-api-1.7.5.jar"/>
<classpathentry kind="lib" path="slf4j-log4j12-1.7.5.jar"/>
<classpathentry kind="lib" path="log4j-1.2.17.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)