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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9天前
|
SQL Java
20:基于EL与JSTL的产品管理页-Java Web
20:基于EL与JSTL的产品管理页-Java Web
21 5
|
3天前
|
Web App开发 关系型数据库 MySQL
基于web的羽毛球馆管理系统的设计与实现
基于web的羽毛球馆管理系统的设计与实现
10 2
|
3天前
|
Java 关系型数据库 MySQL
基于JSP的教师管理系统
基于JSP的教师管理系统
7 1
|
3天前
|
前端开发 JavaScript Java
Java与Web开发的结合:JSP与Servlet
Java与Web开发的结合:JSP与Servlet
8 0
|
4天前
|
Java
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
12 0
|
9天前
|
设计模式 前端开发 Java
19:Web开发模式与MVC设计模式-Java Web
19:Web开发模式与MVC设计模式-Java Web
19 4
|
9天前
|
设计模式 存储 前端开发
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
24 4
|
4天前
|
C++
JNI Log 日志输出
JNI Log 日志输出
12 1
|
4天前
|
存储 运维 大数据
聊聊日志硬扫描,阿里 Log Scan 的设计与实践
泛日志(Log/Trace/Metric)是大数据的重要组成,伴随着每一年业务峰值的新脉冲,日志数据量在快速增长。同时,业务数字化运营、软件可观测性等浪潮又在对日志的存储、计算提出更高的要求。
|
10天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。