สวัสดีฉันกำลังพยายามใช้การบันทึกจาวาในแอปพลิเคชันของฉัน ฉันต้องการใช้ตัวจัดการสองตัว ตัวจัดการไฟล์และตัวจัดการคอนโซลของฉันเอง ตัวจัดการทั้งสองของฉันทำงานได้ดี การบันทึกของฉันจะถูกส่งไปยังไฟล์และไปที่คอนโซล การบันทึกของฉันจะถูกส่งไปยังตัวจัดการคอนโซลเริ่มต้นซึ่งฉันไม่ต้องการ หากคุณเรียกใช้รหัสของฉันคุณจะเห็นสองบรรทัดพิเศษที่ส่งไปยังคอนโซล ฉันไม่ต้องการใช้ตัวจัดการคอนโซลเริ่มต้น ไม่มีใครรู้วิธีปิดใช้งานตัวจัดการคอนโซลเริ่มต้น ฉันต้องการใช้เครื่องจัดการสองตัวที่ฉันสร้างขึ้นเท่านั้น
Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
import java.util.Date;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class LoggingExample {
private static Logger logger = Logger.getLogger("test");
static {
try {
logger.setLevel(Level.INFO);
Formatter formatter = new Formatter() {
@Override
public String format(LogRecord arg0) {
StringBuilder b = new StringBuilder();
b.append(new Date());
b.append(" ");
b.append(arg0.getSourceClassName());
b.append(" ");
b.append(arg0.getSourceMethodName());
b.append(" ");
b.append(arg0.getLevel());
b.append(" ");
b.append(arg0.getMessage());
b.append(System.getProperty("line.separator"));
return b.toString();
}
};
Handler fh = new FileHandler("test.txt");
fh.setFormatter(formatter);
logger.addHandler(fh);
Handler ch = new ConsoleHandler();
ch.setFormatter(formatter);
logger.addHandler(ch);
LogManager lm = LogManager.getLogManager();
lm.addLogger(logger);
} catch (Throwable e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
logger.info("why does my test application use the standard console logger ?\n" + " I want only my console handler (Handler ch)\n " + "how can i turn the standard logger to the console off. ??");
}
}
b.append(formatMessage(arg0))
แทนb.append(arg0.getMessage())
. ด้วยformatMessage
วิธีการที่คุณทำให้ฟอร์แมตเตอร์ของคุณเข้ากันได้กับการใช้งานpublic void log(Level level, String msg, Object param1)
และวิธีการที่คล้ายกัน