java日志级别verbose_日志记录-如何在J中使用日志级别

日志记录-如何在J中使用日志级别

我正在开发一个需要使用记录器功能的应用程序。 我已经了解了不同级别的记录器,它们是:

严重(最高)

警告

信息

配置

精细

罚款

最好的

我无法理解每个日志记录级别的用法。

有人可以给我一个很好的例子,显示所有日志记录级别及其用法吗?

vinod asked 2020-07-22T05:36:24Z

9个解决方案

56 votes

通常,您不需要所有这些级别,SEVERE,WARNING,INFO,FINE可能就足够了。 我们正在使用Log4J(不是直接java.util.logging)和以下级别(其名称可能与其他日志记录框架不同):

错误:任何严重错误或异常。 我们的记录器会针对服务器上的每条此类消息自动发送电子邮件(使用情况:logger.debug("message");)

警告:任何可能警告我们潜在问题的消息,例如 当用户尝试使用错误的凭据登录时-如果该攻击频繁发生或在短时间内发生,则可能表示攻击(使用情况:logger.debug("message");)

INFO:在查看日志文件时我们想要了解的任何信息,例如 当计划的作业开始/结束时(用法:logger.debug("message");)

调试:顾名思义,调试我们很少打开的消息。 (用法:logger.debug("message");)

这样做的好处是,如果将日志级别设置为WARN,则信息和调试消息几乎不会影响性能。 如果您需要从生产系统中获取其他信息,则只需在短时间内将级别降低到INFO或DEBUG(因为您将获得更多的日志条目,这会使您的日志文件更大且更难读取)。 调整日志级别等通常可以在运行时完成(我们的JBoss实例每分钟左右检查一次该配置的更改)。

Thomas answered 2020-07-22T05:36:57Z

19 votes

摘录来自以下精彩文章。

错误-发生了非常严重的错误,那一定是 立即展开调查。 没有系统可以容忍对此登录的项目 水平。 示例:NPE,数据库不可用,关键任务用例 无法继续。

警告–该过程可能会继续,但要格外小心。 其实我一直想在这里有两个层次:一个明显 解决方法存在的问题(例如:“当前数据 不可用,使用缓存的值”),第二个(命名为:ATTENTION)用于 潜在的问题和建议。 示例:“应用程序在 开发模式”或“管理控制台未使用 密码”。 该应用程序可以容忍警告消息,但是它们 应该总是被证明和检查。

信息–重要的业务流程已完成。 在理想的世界里 管理员或高级用户应该能够理解INFO 消息并迅速找出应用程序在做什么。 对于 例如,如果某个应用程序只涉及机票预订, 每张机票只能有一个INFO声明,上面写着“ [谁]预订了 从[哪里]到[哪里]的票”。 INFO消息的其他定义: 显着改变应用程序状态的每个操作 (数据库更新,外部系统请求)。

调试-开发人员资料。 我稍后再讨论 信息值得记录。

跟踪–非常详细的信息,仅用于开发。 您 部署后可能会将跟踪消息保留一小段时间 在生产环境中,但将这些日志语句视为 临时的,最终应该或可能会关闭。 的 调试和跟踪之间的区别是最困难的,但是如果您 放置日志记录语句并将其删除后,该功能已 开发和测试,它可能应该在TRACE级别。

PS:将TRACE阅读为VERBOSE

Ragunath Jawahar answered 2020-07-22T05:37:46Z

8 votes

java.util.logging.Level文档很好地定义了何时使用日志级别以及该日志级别的目标受众。

与CONFIG的大多数混淆在于跟踪方法。 它应该在类级别的文档中,但是FINER字段提供了很好的概述:

FINE是提供跟踪信息的消息级别。

FINE,FINER和FINEST全部旨在进行相对详细的跟踪。 这三个级别的确切含义在子系统之间会有所不同,但通常,应使用FINEST表示最多的详细输出,FINER表示较少的详细输出,而FINE表示最小量(也是最重要的)消息。

通常,对于那些对特定子系统没有特殊兴趣的开发人员,应该使用FINE级别获取广泛感兴趣的信息。

FINE消息可能包括一些小错误(可恢复)。 指示潜在性能问题的问题也值得记录为FINE。

需要了解的重要一点是,级别文档中未提及的是呼叫站点跟踪信息记录在CONFIG中。如果将消息记录为CONFIG,则可以配置记录系统以查看带或不带流控制的日志输出 日志消息周围的日志记录。 因此,仅当不需要流控制日志记录作为上下文来理解此日志跟踪消息时,才使用FINER。

FINER表示相当详细的跟踪消息。 默认情况下,在此级别跟踪用于输入,返回或引发异常的日志记录调用。

通常,大多数CONFIG的使用应留给进入,退出和投掷的调用。 打开详细日志记录后,大部分时间将保留FINER用于呼叫站点跟踪。

FINEST表示高度详细的跟踪消息。

当您要编写的跟踪日志消息需要有关程序控制流的上下文信息时,请使用CONFIG。 您还应该使用FINEST来跟踪产生大量输出数据的消息。

CONFIG消息旨在提供各种静态配置信息,以帮助调试可能与特定配置关联的问题。 例如,CONFIG消息可能包括CPU类型,图形深度,GUI外观等。

CONFIG非常适合协助系统管理员完成上述各项。

通常,INFO消息将被写入控制台或等效控制台。 因此,INFO级别仅应用于对最终用户和系统管理员有意义的合理重要的消息。

例如跟踪程序的启动和关闭。

通常,“警告”消息应描述最终用户或系统管理员感兴趣的事件,或指示潜在问题的事件。

一个示例用例可能是从AutoCloseable.close实现抛出的异常。

通常,SEVERE消息应描述非常重要的事件,这些事件将阻止正常的程序执行。 它们对于最终用户和系统管理员应该是合理理解的。

例如,如果您的程序中有事务,如果其中任何一个步骤失败,则所有步骤都无效,那么SEVERE将适合用作日志级别。

jmehrens answered 2020-07-22T05:39:29Z

4 votes

