日志debug和info(debuglog)

http://www.itjxue.com  2023-01-28 00:04  来源:未知  点击次数: 

logger.debug()和logger.info()方法各自什么作用,两个什么区别呢?

一个是Debug级别的日志,一个是记录Info级别的日志,两者的日志详细程度不同,相比Info只需记录日常日志,Debug日志用于开发人员Debug使用,所以需记录详细的业务流程

log4j里面的info,debug,error级别有什么区别

你的程序中使用的是debug方式打印的,info的级别比debug低,所以debug级别的日志会打印出来。如果你把info改为warn或者error,console和日志文件中就不会打印程序中记录的日志信息了。

如何写日志?日志级别如何选择?

实际开发中常常遇到很多开发人员不知道如何输出日志,在此总结了阿里的日志规范和项目中的一些经验总结,希望能帮助大家更好的书写日志。

应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J 中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

对trace/debug/info 级别的日志输出,必须使用条件输出形式或者使用占位符的方式。

说明:logger.debug("Processing trade with id: " + id + " symbol: " + symbol);如果日志级别是warn,上述日志不会打印,但是会执行字符串拼接操作,如果symbol 是对象,会执行toString()方法,浪费了系统资源,执行了上述操作,最终日志却没有打印。

避免重复打印日志,浪费磁盘空间,务必在xml 中设置 additivity=false

异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么往上抛。

【推荐】可以使用warn 日志级别来记录用户输入参数错误的情况,避免用户投诉时,无所适从。注意日志输出的级别,error 级别只记录系统逻辑出错、异常等重要的错误信息。如非必要,请不要在此场景打出 error 级别。

【推荐】谨慎地记录日志。生产环境禁止输出 debug 日志;有选择地输出 info 日志;如果使用 warn 来记录刚上线时的业务行为信息,一定要注意日志输出量的问题,避免把服务器磁盘撑爆,并记得及时删除这些观察日志。

说明:大量地输出无效日志,不利于系统性能提升,也不利于快速定位错误点。记录日志时请

DEBUG级别的日志应该是能帮助开发人员分析定位bug所在的位置。

INFO级别的日志应该是能帮助测试人员判断这是否是一个真正的bug,而不是自己操作失误造成的。

WARN级别称之为“警告”,告警日志,可以选择忽略也可以选择重视。

ERROR级别称之为“错误”,这个含义就更明显了,就是系统出现了错误,需要处理。最为常见的就是捕获异常时所打印的日志,通常需要正确区分异常类型。

应用系统批量日志指批量流程中由应用记录的批量任务相关信息,可供事件处理系统采集分析。

批量日志中至少应包含但不限于如下内容:

批量日志应记录在系统的单独文件中。批量日志在每日/次批量开始时新建,不宜采用追加方式,以方便快速检索查询。批量日志文件命名格式原则上各应用系统应保持一致,应包含系统标识、执行日期、批次等唯一性信息,避免日志文件相互覆盖。

应用系统的批量日志信息应具有标准的结构,每条日志信息应使用结构化描述:

三星日志输出级别

三星日志输出级别是Debug、Info、Warn、Error、Fatal。

软件中总免不了要使用诸如Log4net,Log4j和Tracer等程序来写日志,不管用什么,这些程序大多是大同小异的。

一般都提供了这样5个日志级别:Debug、Info、Warn、Error、Fatal。三星的日记输出级别这五种都要考虑到。

日志级别和耗时有什么关系

日志级别和耗时是正相关关系。根据查询相关资料信息,日志级别有5个级别分别是Debug、info、warn、error、fatal共5个级别,级别依次升高,debug级别是最低级别在实际运行中不输出,不耗时。在fatal级别是最高级别,这种日志是无法修复的,最耗时,也就是级别越低,耗时越少。级别越高,耗时越多,日志级别和耗时是正相关关系。

slf4j怎么屏蔽info和debug级别的日志

SLF4J是一套简单的日志外观模式的Java API,帮助在项目部署时对接各种日志实现。

LogBack在运行时使用JMX帮助修改日志配置,在生产状态下无需重启应用程序。

SLF4J

SLF4J是简单的日志外观模式框架,抽象了各种日志框架例如Logback、Log4j、Commons-logging和JDK自带的logging实现接口。它使得用户可以在部署时使用自己想要的日志框架。SLF4J是轻量级的,在性能方面几乎是零消耗的。

SLF4J没有替代任何日志框架,它仅仅是标准日志框架的外观模式。如果在类路径下除了SLF4J再没有任何日志框架,那么默认状态是在控制台输出日志。

Logback

Logback是Log4j的改进版本,而且原生支持SLF4J(因为是同一作者开发的),因此从其它日志框架如Log4j或JDK的logging迁移到Logback是完全可行的。

由于Logback原生支持SLF4J,因此Logback+SLF4J的组合是日志框架的最佳选择,比SLF4J+其它日志框架的组合要快一些。而且Logback的配置可以是XML或Groovy代码。

注意一个重要的特性,Logback通过JMX修改日志配置(比如日志级别从Debug调整到INFO),可以从JMX控制台直接操作,无需重启应用程序。

此外,Logback的异常堆栈跟踪的信息,有助于调试。

[java] view plain copy print?

java.lang.NullPointerException: null

at com.fimt.poc.LoggingSample.init(LoggingSample.java:16) [classes/:na]

at com.fimt.poc.LoggingSample.main(LoggingSample.java:23) [fimt-logging-poc-1.0.jar/:1.0]

SLF4J API用法

1. 从org.slf4j包导入Logger和LoggerFactory

[java] view plain copy print?

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

2. 声明日志类

[java] view plain copy print?

private final Logger logger = LoggerFactory.getLogger(LoggingSample.class);

3. 使用debug、warn、info、error方法并跟踪适合的参数。

所有的方法默认都使用字符串作为输入。

[java] view plain copy print?

logger.info("This is sample info statement");

SLF4J结合Logback

在pom.xml包含下面的依赖:它会自动包含所有的依赖包logback-core、slf4j-api……

[html] view plain copy print?

dependency

groupIdch.qos.logback/groupId

artifactIdlogback-classic/artifactId

version1.0.7/version

/dependency

SLF4J能用于现有的日志框架如Log4j、Commons-logging、java.util.logging(JUL)。

SLF4J结合Log4j

在pom.xml包含下面的依赖

[html] view plain copy print?

dependency

groupIdorg.slf4j/groupId

artifactIdslf4j-log4j12/artifactId

version1.7.2/version

/dependency

SLF4J结合JUL (java.util.logging)

在pom.xml包含下面的依赖

[html] view plain copy print?

dependency

groupIdorg.slf4j/groupId

artifactIdslf4j-jdk14/artifactId

version1.7.2/version

/dependency

(责任编辑:IT教学网)

更多

推荐Frontpage教程文章