1、引入依赖
<!-- 引入log4j2依赖 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.18.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.18.0</version> </dependency> <!--<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>-->
2、在resources中添加配置文件log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--> <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数--> <configuration monitorInterval="10"> <!--先定义所有的appender--> <appenders> <!--*********************控制台日志***********************--> <console name="Console" target="SYSTEM_OUT"> <!--输出日志的格式--> <!--<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>--> <!--设置日志格式及颜色--> <PatternLayout pattern="%style{%d{ISO8601}}{bright,green} %highlight{%-5level} [%style{%t}{bright,blue}] %style{%C{}}{bright,yellow}: %msg%n%style{%throwable}{red}" disableAnsi="false" noConsoleNoAnsi="false"/> </console> <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--> <!--<File name="log" fileName="log/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File>--> <!--*********************文件日志***********************--> <!--all级别日志--> <RollingFile name="RollingFileAll" fileName="./logs/all.log" filePattern="./logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <!--设置日志格式--> <PatternLayout> <pattern>%d %p %C{} [%t] %m%n</pattern> </PatternLayout> <Policies> <!-- 设置日志文件切分参数 --> <!--<OnStartupTriggeringPolicy/>--> <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新--> <SizeBasedTriggeringPolicy size="100 MB"/> <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置--> <TimeBasedTriggeringPolicy/> </Policies> <!--设置日志的文件个数上限,不设置默认为7个,超过大小后会被覆盖;依赖于filePattern中的%i--> <DefaultRolloverStrategy max="100"/> </RollingFile> <!-- debug,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--> <RollingFile name="RollingFileDebug" fileName="./logs/debug.log" filePattern="./logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <!--只记录debug及以上级别的日志--> <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <!-- 设置日志文件切分参数 --> <!--<OnStartupTriggeringPolicy/>--> <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新--> <SizeBasedTriggeringPolicy size="100 MB"/> <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置--> <TimeBasedTriggeringPolicy/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--> <RollingFile name="RollingFileInfo" fileName="./logs/info.log" filePattern="./logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <!--只记录info及以上级别的日志--> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <!-- 设置日志文件切分参数 --> <!--<OnStartupTriggeringPolicy/>--> <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新--> <SizeBasedTriggeringPolicy size="100 MB"/> <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置--> <TimeBasedTriggeringPolicy/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <RollingFile name="RollingFileWarn" fileName="./logs/warn.log" filePattern="./logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <!--只记录warn及以上级别的日志--> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <!-- 设置日志文件切分参数 --> <!--<OnStartupTriggeringPolicy/>--> <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新--> <SizeBasedTriggeringPolicy size="100 MB"/> <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置--> <TimeBasedTriggeringPolicy/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <RollingFile name="RollingFileError" fileName="./logs/error.log" filePattern="./logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"> <!--只记录error及以上级别的日志--> <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <!-- 设置日志文件切分参数 --> <!--<OnStartupTriggeringPolicy/>--> <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新--> <SizeBasedTriggeringPolicy size="100 MB"/> <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置--> <TimeBasedTriggeringPolicy/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <!-- sql输出文件 --> <RollingFile name="SQL" fileName="./logs/sql.log" filePattern="./logs/$${date:yyyy-MM}/sql-%d{yyyy-MM-dd}-%i.log"> <!--<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>--> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <!-- 设置日志文件切分参数 --> <!--<OnStartupTriggeringPolicy/>--> <!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新--> <SizeBasedTriggeringPolicy size="100 MB"/> <!--设置日志文件滚动更新的时间,依赖于文件命名filePattern的设置--> <TimeBasedTriggeringPolicy/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> </appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> <loggers> <!-- 根日志设置 --> <root level="all"> <appender-ref ref="RollingFileAll" level="all"/> <appender-ref ref="Console" level="debug"/> <appender-ref ref="RollingFileDebug" level="debug"/> <appender-ref ref="RollingFileInfo" level="info"/> <appender-ref ref="RollingFileWarn" level="warn"/> <appender-ref ref="RollingFileError" level="error"/> </root> <!--只记录spring的info及以上级别的日志--> <logger name="org.springframework" level="WARN"/> <!--只记录hibernate的info及以上级别的日志--> <logger name="org.hibernate" level="WARN"> <!-- 添加如下设置,控制台会再打印一次 --> <!-- <AppenderRef ref="Console"/> --> </logger> <!-- <logger name="com.zero4j" level="DEBUG" additivity="false"> <appender-ref ref="Console"/> </logger>--> </loggers> </configuration>
3、在需要日志的类中添加静态变量(如果使用lombok的@Log4j2注解则可以省略这步)
public final static Logger logger = LogManager.getLogger(MerchantDailySettlementQuartz.class.getName());
4、打印日志
log.debug("debug:执行生成商户日结算单定时器"); log.info("info:执行生成商户日结算单定时器"); log.warn("warn:执行生成商户日结算单定时器");