作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个 A 类和一个 B 类。它们都在组合的帮助下使用 C 类。 A类和B类需要在不同的文件中生成自己的日志,例如:A类生成日志到文件“log_A.log”,B类生成日志到文件“log_B.log”。
我的问题是 - 如何根据调用类 C 的方法的类来编写类 C 的日志?我的意思是:如果从类 A 调用类 C 的方法,则应生成类 C 的日志到类 A 的日志文件 - “log_A.log”。如果从类 B 调用类 C 的方法,则应生成类 C 的日志到文件“log_B.log”。还有一件事 - C 类的日志记录级别应该与 A 类或 B 类的记录器相同。
例如A类:
//loggerA - it's logger that writes to file "log_A.log"
private static final Logger log = Logger.getLogger("loggerA");
public void method(){
log.debug("Write to log of class A");
C c = new C();
c.method(); //activity in class C should be written to "log_A.log" as well
}
B类:
private static final Logger log = Logger.getLogger("loggerB");
public void method(){
log.debug("Write to log of class B");
C c = new C();
c.method(); //activity in class C should be written to "log_B.log" as well
}
在C类中:
private static final Logger log = Logger.getLogger(???);
public void method(){
log.debug("Any log message");
}
附注我使用log4j 1.2.16
我可以尝试执行以下操作:在C类中:
public void method(String logger){
final Logger log = Logger.getLogger(logger); //Use the logger of calling class
log.debug("Any log message");
}
但我认为这是一个肮脏的决定
最佳答案
创建 C 类的构造函数,以 logger 作为参数。现在,在任何其他类中实例化 C 时,将该类的记录器传递给 C。类似的东西 -
class C {
public C(Logger log) {
this.log = log;
}
}
然后在 A 或 B 中,像 -
C c = new C(this.log);
c.method();
关于java - 如何记录两个类使用的总体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445303/
在数据仓库上工作,对这个问题的一个合适的类比是我们有医疗保健从业者。医疗保健从业者具有多种专业属性,并且在多个团队和多个临床领域工作。 例如,您可能有一名护士作为救援人员/承包商/银行工作人员在多个团
我是一名优秀的程序员,十分优秀!