4.SpringBoot+Log4j2

1.导入log4j2依赖

		<!-- 配置 log4j2 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>

		<!--Spring-boot中去掉logging的依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<exclusions>
				<!-- 切换log4j2日志读取 -->
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

2.创建log4j2.xml文件

<?xml version="1.0" encoding="UTF-8"?>  
<configuration status="WARN">
    <appenders>
		<!--   这个输出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="   %p  %l  %msg%xEx%n" />
          <!--  %d{HH:mm:ss.SSS} [%t] %-5level  (%c{1} %L %M )  %msg%xEx%n  输出线程名 -->
        </Console>
		
		<!-- 一般日志文件 -->
      <File name="log" fileName="log/test.log" append="false">
         <PatternLayout pattern=" %d{yyyy.MM.dd  HH:mm:ss } %l  %msg%xEx%n "/>
    
     </File>
		<!-- err日志文件 -->
	<File name="ERROR" fileName="log/error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{yyyy.MM.dd  HH:mm:ss } %l  %msg%xEx%n"/>
        </File>
 
    <RollingFile name="RollingFile" fileName="logs/web.log"
                     filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy.MM.dd  HH:mm:ss.SSS } %l  %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="2MB"/>
        </RollingFile>
        
  
    </appenders>
    
<!--     然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
  
<!--         建立一个默认的root的logger -->
        <root level="info">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
			<appender-ref ref="ERROR" />
			<appender-ref ref="log"/>
        </root>
 
    </loggers>
</configuration>

3.在application.yml中添加log4j.xml配置文件

logging:
  config: classpath:log4j2.xml

输出测试 : LoggerFactory.getLogger(TestController.class).info("log4j2输出测试...");

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"> 

	<properties>
		<property name="LOG_HOME">logs</property> <!-- 日志文件路径 -->
		<property name="FILE_NAME">mylog</property><!-- 日志文件名称 -->
	</properties>
	
    <Appenders>  
    	<!-- 控制台输出 -->
        <Console name="Console" target="SYSTEM_OUT">  
         <!--过滤器:控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->  
         	<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
<!--%d{HH:mm:ss.SSS} 表示输出到毫秒的时间
 		 %t 输出当前线程名称
 		 %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
		  %logger 输出logger名称,因为Root Logger没有名称,所以没有输出
		  %msg 日志文本
		  %n 换行

		  其他常用的占位符有:
		  %F 输出所在的类文件名,如Log4j2Test.java
		  %L 输出行号
		  %M 输出所在方法名
		  %l 输出语句所在的行数, 包括类名、方法名、文件名、行数  -->
        </Console>   
        <!-- 写入到文件 -->
        <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="${LOG_HOME}/${FILE_NAME}.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i.log">
        	<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        	<Policies>
        		<TimeBasedTriggeringPolicy interval="1440" /> 
 <!-- 和filePattern结合使用, 注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i,最小的时间粒度是mm,即分钟
   TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件 ,如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件-->
        		<SizeBasedTriggeringPolicy size="10 MB"/> <!-- 当文件体积大于size指定的值时,触发Rolling -->
        	</Policies>
        	<DefaultRolloverStrategy max="20"/>  <!-- 最多保存的文件个数 -->
        </RollingRandomAccessFile>      
        <Async name="AsyncAppender"> <!-- 异步 -->
        	<AppenderRef ref="RollingRandomAccessFile"/>
    	</Async>
    </Appenders>  
    
    <Loggers>  <!-- 日志器 -->
    	<Logger name="RollingRandomAccessFileLogger" level="info" additivity="false">  
	        <AppenderRef ref="AsyncAppender" />  
	        <AppenderRef ref="Console" />  
	    </Logger>
    </Loggers>  
</Configuration>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值