spring boot 配置log4j 日志

其实 spring boot 默认 使用 logback 的,,, 而且如果我们想 使用 log4j 也是可以的。。。 因为 里面内置的 Tomcat 可以直接使用 log4j 类的来记录的 比如:

import org.apache.log4j.Logger;

private Logger log = Logger.getLogger(this.getClass()); 

当然 只需要在  application.yml 
里面简单 说明一下: 
logging:
  level: warn
  file: logs/guns.log 

即可简单使用了。。。 当然 如果不指定使用 那种log 的话,默认就是 logback 了

比如: 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

  protected final static Logger logger = LoggerFactory.getLogger(GunsApplication.class);

即可以简单使用了。。。 但是对于 大一些 的 系统来说,,,这个 日志配置实在太简单了。。。

这里说明一下 org.slf4j.Logger 类 会自动使用当前项目的默认 日志类型去 打印日志的。。。 类似 jdbc 一样,,不会关心你用什么 数据库一样的原理。。

我这里就引入使用 log4j 把,,, 我这里 使用的 是 log4j.xml 我个人比较喜欢 xml 的方式,,,可以使用 log4j.properties 这个 百度就很多了,比较常用 这个看人喜欢了。。 都是一样的,,,将 log4j 的配置文件 直接放入 资源文件包 resources 里面即可 。。。 同时 还需要 引入 pom

<!--不适用默认的logback 记录日志引入 log4j 记录  -->
    	 <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-log4j</artifactId>
     <version>${log4j.version}</version>
	</dependency>
	

网上百度的时候 都说不需要 带上 log4j 的 版本号的,,,可是 我maven 会爆错,找不到 jar。。 所以我加上去了。。。 这样就可以直接使用了。。

下面是我的配置文件 xml 形式的,可以参考


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">


    
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="[GUN.com] %-d{yyyy-MM-dd HH:mm:ss} %p [%t] %c{1}.%M(%L) | %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG" /> 
			<param name="LevelMax" value="ERROR" />
		</filter>
    </appender>   
    
	
	<appender name="WARN" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="/web/logs/gun/warn.log"/>
		<param name="Append" value="true"/>
		<param name="Encoding" value="utf-8"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[GUN.com] %-d{yyyy-MM-dd HH:mm:ss} %-5p %-15c{1}: %m%n"/>
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="WARN" />
			<param name="LevelMax" value="WARN" />
		</filter>
	</appender>
	
	<appender name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="/web/logs/gun/error.log"/>
		<param name="Append" value="true"/>
		<param name="Encoding" value="utf-8"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[GUN.com] %-d{yyyy-MM-dd HH:mm:ss} %-5p %-15c{1}: %m%n"/>
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="ERROR" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>
 
     
	<!-- 其实这些的 logger 不配置也是可以的,因为 根节点已经配置了 打印记录所有的 警告和错误基本的内容  -->
	
    
   
    
    <logger name="org.springframework.web.servlet.DispatcherServlet">
    	 <level value="DEBUG" /> 
    	 <!--打印到对应的 日志文件里面  -->
    	    <appender-ref ref="CONSOLE"/>  
    </logger>
    
    
    
    <!-- logger 就是将 对应的类或者包下面的日志 输入出来  -->
   <logger name="com.stylefeng.guns"> 
	   <level value="DEBUG" /> 
    	 <!--打印到对应的 日志文件里面  -->
    	<appender-ref ref="CONSOLE"/>  
	</logger>
   
	   
	<logger name="com.alibaba.druid"> 
	    <level value="DEBUG" /> 
    	 <!--打印到对应的 日志文件里面  -->
    	 <appender-ref ref="CONSOLE"/>   
	</logger>

	
	<!--
        root的作用(相当于全局的意思):
        1.[priority ]:指定默认的全局输出级别
        2.[appender-ref ]:指定一些默认的append(没有指出特殊包或者类,即那些没有指定<logger>元素的append)的输出;
    -->
    <root>
        <priority value="debug"/>
        
		<!-- <appender-ref ref="CONSOLE"/>  -->
		
		<appender-ref ref="WARN"/>
		<appender-ref ref="ERROR"/>
		
    </root>

</log4j:configuration>


说明一下 ,

如果将 <appender-ref ref="CONSOLE"/> 放入 root 里面 就会 产生 很多,,的 bug 记录,,,太多了,,在控制台 很难看,,特别是 调试的时候,,,个人不喜欢这样的。。。所以就 可以 自定义 一些 logger 用来控制 将 一些信息打印到控制台里面,,,

logger 这个logger 就是 可以 控制 将 那些类或者包下面的类 的 日志 的 那些级别 打印或者输入到 哪里去,,,

而 root 下面的 <appender-ref ref="ERROR"/> 就是全局的了,,不管 logger 有没有配置都会把 对应级别的 信息给 记录 到对应的 日志文件里面去的

转载于:https://my.oschina.net/ouminzy/blog/1014896

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值