MST

星途 面试题库

面试题:Java中常见日志级别及日志过滤实现方式

请列举Java中常见的日志级别,并简述如何在实际项目中基于日志级别实现日志过滤,例如在log4j或logback框架下该如何操作。
33.2万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

Java中常见的日志级别

  1. TRACE:最详细的日志级别,用于记录程序执行的每一步细节,通常仅在开发和调试阶段使用。
  2. DEBUG:主要用于开发过程中调试信息的记录,帮助开发人员理解程序的执行流程,排查问题。
  3. INFO:用于记录重要的运行时信息,比如系统启动、关闭,或者一些关键业务流程的执行情况,帮助运维和开发人员了解系统的整体运行状态。
  4. WARN:表示可能存在潜在问题的警告信息,例如配置错误、即将耗尽的资源等,虽然当前系统仍能正常运行,但需要关注并处理。
  5. ERROR:用于记录程序运行过程中发生的错误,通常表示系统出现了故障,无法正常执行某些功能,需要立即排查和修复。

在log4j框架下实现日志过滤

  1. 配置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
  1. 配置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框架下实现日志过滤

  1. 配置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。