Java 日志级别 - 何时使用啥
Posted
技术标签:
【中文标题】Java 日志级别 - 何时使用啥【英文标题】:Java log levels - When to use WhatJava 日志级别 - 何时使用什么 【发布时间】:2014-10-05 00:14:40 【问题描述】:什么时候应该使用低于日志级别?如果有任何例子会很棒。
-
跟踪与调试
警告与错误与致命
警告VS错误VS致命
首先我需要在我的应用程序代码中使用 FATAL 吗?
我从未见过 FATAL 记录到我目前从事的项目中的任何代码。
我已经读过,万一致命程序将结束。如果是这种情况,我想知道我的日志语句将如何执行。
另外,我认为在内存分配的情况下不能使用FATAL,因为JVM会抛出内存异常并退出程序。因此开发人员无法记录任何内容。如果这是正确的,那么我将在哪里使用 FATAL?
对于错误和警告: 在 catch 块中,如果我没有备用逻辑(用于错误条件)执行,我将去记录错误级别的异常,异常将转换为用户特定并显示在屏幕上。
同时,当我们有异常逻辑的备用流/路径时,将使用警告。
用于调试 这将验证抛出异常的内容和位置。什么是导致错误的数据。因此,这可以在代码的复杂逻辑之前和之后使用。
如果我的理解正确,请告诉我
示例:
class myLogLevel
void method1( int empId)
log.trace("method1 starting") ;
try
log.info("befor getting data from DB");
log.debug("executing the value for emp id : " + empId );
//DBConnection and code here
catch (Exception1 e1)
log.warn("record not found. So assigning default value");
// Code logic to assign default value
catch (Exception1 e1)
// Due to DB connection error. Connection nor established
log.error("DB connection not established");
log.trace("method1 ending") ;
【问题讨论】:
对此有何想法? 【参考方案1】:在我过去的经验中,一种比较常见的做法是
始终使用 DEBUG 进行调试。我很少看到人们使用 TRACE。
对于对系统不利但不一定会导致问题的东西(即是否是错误取决于调用上下文),请使用 WARN;例如。你可以编写一个有时返回 NaN 的函数;但 NaN 可能不是调用者的错误,具体取决于您的上下文。
对于在系统某处或调用者输入数据中肯定是错误的内容;肯定需要人工参与(即需要有人从您的生产支持团队中查看),使用错误。例如。您想将一个人的记录写入数据库,但发现主键(名字,姓氏)为 NULL。
对于会导致整个系统关闭或对系统造成严重影响的内容,请使用 FATAL。这意味着人们需要立即查看它。示例包括导致启动失败的问题;内存分配失败;消息处理系统未能初始化消息层;等等。
希望以上内容有所帮助。
【讨论】:
我现在更新了我的问题。我的主要问题是何时使用 FATAL 和 Error 示例。以上是关于Java 日志级别 - 何时使用啥的主要内容,如果未能解决你的问题,请参考以下文章
idea中log4j 的日志级别是info但是output会打印debug的日志,是啥原因
android输出日志信息有啥用,既然我们可以自己设定Log的级别,那输出的级别颜色又有啥参考价值啊?