假设我有一个公共类,其logger由其名称初始化:
public class SomeCalculationLogic {
private static final Log log = LogFactory.getLog(SomeCalculationLogic .class);
public void doCalculation() {
log.info("doing calculations...");
...
}
}
Run Code Online (Sandbox Code Playgroud)
这个类由两个逻辑上不同的流使用 - 比如从类"BackgroundTask"和"UserRequest"调用它.如何使SomeCalculationLogic的记录器的输出重定向到不同的日志文件(如background.log和main.log),具体取决于调用类是什么?
我看到三种可能的方法:
子类化解决方案的有效实现如下所示:
public class SomeCalculationLogic {
protected abstract Log getLog();
public void doCalculation() {
getLog().info("doing calculations...");
...
}
}
public class BackgroundCalculationLogic extends SomeCalculationLogic {
private static Log log = LogFactory.getLog(BackgroundCalculationLogic.class);
protected Log getLog() {
return log;
}
}
public class UserRequestCalculationLogic extends SomeCalculationLogic {
private static Log log = LogFactory.getLog(UserRequestCalculationLogic.class);
protected Log getLog() {
return log;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1624 次 |
| 最近记录: |