0
有一個班級A和一個班級B,他們都在班級的幫助下使用班級C.類A和類B需要在不同的文件中生成自己的文件,例如:類A在「log_B.log」中生成日誌文件「log_A.log」和類B - 。如何記錄兩個班級使用的總體班級
我的問題是 - 如何寫一個類C的日誌accoerding調用類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");
}
PS我使用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");
}
但我認爲這是
可以消除靜電keywork來自C的記錄器。它沒有意義,因爲我們每個實例需要不同的記錄器。事實上保持靜態將會產生問題,因爲其他實例的記錄器將被修改。 –