(1). public static Logger getLogger(String name)
为指定子系统查找或创建一个 logger。如果已经创建了具有给定名称的 logger,则返回该 logger。否则创建一个新的 logger。
2. Logger的级别
(1). 全部定义在java.util.logging.Level里面。
(2). 各级别按降序排列如下:
SEVERE(最高值)
WARNING
INFO
CONFIG
FINE
FINER
FINEST(最低值)
此外,还有一个级别 OFF,可用来关闭日志记录,使用级别 ALL 启用所有消息的日志记录。
(3). Logger默认的级别是INFO,比INFO更低的日志将不显示。
(4). Logger的默认级别定义是在jre安装目录的lib下面的logging.properties文件中:
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
3. 简单实例
public class MyLogger {
public static void main(String[] args) {
Logger logger = Logger.getLogger(MyLogger.class.getName());
logger.setLevel(Level.ALL);
logger.info("info level in java util logging Logger");logger.warning("warning level in java util logging Logger");
logger.severe("server level in java util logging Logger");
}
}
4. Logger的Handler
(1). Handler 对象从 Logger 中获取日志信息,并将这些信息导出。例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。
(2). java.util.logging.Handler
java.util.logging.MemoryHandler
java.util.logging.StreamHandler
java.util.logging.ConsoleHandler
java.util.logging.FileHandler
java.util.logging.SocketHandler
(3). 例子
public class MyLogger {
public static void main(String[] args) {
Logger logger = Logger.getLogger(MyLogger.class.getName());
logger.setLevel(Level.ALL);
try {
FileHandler fileHandler = new FileHandler("MyLogger.log");
fileHandler.setLevel(Level.INFO);
logger.addHandler(fileHandler);
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
logger.info("info level in java util logging Logger");
logger.warning("warning level in java util logging Logger");
logger.severe("server level in java util logging Logger");
}
}
输出结果见图:
5. Logger的Formatter
(1). Formatter 为格式化 LogRecords 提供支持。
一般来说,每个日志记录 Handler 都有关联的 Formatter。Formatter 接受 LogRecord,并将它转换为一个字符串。
有些 formatter(如 XMLFormatter)需要围绕一组格式化记录来包装头部和尾部字符串。可以使用 getHeader 和 getTail 方法来获得这些字符串。
(2). LogRecord 对象用于在日志框架和单个日志 Handler 之间传递日志请求。
(3). LogRecord(Level level, String msg)
用给定级别和消息值构造 LogRecord。
(4). java.util.logging.Formatter
java.util.logging.SimpleFormatter
java.util.logging.XMLFormatter
(5). 例子
public class MyLogger {
public static void main(String[] args) {
Logger logger = Logger.getLogger(MyLogger.class.getName());
logger.setLevel(Level.ALL);
try {
FileHandler fileHandler = new FileHandler("MyLogger.log");
fileHandler.setLevel(Level.INFO);
fileHandler.setFormatter(new MyLogFormatter());
logger.addHandler(fileHandler);
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
logger.info("info level in java util logging Logger");
logger.warning("warning level in java util logging Logger");
logger.severe("server level in java util logging Logger");
}
}
public class MyLogFormatter extends Formatter{public String format(LogRecord record) {
return record.getLevel() + ":[" + record.getMessage() + "]" + System.getProperty("line.separator");
}
}
输出结果见下图: