zoukankan      html  css  js  c++  java
  • litemall源码阅读4.03 litemall-admin-api的日志

    首先是每个control都有的:

    private final Log logger = LogFactory.getLog(AdminAdController.class);

    这个日志应该是控制台日志。

    我详细阅读了这篇文章

    根据文章的描述,本项目在litemall-core的pom.xml中引入了slf4j-log4j12。所以应该使用的是log4j日志。

    同时在application.yml中有日志的配置信息和日志级别。

    我们在响应/login的代码中加入:

    logger.info("测试日志:" + username + ":" + password);

    之后debug启动,或者使用mvn clean build构建模块,则控制台相应输出:

     在这里并没有找到配置日志文件的部分。这个日志应该仅仅用做控制台打印的。

    而这个项目有另一个将日志写入数据库的类:

    private LogHelper logHelper;

    我们把关注点放在登录成功后的

     进入函数,在该函数内部调用了LogAdmin

    public void logAdmin(Integer type, String action, Boolean succeed, String result, String comment) {

    LitemallLog log = new LitemallLog();  //自动生成的domain类对象

    Subject currentUser = SecurityUtils.getSubject();
    if (currentUser != null) {
    LitemallAdmin admin = (LitemallAdmin) currentUser.getPrincipal();
    if (admin != null) {
    log.setAdmin(admin.getUsername());
    } else {
    log.setAdmin("匿名用户");
    }
    } else {
    log.setAdmin("匿名用户");
    }
       //RequestContextHolder为获取当前request请求上下文的容器。
    HttpServletRequest request =
    ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();  
    if (request != null) {
    log.setIp(IpUtil.getIpAddr(request));
    }

    log.setType(type);
    log.setAction(action);
    log.setStatus(succeed);
    log.setResult(result);
    log.setComment(comment);
    logService.add(log);  //service对象。
    }


    首先是LitemallLog 类的对象log,这个对象以及mybatis映射文件mapper.xml和mapper.java文件都是利用mybatis-generator自动生成的。

    其中的的service对象logService则包含了LitemallLogMapper对象。之后再logService内部调用

     将日志插入到了数据库中。

  • 相关阅读:
    2011年9月11日的最后几分钟开始学习Zend freamework
    PHP常用的调试技术 一周的时间正在整理
    二叉树最近共同祖先问题
    最近一段时间的思考
    字符编码笔记:ASCII,Unicode和UTF8
    node简介
    如何影响别人
    HTTP协议状态码详解(HTTP Status Code)
    jQuery常见的50种用法
    php上传多张图片
  • 原文地址:https://www.cnblogs.com/xiaoBay/p/14116174.html
Copyright © 2011-2022 走看看