創建Logger
Logger級別
C:\Program Files\Java\jdk1.8.0_91\jre\lib\logging.properties
配置文件>Logger setLevel> hanlder setLevel
Handler
Formatter
Java logger的效率不如log4j(處理大量讀寫),但是它裏面的一些概念和設計理念跟log4j一致
package com.my.logger;
import java.util.logging.Level;
import java.util.logging.Logger;
public class TestLoggerBase {
public static void main(String[] args) {
Logger log = Logger.getLogger("MyLog");
Logger log1 = Logger.getLogger("MyLog");
System.out.println("判斷log:");
System.out.println(log == log1);
log.setLevel(Level.INFO);
// log.setLevel(Level.CONFIG);
// log.setLevel(Level.SEVERE);
// log.setLevel(Level.ALL);
// log.setLevel(Level.OFF);
log.severe("S");
log.warning("W");
log.info("inf0");
log.info("inf02");
log.info("inf03");
log.config("Config");
log.fine("fine");
}
}
運行結果:
package com.my.logger;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MySimpleLogger {
static Logger log = Logger.getLogger("MyLog");
public static void main(String[] args) {
test1(0);
}
public static void test1(int p_i) {
log.setLevel(Level.WARNING);
if(p_i == 0) {
log.fine("這是一個調試信息1");
log.info("執行api test1");
}else {
log.info("這是一個調試信息2");
log.warning("執行api錯誤");
}
}
}
運行結果:
package com.my.logger;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
public class FileHandlerDemo {
public static void main(String[] args) {
Logger log2 = Logger.getLogger("MyLog4");
try {
FileHandler fileHandler = new FileHandler("D:\\testlogml0.log");
fileHandler.setLevel(Level.WARNING);
log2.addHandler(fileHandler);
log2.info("bbb");
log2.info("aaa");
log2.warning("warning");
log2.severe("severe");
log2.config("config");
log2.fine("fine");
fileHandler.close();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.my.logger;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
public class MyFormatter extends Formatter{
@Override
public String format(LogRecord record) {
return "**** "+record.getLevel() + ":" + record.getMessage()+"\r\n";
}
public String getHead(Handler h) {
return "this is header\r\n";
}
public String getTail(Handler h) {
return "this is footer\r\n";
}
}
package com.my.logger;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
public class MyOldFormatter extends Formatter{
@Override
public String format(LogRecord record) {
return record.getLoggerName()+"_"+record.getLevel()+":"+record.getMessage()+"\n";
}
}
package com.my.logger;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
public class TestLoggerFormatter {
public static void main(String[] args) {
Logger log = Logger.getLogger("MyLog");
log.setLevel(Level.INFO);
try {
FileHandler fileHandler = new FileHandler("D:/test999.log");
fileHandler.setFormatter(new MyFormatter());
// fileHandler.setFormatter(new MyOldFormatter());
log.addHandler(fileHandler);
log.info("aaa");
log.info("bbb");
fileHandler.close();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
運行結果: