开发者社区> 程序员大阳> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JSP+Servlet培训班作业管理系统[23]–番外篇之Java Web日志

简介: 本文目录 1. 本章任务 2. 基础类库 3. 自定义异常处理工具类 4. 测试验证
+关注继续查看

1. 本章任务

系统日志是一个完整系统必要的模块,便于我们再出现问题时还原当时的场景,比如数据库操作如果发生异常,最好就要记录日志。

本篇使用java自带的java.util.logging类库类记录日志,特点是简单快捷。

2. 基础类库

首先理解四个类:

//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;

3. 自定义异常处理工具类

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

/**
 * 日志工具类
 */
public class LogUtils {
    // 日志记录器
    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 writeLog(Level level, String content) {
        // 设置日志级别,内容
        LogRecord logRecord = new LogRecord(level, content);
        // 记录一条日志
        logger.log(logRecord);
    }
}

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

4. 测试验证

登录成功后记录一条日志,修改LoginServlet。

      user = lc.checkLogin(userName, userPassword);
            if (user == null) {
                // 跳转到错误提示页面,并提示用户不存在
                tipInfo = "用户不存在";
                page = "tip.jsp";
            } else {
                // 登录成功,记录用户信息到Session,同时跳转管理后台页面
                // 记录日志
                LogUtils.writeLog(Level.INFO, "登录成功:"+user.getUserName());
                request.getSession().setAttribute("loginUser", user);
                page = "index.jsp";
                // 设置菜单
                String[][] loginMenus = Constants.roleMenuMap.get(user.getUserRole());
                request.getSession().setAttribute("loginMenus", loginMenus);
            }

好的,测试下,点击登录,在D盘下日志文件中发现:

image.png

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
最牛逼的 Java 日志框架,性能无敌,横扫所有对手.....
最牛逼的 Java 日志框架,性能无敌,横扫所有对手.....
104 0
最牛逼的 Java 日志框架,性能无敌,横扫所有对手。。
Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。 而且 logback的异步性能实在拉跨,功能简陋,配置又繁琐,远不及Apache 的新一代日志框架 - Log4j2 目前来看,Log4j2 就是王者,其他日志框架都不是对手
66 0
LinkedList的模拟实现(Java实现)
LinkedList的底层是用一个双向链表实现的,即一个结点中除了有一个引用指向下一个结点的地址,还有一个引用指向前一个结点的地址。
23 0
Webscoket通信,java使用springboot集成,实现页面无刷新消息提示
Webscoket通信,java使用springboot集成,实现页面无刷新消息提示
26 0
链表OJ题---Java实现
遍历链表与给定值比较,如果节点的值与给定值相等就删除该节点,链表节点的删除需要标记删除节点的前一个节点。
49 0
基本排序算法总结(Java实现)
排序概念就是将一串记录按照其中某个或某些关键字的大小,递增或递减的排列起来的操作。
14 0
(Java)数据结构之队列(Queue),含有三个OJ题(用队列实现栈,用栈实现队列,实现一个最小栈)
队列只允许在一端进行插入操作,在另一端进行删除操作的特殊线性表,队列具有先进先出(FIFO)的特性,进行插入操作的一端为队尾,进行删除操作的一端为队头。
9 0
编写Java程序,实现字符串统计和处理
编写Java程序,实现字符串统计和处理
53 0
编写Java程序,利用List实现报数游戏的实现思路
编写Java程序,利用List实现报数游戏的实现思路
121 0
编写Java程序,使用Set实现不重复添加用户
编写Java程序,使用Set实现不重复添加用户
128 0
+关注
程序员大阳
计算机技术哪家强,中国山东找大阳
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Jpom一款低侵入式Java运维、监控软件
立即下载
Web应用系统性能优化
立即下载
Serverless 开发实战--十分钟上线一个 Web 应用
立即下载