继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JSP+Servlet培训班作业管理系统[26] -番外篇之日志

程序员大阳
关注TA
已关注
手记 357
粉丝 1.5万
获赞 1523

本篇使用java自带的java.util.logging处理日志,特点是简单快捷。

首先理解四个类:

//Logger类是日志记录器
import java.util.logging.Logger;
//FileHandler类帮助Logger类处理文件
import java.util.logging.FileHandler;
//LogRecord类帮助Logger类处理日志中消息级别和内容
import java.util.logging.LogRecord;
//SimpleFormatter处理FileHandler保存格式
import java.util.logging.SimpleFormatter;

了解这4个类之后,我们写一个异常日志处理类:

package util;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
/**
 * 异常日志类ExceptionLogger
 * @author 猫哥
 * @date 2017.2.24
 */
public class ExceptionLogger {
    //日志记录器
    public static Logger logger;
    static{//初始化
        try{
            //给日志记录器起名
            logger=Logger.getLogger("HomeworkSystem");
            //日志相关的文件处理器
            FileHandler fileHandler;
            fileHandler = new FileHandler("d:\\log.txt");
            //文件处理器相关的格式
            SimpleFormatter formatter = new SimpleFormatter();
            fileHandler.setFormatter(formatter);
            //日志记录器使用fileHandler管理文件
            logger.addHandler(fileHandler);
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //记录一条日志
    public static void logInfo(String info){
        //设置日志级别,内容
        LogRecord logRecord = new LogRecord(Level.INFO, info);
        //记录一条日志
        logger.log(logRecord);
    }
}

该类将日志处理逻辑封装好了,只需要调用ExceptionLogger.logInfo便可轻易记录日志。

猫哥想把异常信息都记录到日志里面,所以修改MyException类如下:

/**
 * exception包:包含自定义异常类的包
 */
package exception;
import java.util.Date;
import util.ExceptionLogger;
public class MyException extends Exception{
    private Date time;//记录异常发生时间
    private String message;//原始异常信息,给程序员看,记录日志
    private String info;//自定义信息,给用户看
    public MyException(){
        super();
    }
    public MyException(Date time,String msg,String info){
        super();
        this.time=time;
        this.message=msg;
        this.info=info;
        //日志
        ExceptionLogger.logInfo(msg+"##"+info);
    }
    public Date getTime() {
        return time;
    }
    public void setTime(Date time) {
        this.time = time;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String getInfo() {
        return info;
    }
    public void setInfo(String info) {
        this.info = info;
    }
}

好的,测试下,登录时输错密码后点击登录,在D盘下日志文件中发现:

二月 24, 2017 11:51:19 上午 util.ExceptionLogger logInfo
信息: LoginAction Error##登录失败!

OVER,这个日志系统非常简单,但是也容易扩展。可以分别使用多个日志类,分别对应不同的文件、级别。推荐的做法是使用两个,一个记录登录用户的行为,一个记录系统运行的异常。

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP