在完成软件构造实验Lab4的过程中,实验要求完成对java日志的创建。最开始我以为这是java自带的功能,并没有太在意,在写到这个部分的时候,发现这个还需要细细研究。实现java日志的记录有很多方式:JDK Logging,Log4j,SLF4J等。由于实验推荐jdk自带的logging且Log4j前期配置比较麻烦,所以我尝试使用JDK Logging来完成日志的创建。
在查找相关资料后,我了解到Logging的一些相关操作方式,我将一些需要注意的点和操作其总结如下:
注意:
日志的输出可以设定级别。JDK的Logging定义了7个日志级别,从严重到普通:
SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST
因为默认级别是INFO,因此,INFO级别以下的日志,不会被打印出来。使用日志级别的好处在于,调整级别,就可以屏蔽掉很多调试相关的日志输出。
操作有:
1.首先获取调用日志记录的类的名称
static String strclassname=你的类.class.getName();
2.初始化一个logger
static Logger mylogger= Logger.getLogger(strclassname);
3.初始化一个 FileHandler 指针
FileHandler fh=null;
4.还可以设置logger记录的信息是否在控制台上输出
mylogger.setUseParentHandlers(false);//让logger信息不在控制台输出,true即为在控制台输出
5.设置要写入的文件
fh = new FileHandler("....你的路径Logger.log",true);
6.设置你所要设置的写入文件的日志格式
fh.setFormatter(new MyFileFormatter());//其中new MyFileFormatter()是你需要自己设计的格式类,这里不做详细解释
7.最后将此日志信息写入文件
mylogger.addHandler(fh);
mylogger.info("你所需要用日志记录的信息");
fh.close();//关掉日志文本
8.这样就成功实现了将日志记录进文件了
Lab4实验中的具体实现:
private final static Logger logger = Logger.getLogger(FlightScheduleApp.class.getName());
Locale.setDefault(new Locale("en", "EN")); //配置日志的输出语言为英文
logger.setLevel(Level.INFO); //设置日志显示信息的最低级别(即包括了 INFO, WARNING 和 SEVERE)
FileHandler fileHandler;
fileHandler = new FileHandler("log/FlightScheduleLog.txt", true); //对logger 配置加入相应的文件管理,使得日志可以写入到文件中
fileHandler.setFormatter(new SimpleFormatter());
logger.addHandler(fileHandler);
logger.setUseParentHandlers(false); //文件管理handler配置好文件写入的格式,采用SimpleFormatter格式文件
......
......
logger.log(Level.INFO,"true:setplanningentryname,计划项"+flightname); //遇到操作读入日志
logger.log(Level.SEVERE,"flase:setlocation,SameLocationException->operation again,计划项"+flightname,e2);
最后就完成了相关日志文件的创建,里面储存有日志