面试题答案
一键面试Java中常见的日志级别
- TRACE:最详细的日志级别,用于记录程序执行的每一步细节,通常仅在开发和调试阶段使用。
- DEBUG:主要用于开发过程中调试信息的记录,帮助开发人员理解程序的执行流程,排查问题。
- INFO:用于记录重要的运行时信息,比如系统启动、关闭,或者一些关键业务流程的执行情况,帮助运维和开发人员了解系统的整体运行状态。
- WARN:表示可能存在潜在问题的警告信息,例如配置错误、即将耗尽的资源等,虽然当前系统仍能正常运行,但需要关注并处理。
- ERROR:用于记录程序运行过程中发生的错误,通常表示系统出现了故障,无法正常执行某些功能,需要立即排查和修复。
在log4j框架下实现日志过滤
- 配置log4j.properties文件:
# 设置根日志级别为INFO,意味着只输出INFO及以上级别的日志
log4j.rootLogger=INFO,stdout
# 定义输出到控制台的Appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
- 配置log4j.xml文件:
<configuration>
<root>
<level value="INFO"/>
<appender-ref ref="STDOUT"/>
</root>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n"/>
</layout>
</appender>
</configuration>
在logback框架下实现日志过滤
- 配置logback.xml文件:
<configuration>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4r [%t] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
在上述logback配置中,通过设置<root level="INFO">
,表示根日志级别为INFO,即只会输出INFO及以上级别的日志。同时也可以针对不同的包或类单独设置日志级别,例如:
<configuration>
<logger name="com.example.myapp" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4r [%t] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
上述配置中,com.example.myapp
包下的日志级别设置为DEBUG,而其他部分仍遵循根日志级别的设置为INFO。