一、yml文件配置
--0726--
首先需要在.yml文件中加入以下配置
#Mybatis输出sql日志
mybatis-plus:
mapper-locations: classpath*:**/*.xml
global-config:
# 关闭MP3.0自带的banner
banner: false
db-config:
#主键类型
id-type: ASSIGN_ID
# 默认数据库表下划线命名
table-underline: true
configuration:
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 返回类型为Map,显示null对应的字段
call-setters-on-nulls: true
#日志配置
logging:
config: src/main/resources/logback.xml
这里面最主要的是这一段代码
logging:
config: src/main/resources/logback.xml
作用是定位到logback文件的位置,路径正确才能读取到logback文件
路径前不加上 ”/“ 则表示相对路径,如 resources/logback.xml
路径前加上 ”/“ 则表示绝对路径 如 /project/xxx/xxx/logback.xml ,表示项目所在的磁盘下,project文件下....以此类推
linux系统环境下 路径前加上”/“则表示根目录下的路径,不加则表示项目所在目录下。
二、logback配置
<property name="LOG_HOME" value="logs" />
表示一个名为LOG_HOME的变量,其值为logs
<property name="LOG_NAME" value="data-info" />
<property name="LOG_BATCH" value="data-batch" />
<property name="LOG_STREAM" value="data-stream" />
这个是同样的道理,表示变量以及值,后续配置中直接用变量名,就会读到里面的值。
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>-->
<pattern>%blue(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %magenta([%thread]) %cyan(%logger{36} - [%M:%L]) - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
这个配置表示控制台输出日志的配置:
appender标签:
name="CONSOLE"
:指定这个appender的名称为CONSOLE
,可以在其他地方引用。class="ch.qos.logback.core.ConsoleAppender"
:指定使用Logback的控制台输出appender。
encoder标签:
%blue
、%highlight
、%magenta
、%cyan
:这些是Logback的颜色设置和高亮功能,用于使日志输出更加可视化。%d{yyyy-MM-dd HH:mm:ss.SSS}
:输出日志的日期时间,精确到毫秒。%-5level
:输出日志级别(左对齐,最多占5个字符)。[%thread]
:输出线程名。%logger{36}
:输出logger的名称,最多36个字符。[%M:%L]
:输出方法名和行号。%msg
:输出日志消息。%n
:换行符。
<!-- 统一的日志文件 -->
<appender name="FILE_DATA" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<!--最多保留多少文件-->
<maxHistory>500</maxHistory>
</rollingPolicy>
</appender>
${LOG_HOME}/${LOG_NAME}/${LOG_NAME}.log
:指定日志文件的路径和名称。${LOG_HOME}
、${LOG_NAME}
是变量,用到的是刚刚property中设置的变量。<fileNamePattern>
:指定滚动后日志文件的命名模式。%d{yyyy-MM-dd}
用于表示日期,%i
用于表示索引,以确保文件名的唯一性。<maxFileSize>
:指定单个日志文件的最大大小为500MB,超过这个大小后将会滚动切割日志文件。<maxHistory>
:指定保留的历史日志文件的最大数量为500个。
这里appender可以设置多个,用于控制不同的代码运行设置输出至不同的路径下。
<!-- 设置 历史数据 包 logger -->
<logger name="com.example.batchData" level="debug" additivity="false">
<appender-ref ref="FILE_BATCH" />
</logger>
<!-- 设置 实时数据 包 logger -->
<logger name="com.example.streamData" level="debug" additivity="false">
<appender-ref ref="FILE_STREAM" />
</logger>
name="com.example.batchData"
:指定了记录哪个包下的运行日志,这里是针对com.hdx.batchData
包的日志记录配置。level="debug"
additivity="false":禁用了附加性,确保日志消息不会同时传播到父级logger,仅通过指定的appender处理。
上面设置的appender需要与这里对应。
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_DATA" />
</root>
<root>
:根logger,是所有logger的根源,通常用于捕获未在其他logger中定义的日志消息。level="info"
:设置根logger的日志级别为INFO,这意味着只会记录INFO级别及以上的日志消息。
<appender-ref>
:指定了根logger的日志输出目标,这里有两个appender:
ref="CONSOLE"
:将日志消息输出到控制台。ref="FILE_DATA"
:将日志消息输出到名为FILE_DATA
的appender,这是上文中定义的滚动文件输出的appender。
日志记录级别
trace>debug>info>warn>error>fatal
-
TRACE:提供比DEBUG更详细的信息,用于诊断问题时追踪程序的详细流程。一般情况下,生产环境中不会启用TRACE级别,因为它生成的日志比较冗长。
-
DEBUG:用于输出程序的调试信息,通常包括详细的变量值、运行状态等。在开发和测试阶段常用,但在生产环境中一般需要慎重使用,因为可能会泄露敏感信息或者导致性能问题。
-
INFO:用于输出程序运行时的关键信息,如服务启动信息、重要的状态变化等。INFO级别的日志通常用于标识程序的正常运行情况,对监控应用健康状态很有帮助。
-
WARN:表明潜在的问题,不会影响程序的正常运行,但可能需要引起关注,如潜在的错误条件、不推荐的使用模式等。WARN级别的日志通常用于标识需要注意的情况。
-
ERROR:用于指示发生了错误,但不影响系统继续运行,通常表明当前操作或请求失败。ERROR级别的日志通常是需要及时处理的问题,可能需要开发人员介入修复。
-
FATAL:表示严重错误,可能导致应用程序无法继续运行。FATAL级别的日志通常用于标识严重的系统问题,如无法恢复的异常、关键组件的故障等。
完整配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志文件路径 -->
<property name="LOG_HOME" value="logs" />
<!-- 日志名称-->
<property name="LOG_NAME" value="data-info" />
<property name="LOG_BATCH" value="data-batch" />
<property name="LOG_STREAM" value="data-stream" />
<!-- 控制台输出日志 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>-->
<pattern>%blue(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %magenta([%thread]) %cyan(%logger{36} - [%M:%L]) - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 统一的日志文件 -->
<appender name="FILE_DATA" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<!--最多保留多少文件-->
<maxHistory>500</maxHistory>
</rollingPolicy>
</appender>
<!-- 历史数据包日志文件 -->
<appender name="FILE_BATCH" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${LOG_BATCH}/${LOG_BATCH}.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${LOG_BATCH}/${LOG_BATCH}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<maxHistory>200</maxHistory>
</rollingPolicy>
</appender>
<!-- 实时数据包日志文件 -->
<appender name="FILE_STREAM" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${LOG_STREAM}/${LOG_STREAM}.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${LOG_STREAM}/${LOG_STREAM}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<maxHistory>400</maxHistory>
</rollingPolicy>
</appender>
<!-- 设置 历史数据 包 logger -->
<logger name="com.example.batchData" level="debug" additivity="false">
<appender-ref ref="FILE_BATCH" />
</logger>
<!-- 设置 实时数据 包 logger -->
<logger name="com.example.streamData" level="debug" additivity="false">
<appender-ref ref="FILE_STREAM" />
</logger>
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_DATA" />
</root>
</configuration>
三、输出结果
--0812 更新--
完整配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志文件路径 -->
<property name="LOG_HOME" value="logs" />
<!-- 日志名称-->
<property name="LOG_NAME" value="data-info" />
<property name="LOG_BATCH" value="data-batch" />
<property name="LOG_STREAM" value="data-stream" />
<!-- 控制台输出日志 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>-->
<pattern>%blue(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %magenta([%thread]) %cyan(%logger{36} - [%M:%L]) - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 统一的日志文件 -->
<appender name="FILE_DATA" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${LOG_NAME}/${LOG_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<!--最多保留多少文件-->
<maxHistory>500</maxHistory>
</rollingPolicy>
</appender>
<!-- 历史数据包日志文件 -->
<appender name="FILE_BATCH" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${LOG_BATCH}/${LOG_BATCH}.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${LOG_BATCH}/${LOG_BATCH}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<maxHistory>200</maxHistory>
</rollingPolicy>
</appender>
<!-- 实时数据包日志文件 -->
<appender name="FILE_STREAM" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${LOG_STREAM}/${LOG_STREAM}.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${LOG_STREAM}/${LOG_STREAM}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<maxHistory>400</maxHistory>
</rollingPolicy>
</appender>
<!-- 设置 历史数据 包 logger -->
<logger name="com.example.batchData" level="debug" additivity="false">
<appender-ref ref="FILE_BATCH" />
<appender-ref ref="CONSOLE" />
</logger>
<!-- 设置 实时数据 包 logger -->
<logger name="com.example.streamData" level="debug" additivity="false">
<appender-ref ref="FILE_STREAM" />
<appender-ref ref="CONSOLE" />
</logger>
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_BATCH" />
<appender-ref ref="FILE_STREAM" />
<appender-ref ref="FILE_DATA" />
</root>
</configuration>
其中,更新的是以下部分,修改成这样之后,日志文件输出和控制台数据就会保持一致了。
<!-- 设置 历史数据 包 logger -->
<logger name="com.example.batchData" level="debug" additivity="false">
<appender-ref ref="FILE_BATCH" />
<appender-ref ref="CONSOLE" />
</logger>
<!-- 设置 实时数据 包 logger -->
<logger name="com.example.streamData" level="debug" additivity="false">
<appender-ref ref="FILE_STREAM" />
<appender-ref ref="CONSOLE" />
</logger>
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_BATCH" />
<appender-ref ref="FILE_STREAM" />
<appender-ref ref="FILE_DATA" />
</root>