Springboot2模块系列:日志slf4j2(持久化)

    科技2023-10-30  110

    1 pom.xml

    排除springboot默认的日志框架,使用slf4j2日志框架作为持久化工具。

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>

    2 slf4j2.xml

    日志持久化配置:设置日志级别error,warn和info以及保存日志路径。

    <?xml version="1.0" encoding="UTF-8"?> <configuration status="warn"> <properties> <Property name="app_name">ddd</Property> <Property name="log_path">logs/${app_name}</Property> </properties> <appenders> <console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="[%d][%t][%p][%l] %m%n" /> </console> <RollingFile name="RollingFileInfo" fileName="${log_path}/info.log" filePattern="${log_path}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="INFO" /> <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" /> </Filters> <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /> <Policies> <!-- 归档每天的文件 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制单个文件大小 --> <SizeBasedTriggeringPolicy size="2 MB" /> </Policies> <!-- 限制每天文件个数 --> <DefaultRolloverStrategy compressionLevel="0" max="10"/> </RollingFile> <RollingFile name="RollingFileWarn" fileName="${log_path}/warn.log" filePattern="${log_path}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="WARN" /> <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL" /> </Filters> <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /> <Policies> <!-- 归档每天的文件 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制单个文件大小 --> <SizeBasedTriggeringPolicy size="2 MB" /> </Policies> <!-- 限制每天文件个数 --> <DefaultRolloverStrategy compressionLevel="0" max="10"/> </RollingFile> <RollingFile name="RollingFileError" fileName="${log_path}/error.log" filePattern="${log_path}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz"> <ThresholdFilter level="ERROR" /> <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /> <Policies> <!-- 归档每天的文件 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制单个文件大小 --> <SizeBasedTriggeringPolicy size="2 MB" /> </Policies> <!-- 限制每天文件个数 --> <DefaultRolloverStrategy compressionLevel="0" max="10"/> </RollingFile> </appenders> <loggers> <root level="info"> <appender-ref ref="Console" /> <appender-ref ref="RollingFileInfo" /> <appender-ref ref="RollingFileWarn" /> <appender-ref ref="RollingFileError" /> </root> </loggers> </configuration>

    3 application.yml

    引入日志配置文件。

    logging: level: root: info config: classpath:config/slf4j2.xml

    4 Usage

    使用slf4j作为日志输出工具。

    4.1 生成日志

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggerSave{ static Logger logger = LoggerFactory.getLogger(LoggerSave.class); public void main(String[] args){ logger.error("error test"); } }

    【参考文献】 [1]https://www.jianshu.com/p/780a1bf46a1f [2]https://blog.csdn.net/Xin_101/article/details/103427753 [3]https://blog.csdn.net/zwj1030711290/article/details/81010320 [4]https://blog.csdn.net/yu0_zhang0/article/details/83898819 [5]https://www.cnblogs.com/niumoo/p/10398595.html [6]https://cloud.tencent.com/developer/article/1383510

    Processed: 0.015, SQL: 8