这是有关Java登录的很好的介绍:[http://www.javapractices.com/topic/TopicAction.do?Id=143]

Java自1.4.2版本起就带有日志记录API:[http://download.oracle.com/javase/1.4.2/docs/guide/util/logging/overview.html]

您还可以使用其他日志记录框架,例如最受欢迎的Apache Log4j:[http://logging.apache.org/log4j]

我建议您使用日志记录抽象框架,该框架允许您更改日志记录框架而无需重构代码。 因此,您可以先使用Jul(Java Util Logging),然后切换到Log4j,而无需更改代码。 最受欢迎的伐木外观是slf4j:[http://www.slf4j.org/]

问候,

Mehrez Marouani answered 2020-07-22T05:40:09Z

3 votes

这些是水平。 您将考虑所记录消息的严重性,并使用适当的级别。

基本上是水印; 级别越高,您越有可能希望将信息保留在日志条目中。 FINEST用于不太重要的消息,因此您可以将其用于通常不关心但可能希望在某些罕见情况下看到的消息。

Joseph Ottinger answered 2020-07-22T05:40:34Z

1 votes

级别的使用确实可以提高您的能力。 您需要确定应用程序中的严重问题,警告和信息。 您需要拆分日志记录,以便您的用户可以轻松地设置日志记录级别,该级别不会杀死具有过多IO的系统,但会报告严重错误,因此您可以对其进行修复。

alpian answered 2020-07-22T05:40:54Z

0 votes

不同的日志级别对工具很有帮助,这些工具可以分析您的日志文件。 通常,日志文件包含很多信息。 为避免信息过载(或此处为stackoverflow ^^),您可以使用日志级别对信息进行分组。

reporter answered 2020-07-22T05:41:15Z

0 votes

日志记录具有不同的级别,例如:

跟踪–细粒度的调试消息,通常捕获通过应用程序的流。调试-在此下应记录一个常规调试事件。

ALL –可以记录所有事件。

INFO-信息性目的,信息以简明英语撰写。

警告-可能导致错误的事件。

错误-应用程序中的错误,可能可以恢复。

使用调试级别捕获的日志是对开发人员和其他人员有用的信息,因此可以广泛捕获。 如果您的代码没有异常或错误,则可以使用DEBUG级别的日志记录,否则应谨慎选择选项。

surendrapanday answered 2020-07-22T05:42:01Z

-4 votes

本技巧说明了如何在任何Java应用程序中使用Logger。 记录器需要配置格式化程序和处理程序。 存在许多类型的处理程序和格式化程序。 在此示例中,FileHandler用于将所有日志消息存储在日志文件中。 并且简单格式化程序用于以易于阅读的格式格式化日志消息。

package MyProject;

import java.io.IOException;

import java.util.logging.FileHandler;

import java.util.logging.Level;

import java.util.logging.Logger;

import java.util.logging.SimpleFormatter;

public class MyLogger {

public static void main(String[] args) {

Logger logger = Logger.getLogger("MyLog");

FileHandler fh;

try {

// This block configure the logger with handler and formatter

fh = new FileHandler("c:\\MyLogFile.log", true);

logger.addHandler(fh);

logger.setLevel(Level.ALL);

SimpleFormatter formatter = new SimpleFormatter();

fh.setFormatter(formatter);

// the following statement is used to log any messages

logger.log(Level.WARNING,"My first log");

} catch (SecurityException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

您可以在此处找到更多示例[https://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html]

Noor Khan answered 2020-07-22T05:42:26Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. npm verb cli D:\JavaTools\node-v16.16.0-win-x64\node.exe D:\JavaTools\node-v16.16.0-win-x64\node_global\node_modules\npm\bin\npm-cli.js npm info using npm@9.8.0 npm info using node@v16.16.0 npm verb title npm install npm verb argv "install" "--loglevel" "verbose" npm verb logfile logs-max:10 dir:D:\JavaTools\node-v16.16.0-win-x64\node_cache\_logs\2023-07-16T03_12_06_268Z- npm verb logfile D:\JavaTools\node-v16.16.0-win-x64\node_cache\_logs\2023-07-16T03_12_06_268Z-debug-0.log npm verb shrinkwrap failed to load node_modules/.package-lock.json out of date, updated: node_modules npm verb stack Error: EBUSY: resource busy or locked, rename 'D:\vue-code\PISPlanning3\node_modules\imagemin-jpegtran\node_modules\jpegtran-bin' -> 'D:\vue-code\PISPlanning3\node_modules\.imagemin-jpegtran-PSMG5ifG\node_modules\jpegtran-bin' npm verb cwd D:\vue-code\PISPlanning3 npm verb Windows_NT 10.0.19045 npm verb node v16.16.0 npm verb npm v9.8.0 npm ERR! code EBUSY npm ERR! syscall rename npm ERR! path D:\vue-code\PISPlanning3\node_modules\imagemin-jpegtran\node_modules\jpegtran-bin npm ERR! dest D:\vue-code\PISPlanning3\node_modules\.imagemin-jpegtran-PSMG5ifG\node_modules\jpegtran-bin npm ERR! errno -4082 npm ERR! EBUSY: resource busy or locked, rename 'D:\vue-code\PISPlanning3\node_modules\imagemin-jpegtran\node_modules\jpegtran-bin' -> 'D:\vue-code\PISPlanning3\node_modules\.imagemin-jpegtran-PSMG5ifG\node_modules\jpegtran-bin' npm verb exit -4082 npm verb unfinished npm timer reify 1689477126779 npm verb unfinished npm timer reify:retireShallow 1689477127193 npm verb code -4082 npm ERR! A complete log of this run can be found in: D:\JavaTools\node-v16.16.0-win-x64\node_cache\_logs\2023-07-16T03_12_06_268Z-debug-0.log
07-17

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值