日志是任何应用程序、系统中非常重要的部分!!!
实际应用,比如接口调用需要调用日志记录,比如事件操作需要操作日志记录,比如问题报错需要错误日志记录。
合理的日志记录,使得系统的任何风吹草动都让人了如指掌,对于后续的分析排查统计完全能起到事半功倍的作用。
Java自带的log,类图大概如下:
如上图,Handler类负责打印日志到文件、控制台或者网络上等等,Handler类中的Formatter类负责日志格式的排版,每个Handler类实例都有自己的输出等级Level,而Logger类则负责把日志内容封装成对象,然后调用Handler类来处理这些日志对象的最终输出。
以上关系可以使用下面的代码表示:
public static void main(String[] args) throws IOException {
//根据名称创建一个Logger
Logger logger = Logger.getLogger(MyLogger.class.getName());
//创建文件Handler并设置格式Formatter和等级Level
FileHandler fileHandler = new FileHandler("C:\\Users\\l\\Desktop\\mylog.log", true);
fileHandler.setFormatter(new SimpleFormatter());
fileHandler.setLevel(Level.WARNING);
//添加到logger
logger.addHandler(fileHandler);
//进行日志输出
logger.warning("warning ...");
}
另外,可以在配置文件中指定输出类别和格式:
public static void main(String[] args) {
System.setProperty("java.util.logging.config.file", "mylog.properties");
Logger logger = Logger.getLogger(MyLogger.class.getName());
//进行日志输出
logger.info("this is info msg...");
}
mylog.properties:
handlers= java.util.logging.FileHandler,java.util.logging.ConsoleHandler
#.level= INFO
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = C:\\Users\\l\\Desktop\\mylog.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.append = true
java.util.logging.FileHandler.level = FINE
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
创建日志logger时会自动读取配置文件java.util.logging.LogManager#readConfiguration()
,并把配置文件里的参数设置进去。