关键字:自定义日志格式
如果我们需要自定义自己格式的日志文件时,需要我们自己创建一个类去继承java.util.logging.Formatter类,并重写里面的format(LogRecord arg0)方法,并且该方法中就是我们自定义输出的格式内容
使用自定义的日志格式,可以在后续的框架学习中,用来输出html格式的测试报告。
以下是我们自定义的日志格式:
package com.example.my;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
/**
* 继承Formatter来自定义自己的日志格式
* @author liu
*
*/
public class MyFormatter extends Formatter {
@Override
public String format(LogRecord arg0) {
// TODO Auto-generated method stub
//创建StringBuilder对象来存放后续需要打印的日志内容
StringBuilder builder = new StringBuilder();
//获取时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
Date now = new Date();
String dateStr = sdf.format(now);
builder.append(dateStr);
builder.append(" - ");
//拼接日志级别
builder.append(arg0.getLevel()).append(" - ");
//拼接方法名
builder.append(arg0.getSourceMethodName()).append(" - ");
//拼接日志内容
builder.append(arg0.getMessage());
//日志换行
builder.append("\r\n");
return builder.toString();
}
@Override
public String getHead(Handler h) {
// TODO Auto-generated method stub
return "此处为日志的头部信息\r\n";
}
@Override
public String getTail(Handler h) {
// TODO Auto-generated method stub
return "此处为日志的尾部信息\r\n";
}
}
测试该自定义日志格式的代码:
package com.example.my;
import java.io.File;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
public class LoggerMain {
public static void main(String[] args) throws SecurityException, IOException {
// TODO Auto-generated method stub
//创建一个Logger对象:注意该对象的名称必须与getLogger()方法中的名称保持一致
Logger myLogger = Logger.getLogger("myLogger");
//如果需要将日志文件写到文件系统中,需要创建一个FileHandler对象
FileHandler fileHandler = new FileHandler("d:" + File.separator + "java" + File.separator + "logger1.log");
//追加写入日志文件
//FileHandler fileHandler = new FileHandler("d:" + File.separator + "java" + File.separator + "logger.log" , true);
//创建日志格式文件:本次采用自定义的Formatter
fileHandler.setFormatter(new MyFormatter());
//将FileHandler对象添加到Logger对象中
myLogger.addHandler(fileHandler);
myLogger.severe("这是SERVER类型的日志:严重");
myLogger.warning("这是一个WARN类型的日志文件:警告");
myLogger.info("这个是INFO类型的日志:信息");
myLogger.config("这是一个CONFIG类型的日志:配置");
}
}
测试代码输出的测试结果如下:
clipboard.png
延申阅读:
1:关于日志级别:(说明在设置日志级别之后,如果设置的INFO级别,则会打印SERVER&WAERNINNG&INFO;如果设置的是WARNING,则会输出SERVER&WAERNINNG)
日志级别
序号
内容
SEVERE
严重
WARNING
警告
INFO
信息
CONFIG
配置
FINE
良好
FINER
较好
FINEST
最好
ALL
开启所有级别日志记录
OFF
关闭所有级别日志记录
2:关于JAVA代码中的日志级别的设置
在JDK中实际上是有默认的日志级别的:在配置文件:%JAVA_HOME%\jre\lib\logging.properties中;如果JAVA设置的级别比配置文件中配置的还要低,则以配置文件中配置的为准,如果比配置文件中的高,则以程序中配置的为准。
clipboard.png