目录
一、基础知识
在Java中,日志记录是一个重要的组成部分,它帮助开发者理解和调试程序的运行情况。不同的日志级别允许开发者根据需要输出不同详细程度的日志信息。Log4j是Java中广泛使用的日志框架之一,它定义了一系列的日志级别,以便于控制日志输出。
-
OFF: 这是最高级别,用于关闭所有日志记录。如果配置为OFF,则日志记录器将忽略所有日志消息。
-
FATAL: 表示非常严重的错误事件,这些错误会导致应用程序终止执行。FATAL是用于记录极端情况的日志,比如系统崩溃或者关键组件无法加载等。
-
ERROR: 表示错误事件,但应用程序可能仍然能够继续运行。ERROR级别用来记录异常或者其他重要的错误事件,这些错误需要被记录和监控,但不一定需要立即处理。
-
WARN: 表示有潜在的有害状况。WARN级别用于提醒开发者注意那些可能会导致问题的情况,但并不一定立即影响系统的正常运行。
-
INFO: 表示突出显示应用程序的正常运行过程中的事件。INFO级别可以用来记录程序运行的关键节点,帮助理解程序的运行流程,但不应该过于详细。
-
DEBUG: 表示细粒度的信息事件,主要用于开发过程中。DEBUG级别用于记录程序中的详细操作,比如函数调用、循环迭代等,主要用于调试目的。
-
TRACE: 表示非常详细的跟踪信息,一般在DEBUG级别之下。TRACE级别用于记录系统的详细运行轨迹,通常用于问题排查时需要的非常详细的日志记录。
-
ALL: 这是最低级别,用于打开所有日志记录。配置为ALL级别会记录所有级别的日志信息。
通常情况下,生产环境中会将日志级别设置为INFO或WARN,以记录关键信息和潜在错误,而不会记录过多的调试信息,以免产生大量的日志文件。开发和测试环境中,可能会使用DEBUG或TRACE级别,以获取更多的程序运行信息来帮助调试。
在配置日志级别时,只有高于或等于所设置级别的日志消息才会被记录。例如,如果设置级别为WARN,那么ERROR和FATAL级别的消息会被记录,而INFO、DEBUG和TRACE级别的消息则不会被记录。
Log4j建议通常只使用ERROR、WARN、INFO、DEBUG这四个级别,因为这四个级别已经足够涵盖大部分需要记录的信息。
二、系统各环境日志级别配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logback</contextName>
<property name="log.path" value="/app/logs/niubi/tiancai"/>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--按天生成日志-->
<appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
${log.path}/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}-%i.log
</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!--每个文件30MB-->
<maxFileSize>30MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<springProfile name="dev,test">
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</root>
</springProfile>
<springProfile name="prod">
<root level="ERROR">
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</root>
</springProfile>
</configuration>
三、只打印某一个级别的配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<logger name="com.xx.xxx" level="debug"/>
<logger name="org.mybatis" level="info"/>
<logger name="org.apache.ibatis" level="info"/>
<logger name="java.sql" level="info"/>
<logger name="org.springframework" level="info"/>
<logger name="springfox.documentation" level="info"/>
<logger name="org.apache.zookeeper" level="info"/>
<logger name="org.apache.http.wire" level="warn"/>
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
</configuration>
有用请点赞,养成良好习惯!
疑问、交流、鼓励请留言!