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内部调用

 

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

 

posted @ 2020-12-10 17:12  961493347  阅读(232)  评论(0编辑  收藏  举报