讲解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);
}
分享到:
相关推荐
标题“Kettle运行日志记录”涉及到的是Pentaho Data Integration(Kettle)工具的日志管理功能。Kettle,也称为Spoon,是一款强大的ETL(Extract, Transform, Load)工具,用于数据集成和数据转换任务。日志记录在...
程序运行日志处理解决方案旨在提供有效管理和分析日志的方法,以确保系统的稳定性和优化问题诊断。以下将详细阐述使用Enterprise Library 2.0进行日志处理的一些核心知识点: 1. **引入依赖库**:在进行日志处理时...
运行部运行日志管理制度是规范运行部各岗位对运行日志进行填写、检查和考核的重要准则,旨在确保记录内容的准确性、一致性,真实反映运行状况,保障生产工作的连续性。制度要求运行日志涵盖主机和辅助设备的运行状态...
标题中的“基于Python开发网络运行日志收集整理系统设计与实现”揭示了这个项目的核心内容,即使用Python编程语言来构建一个系统,该系统的主要功能是收集、整理网络运行过程中的日志数据。网络日志通常包含服务器...
根据提供的文件信息,本文将对“倍福运行日志算法”进行详细解析,重点在于理解其日志记录机制以及如何通过扩展实现更高效、全面的日志管理。 ### 标题与描述解读 #### 标题:“倍福运行日志算法” - **倍福**:...
基于Python开发网络运行日志收集整理系统设计与实现.pdf
【标题】"压缩机运行日志模板共2页.pdf.zip" 涉及的主要知识点是压缩文件管理和压缩机操作记录的规范性。这个文件是一个压缩包,包含一个名为"压缩机运行日志模板共2页.pdf"的文档,很可能是为了帮助用户或工作人员...
运行部运行日志管理制度是规范运行部各岗位工作记录的重要准则,旨在确保日志内容的准确性、一致性,以便真实反映运行状态,保证生产工作的连续性和稳定性。本制度适用于运行部的所有岗位,要求运行人员严格按照规定...
微信3.1.0.72 运行日志HOOK源码分析 微信作为中国乃至全球最流行的即时通讯工具之一,其内部的运行机制一直是开发者和技术爱好者关注的焦点。本篇将深入探讨“微信3.1.0.72运行日志HOOK源码”这一主题,了解如何...
本文将详细讲解如何通过调试运行日志程序来输出调试信息,以及如何利用类CLog实现这一功能。 首先,让我们理解什么是调试信息。在软件开发中,调试信息是用于帮助开发者理解代码执行过程的详细数据。这些信息通常...
然而,传统的手工运行日志管理模式存在许多缺陷,如记录工作日志、发送通知、分配任务等,都是手工操作的,这样不仅易于丢失,查找烦琐,并且管理麻烦。 二、ASP-NET技术的应用 ASP-NET是一种基于Web的开发技术,...
qt 实现日志打印功能,通过调用QsLog2,实现记录日志功能,代码下载调试,代码实现很清楚,功能完整,可以实现强大功能,打印日志。 qt 实现日志打印功能,通过调用QsLog2,实现记录日志功能,代码下载调试,代码...
EasyTcpServer-CELLLog管理运行日志
### Linux下实时查看Tomcat运行日志的方法及Tail命令详解 #### 核心知识点概览 1. **切换目录至Tomcat日志所在路径** 2. **使用`tail -f`命令实现实时查看日志** 3. **深入理解`tail`命令及其参数** #### 1. 切换...
Zookeeper中运行日志 zookeeper.out 文件的输出路径默认为启动脚本的当前路径,导致Zookeeper集群启动失败时总是不记得输出日志在哪儿,不便于查找错误原因,因此很有必要设置固定路径来保存运行日志 在本次实验之前...
lammps中进行纳米压痕模拟的运行日志
在Docker容器中运行Flume时,可能会遇到一个常见的问题,即Flume在启动后不会输出任何运行日志。这可能会导致调试和监控困难。本文将深入探讨这个问题的原因以及如何解决。 首先,让我们理解Flume的基本配置。Flume...
基于Spring对远程Spark服务二次封装,实现SparkSql执行、动态资源分配以及获取运行日志等。目前仅支持Yarn-Per-Job模式,即一个sql执行一个yarn容器。
设备控制流程编辑框架。 1.运行、复位流程工具编辑;...3.含报警、运行日志打印保存本地文件; 4.多线程任务,异步执行工具; 5.多轴操作工具; 6.电机,IO映射;xml文件可配置。 开发语言:C# + Halcon