[color=red][size=large]欢迎大家补充相关日志级别的输出规范与远景,谢谢。[/size][/color]
一个项目的开展需要各种各样的规范,特别是对于刚入门的开发人员,更是需要许多规范对其的开发工作进行指导与保证.
[size=large]
[B]最近就遇到了有关日志输出级别的规范的问题,开发人员需要明确什么时候使用哪个级别进行日志输出[/B]
目前关于debug与error的使用倒是非常分明,一个调试时没有出错用,一个是出错的时候使用.但是,什么消息是放在debug中进行输出,什么样的信息可能需要使用info.而什么样的错误信息使用error,而什么样的错误信息使用warn.
现在在此整理一部分:
[b]ERROR[/b]
在拦截异常而不直接将该异常往外抛出时(不直接往外指对异常进行了改造或封装),需要使用error输出异常信息.而如果直接将异常往外抛,则不要使用error进行异常输出,由外部/调用方负责处理.
[b]WARN[/b]
在运行过程时,如果遇到一些异常的数据或行为,而该异常或行为不直接影响系统的运行(直接影响:指该数据或行为出错,则应用无法正确运行,非直接影响:指数据或行为虽然有误,但应用可正确运行,不会由此产生错误数据),那么使用WARN进行错误提示.
范例场景:
非关键配置数据:在系统有默认配置的情况下导入新的配置时出错,则系统将使用旧的配置,此时使用warn进行错误提示,但允许应用继续运行.
logger.warn("非找到指定配置文件xxxx,将使用默认配置");
[b]INFO[/b]
INFO是提示信息的意思,对于有部分日志,允许应用系统运行和维护人员在系统运行时进行查看的,可使用此级别进行输出.相对于DEBUG,INFO日志更针对的是上线后看到应用系统后台的人员,而不是开发人员所想看的程序运行时的细粗度信息
范例场景:
logger.info("应用系统开始输入数据");
logger.info("应用系统正在进行初始化");
[b]DEBUG[/b]
DEBUG主要针对开发人员,比如检查输入参数值,根据系统底层运行状态.
范例场景:
logger.debug("输入参数,部门ID:{}", deptId);
logger.debug("删除指定用户角色配置信息,userId:{}, userRoleId:{}", new Object[]{userId, userRoleId});
[/size]
一个项目的开展需要各种各样的规范,特别是对于刚入门的开发人员,更是需要许多规范对其的开发工作进行指导与保证.
[size=large]
[B]最近就遇到了有关日志输出级别的规范的问题,开发人员需要明确什么时候使用哪个级别进行日志输出[/B]
目前关于debug与error的使用倒是非常分明,一个调试时没有出错用,一个是出错的时候使用.但是,什么消息是放在debug中进行输出,什么样的信息可能需要使用info.而什么样的错误信息使用error,而什么样的错误信息使用warn.
现在在此整理一部分:
[b]ERROR[/b]
在拦截异常而不直接将该异常往外抛出时(不直接往外指对异常进行了改造或封装),需要使用error输出异常信息.而如果直接将异常往外抛,则不要使用error进行异常输出,由外部/调用方负责处理.
[b]WARN[/b]
在运行过程时,如果遇到一些异常的数据或行为,而该异常或行为不直接影响系统的运行(直接影响:指该数据或行为出错,则应用无法正确运行,非直接影响:指数据或行为虽然有误,但应用可正确运行,不会由此产生错误数据),那么使用WARN进行错误提示.
范例场景:
非关键配置数据:在系统有默认配置的情况下导入新的配置时出错,则系统将使用旧的配置,此时使用warn进行错误提示,但允许应用继续运行.
logger.warn("非找到指定配置文件xxxx,将使用默认配置");
[b]INFO[/b]
INFO是提示信息的意思,对于有部分日志,允许应用系统运行和维护人员在系统运行时进行查看的,可使用此级别进行输出.相对于DEBUG,INFO日志更针对的是上线后看到应用系统后台的人员,而不是开发人员所想看的程序运行时的细粗度信息
范例场景:
logger.info("应用系统开始输入数据");
logger.info("应用系统正在进行初始化");
[b]DEBUG[/b]
DEBUG主要针对开发人员,比如检查输入参数值,根据系统底层运行状态.
范例场景:
logger.debug("输入参数,部门ID:{}", deptId);
logger.debug("删除指定用户角色配置信息,userId:{}, userRoleId:{}", new Object[]{userId, userRoleId});
[/size]