首先要在yml中配置日志配置文件路径:
logging:
config: classpath:log4j2.xml
<Configuration status="WARN">
<!-- 日志文件目录、压缩文件目录、日志格式配置 -->
<properties>
<Property name="LOG_PATTERN">%d[%-5p][%-10t][ %l] -%m%n</Property>
<Property name="APP_NAME" value="test-service"/>
<Property name="LOG_PATH" value="/a/b/c/"/> //设置日志存放路径
</properties>
<Appenders>
<!-- 输出控制台日志的配置 -->
<Console name="console" target="SYSTEM_OUT">
<UsPatternLayout pattern="${LOG_PATTERN}"/>
</Console>
<RollingFile name="allFile" immediateFlush="true" fileName="${LOG_PATH}/${APP_NAME}/logs/test.log"
filePattern="${LOG_PATH}/${APP_NAME}/logs/test-%d{MM-dd-yyyy}-%i.log.gz">
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="50 MB"/>
</Policies>
<DefaultRolloverStrategy max="10">
<Delete basePath="${LOG_PATH}/${APP_NAME}/logs" maxDepth="2">
<IfFileName glob="*.{log,gz}"/>
<IfLastModified age="10d"/>
</Delete>
</DefaultRolloverStrategy>
<UsPatternLayout pattern="${LOG_PATTERN}"/>
</RollingFile>
<RollingFile name="ftestLog" immediateFlush="true" fileName="${LOG_PATH}/${APP_NAME}/logs/ftest-service.log"
filePattern="logs/ftest-%d{MM-dd-yyyy}-%i.log.gz">
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="50 MB"/>
</Policies>
<DefaultRolloverStrategy max="0">
<Delete basePath="${LOG_PATH}/${APP_NAME}/logs" maxDepth="2">
<IfFileName glob="*.{log,gz}"/>
<IfLastModified age="10d"/>
</Delete>
</DefaultRolloverStrategy>
<UsPatternLayout pattern="${LOG_PATTERN}"/>
</RollingFile>
</Appenders>
<Loggers>
<root level="info"> //上面配置了2个日志路径 这里表示全部日志都在这里
<appender-ref ref="console"/>
<appender-ref ref="allFile"/>
</root>
<logger level="info">
<AppenderRef ref="ftestLog"/>
<name>com.test.test.ftest</name> // 这里配置了里面单独的module要单独打印日志 路径为包路径为com.test.test.ftest的在上面全路径打印外,
还会单独依据上面<AppenderRef ref="ftestLog"/>指定配置在打印一遍
</logger>
<logger name="org.apache.servicecomb" level="error"></logger> //这里可以加一些路径要加的日志级别,比如下面要加hikia为debug
<logger name=" com.zaxxer.hikari.pool.HikariPool" level="debug"></logger>
</Loggers>
</Configuration>
monitorInterval="10" 表示监控间隔,单位是秒,比如删除日志、生成gz逻辑,10秒中判断一次
immediateFlush=“true” 设置成false以后有5 quintuple倍吞吐量的提升,但是,会有部分缓存的日志不会输出到日志文件里,如果这时,appender遇到错误会导致缓存的部分丢失(8192即8K的丢失)
日志中:获取yml或者-D参数${sys:log.dir} 获取环境变量${env:A_env}
%p 日志级别
%t 进程号
%d 日期,默认的是 %d{yyyy-MM--dd HH:mm:ss,SSS}格式
%i 递增的数字,如果当天日志是按2MB打包gz的,超过的会排序。仅限当天,第二天的又是从1开始。