`
稻-草
  • 浏览: 61940 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

运行日志

阅读更多

讲解Log4j等日志工具应用的文章很多, 但是如何打好日志,什么时候打什么日志确实更高深的学问。



好的运行日志可以有效帮助问题定位,提高工作效率。


典型的不好的日志

             日志泛滥:日志太多导致有用信息淹没其中

             日志过少:不能帮助问题的定位,典型的就是异常路径没有记录日志
            
             缺少信息:虽然记录了日志,描述含糊或没有加上必要的定位信息;如"Can't add role", 没有记录失败原因。

             级别错误:这个问题没有上面几个严重,但是会造成工作效率下降。

 

日志一般分为5 个级别如下表: 

级别名称 级别定义
debug  ( 调试) 函数的入口,记录函数调用关系。

info      (信息)

业务正常处理流程,记录业务流程。
warn    (警告) 非期望的分支,但不会造成大的影响。
error    (错误) 非期望的分支,会导致系统部分功能的不能工作。
fatal     (致命) 非期望的分支,会导致整个系统功能异常。

 

 

     /** 
     * @param role 新增角色 
     * @return 新增角色的ID,null表示新增不成功 
     * @throws RoleCountLimitException  角色个数达规格异常 
     * @throws RoleNameConflictException  角色名称和已存在的角色冲突异常 
     * @throws RoleAclException 自定义角色不能有角色管理权限异常 
     */ 
    public Integer addRole(Role role) 
    throws RoleCountLimitException, RoleNameConflictException, RoleAclException 
    {        
        
        log.debug("Enter function addRole"); 
        if (role == null || 
            role.isSystemDefault() || 
            role.getName() == null || 
            role.getName().length() == 0) 
        { 
            log.warn("Can't add role for error input"); 
            return null; 
        } 
        
        // 角色个数达最大值 
        if (roleDao.getRoleCount() >= MAX_ROLE_COUNT) 
        { 
            log.info("Can't add role for Role count reach it's limit"); 
            throw new RoleCountLimitException(); 
        } 
        
        RoleResource resource = resourceDAO.getRoleResource(role.getName()); 
        
        if (resource != null) 
        { 
            log.info("Can't add role for RoleName conflict with system defalut role"); 
            throw new RoleNameConflictException(); 
        } 
        
        Role existRole = roleDao.getRole(role.getName()); 
        if (existRole != null) 
        { 
            log.info("Can't add role for RoleName conflict with other role"); 
            throw new RoleNameConflictException(); 
        } 
        
        // 自定义角色不能有角色管理权限 
        if ((role.getAcl() & Role.ROLE_MANAGE) !=0) 
        { 
            log.warn("Can't add role with ROLE_MANAGE in acl"); 
            throw new RoleAclException(); 
        } 
        
        return roleDao.save(role); 
    } 
 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics