1.基本类
1.1.Logger
1.1.1.创建Logger
static Logger getLogger(String name)
为指定子系统查找或创建一个 logger。
注意:name是Logger的名称,当名称相同时候,同一个名称的Logger只创建一个。
1.1.2.Logger的级别
SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST
此外,还有一个级别OFF,可用来关闭日志记录,使用级别ALL启用所有消息的日志记录。
1.1.3.实例
Logger L = Logger.getLogger("AppLogs");
L.setLevel(Level.INFO);
1.2.FileHandler
Handler对象从Logger中获取日志信息,并将这些信息导出。例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。
1.2.1.实例
public class LogFormatter extends Formatter {
@Override
public String format(LogRecord record) {
//日志写入格式
return record.getMessage() + "\n";
}
}
FileHandler fileHandler = null;
try {
fileHandler = new FileHandler("src/Log/AppLogs.txt");//设置保存文件位置
fileHandler.setLevel(Level.INFO); //设置等级
fileHandler.setFormatter(new LogFormatter()); //设置格式
L.addHandler(fileHandler);//Handler从Logger获取日志信息
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2.完成日志写入和读取
日志写入和读取类
public class LogApi {
/**
* 异常日志写入.
*
* @param log 日志
* @param myclass 类名
* @param method 方法名
* @param o 异常
*/
public void writeExceptionLog(Logger log, String myclass, String method,OrbitExcetion o) {
//操作日志(输入 日志, 类名,函数名, 异常)
Calendar c = Calendar.getInstance();
String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(c.getTime());
log.info("Type: 0," + "Time: " + str + ",Class: " + myclass + ",Method: " + method
+ ",Infomation: " + o.getMessage() + "——");
}
/**
* 操作日志写入.
* @param log 日志
* @param myclass 类名
* @param method 方法名
* @param operate 操作名
*/
public void writeOperateLog(Logger log, String myclass, String method, String operate) {
Calendar c = Calendar.getInstance();
String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(c.getTime());
log.info("Type: 1," + "Time: " + str + ",Class: " + myclass + ",Method: " + method
+ ",Infomation: " + operate + "——");
}
/**
* 日志读取.
* @param filename 文件名
* @return 分开的所有条日志
*/
public List<String> readFiles(String filename) { //读取日志文件
List<String> myBack = new ArrayList<>();
try {
FileReader f = new FileReader(new File(filename));
BufferedReader input = new BufferedReader(f);
String back = new String();
String temp = new String();
try {
while ((temp = input.readLine()) != null) {
back += temp;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String[] tempAll = back.split("——");//获得分开的日志操作信息
for (int i = 0; i < tempAll.length; i++) {
myBack.add(tempAll[i]);
}
return myBack;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return myBack;
}
}
完成写入
LogApi API = new LogApi();
Logger L = new Logger("AppLog");
API.writeOperateLog(L, "TrackGame", "readFiles", "readFiles");
完成读取
LogApi API = new LogApi();
List<String> ALL = API.readFiles(日志文件位置);