您的位置:首页 > 编程语言 > Java开发

spring boot 配置log4j 日志

2017-06-24 00:00 597 查看
其实 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 有没有配置都会把 对应级别的 信息给 记录 到对应的 日志文件里面去的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: