Fuguo-log

来自ling
跳转至: 导航搜索

模块功能与描述

负责基础模块的日志功能,包含,日志记录(文件,数据库),日志监控,日志实时查看,日志文件管理,浏览,下载等功能,审计日志

  • 菜单路径:log.file.FileReaderMain.ling 日志文件下载,日志查看 本功能菜单功能还没完善
  • 菜单路径:loglog.database.view.lingLogmanager.ling 存放在数据库中的审计日志查询

系统的结构

Base log1.png

表和model设计说明

系统常量

  • VATLogDef
  • PlLogDef

dao设计说明

server设计说明

view设计说明

utils设计说明

  1. LogUtils
    1. public static Log getLog(Class<?> clazz) 获取默认日志类别,和log4j类似,带groupId,relationId,processId,businessId扩展
    2. public static Log getLog(String name)
    3. public static Log getDataBaseLog(Class<?> clazz) 获取存储到base_log表的日志类型,和log4j类似,带groupId,relationId,processId,businessId扩展
    4. public static Log getDataBaseLog(String name)
    5. public static Log getFileLog(Class<?> clazz,FileLogProcess process)
    6. public static Log getFileLog(Class<?> clazz,String path)
    7. public static Log getFileLog(String name,String path)
    8. 获取msg中的日志内容,最大长度为maxLength public static String getMsg(Object msg,int maxLength)
    9. 获取msg中的日志内容 public static String getMsg(Object msg)
  2. LogUtils使用示例 可以参考LogTest中单元测试
    1.  Log log=LogUtils.getLog(LogTest.class);
       log.setGroupId("模块");
       log.setRelationId("业务类型");
       log.setProcessId(System.currentTimeMillis()+"");//一般就是当前时间,用于区分多批日志中日志属于那一批
       log.setBusinessId("业务主键");
       log.debug("1111111111111");
       log.debug(null);
       log.error("1111111111111");
       log.error(new BusinessException("11111"));
  • GroupId"业务类型是我,在FileLogProcess类型中会在根目录下创建以GroupId的文件夹来区分日志"
  • RelationId"一般用于存储这批数据的特征,比如子模块名称或者当查询一批数据并处理,那么这里存储查询条件"

日志的三个切入方式/层面

业务相关代码中写入日志

  • 耦合度高

spring aop切入

  • 耦合度低,但如果一个业务有多个点需要切入,就显得比较麻烦

model层切入

请参考EntityOperation的实现

日志监控模块

审计日志

自动审计日志使用

  • 需要记录新增,修改,删除的entity实现LogInfo toLogString中实现雷士tostring的功能.数据变化会根据前后2条相同businessid的数据进行比较,比较的变化结果是否有意义,由toLogString的详细程度决定
  • 原理:
  1. BusinessLoggerAspect中会记录相应日志到数据库

自定义审计日志步骤

  1. 实现一个类似LoggerAspect的功能
  2. 在此类中使用public static Log getDataBaseLog(Class<?> clazz)public static Log getDataBaseLog(String name)调用基础日志模块
  3. 要审计的model最好实现toString()方法
  4. log.info(model.toString())

日志文件浏览模块

  1. 实现了类似window的文件浏览功能 更多请参考可视化文档管理
  2. 能以特定编码打开文件
  3. 能指定显示文件中指定行数
  4. 是实时日志文件内容监控的临时替代方案
  5. 能收藏常用日志文件夹,便于下次快速打开
  6. 后台日志监控模块还没完成

Base log2.png Base log3.png

后台日志实时监控模块

修改日志

log事务没有隔离问题

  • 事务中设置为execution(* com.deloitte.tms.pl.log.service.LogService.*(..))
  • LogServiceImpl中指定
@Resource(name=LogDao.BEAN_ID)
LogDao logDao;

相关文档

log.properties 日志监控相关日志配置文件

[log4j重定向stdout和stderr到log文件|http://seeallsea.iteye.com/blog/2117458]

log4j aop LoggerAspect

log4j 基础和常用配置

增值税系统日志实施

请参考tms系统日志实施