配置Logback输出日志信息

在进行web开发时,需要进行日志的打印和记录,Logback就是Java常用的一个日志输出工具。

它是SLF4J(Simple logging Facade for Java)一个具体实现类,slf4j是java的一个日志门面,它只是定义了日志框架一些通用的api,并没有具体的实现。Log4j也是slf4j的一个实现类,Logback是在log4j的基础上进行重写的日志工具,速度更快更好。

首先在maven中引入该项目依赖

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>

配置文件

在resources文件夹下创建logback.xml,logback会自动在该目录下加载该配置文件,在该文件中对打印日志的级别、形式、保存路径等进行配置。

如下所示,第一个标签<configuration scan="true" scanPeriod="60 seconds" debug="false">代表每60秒对配置文件进行一次扫描,当发生改变时会自动重载而不需要重启服务器。debug="false"代表不输出logback本身的调试信息。

接着通过<property>标签定义了一些全局变量,供之后的标签调用。

  • 第一个log.level代表日志的级别,由低到高为trace<debug<info<warn<error,当我们指定级别为info时,比它低的trace和debug的内容就不会输出。常用的三个级别是debug、info、error。
  • log.maxHistory代表日志最多保存30天。
  • log.filePath指定日志的保存目录为${catalina.base}/logs/webapps,其中在Tomcat服务器启动的时候会在控制台输出CATALINA_BASE服务器实例的根目录,我门可以根据输出找到目录。
  • log.pattern指定了输出日志的格式,%d{yyyy-MM-dd HH:mm:ss.SSS} 格式化输出时间信息,%-5level 输出日志级别,[%thread]线程信息, %logger{50}调用日志的类, %msg%n输出日志信息并换行。

接下来设置控制台输出的appender,在其<encoder>中指定输入的格式<pattern>。

之后对DEBUG级别的日志进行设置,<file>标签指定将debug具体输出到哪个目录下。<rollingPolicy>指定日志每天将所有的debug日志打包压缩为.gz文件。<encode>指定debug输出格式,<filter>过滤器,符合其level的ACCEPT,不符合则DENY。同理配置INFO、ERROR级别的输出日志。

最后在<logger>标签中将上面定义的DEBUG、INFO、ERROR三个级别的日志注册到logger,在其标签属性level指定日志等级为我们之前定义的参数${log.level}=debug,这样只输出debug等级以上的内容。

最后在<root>标签中注册控制台consoleAppender

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--定义参数常量-->
    <property name="log.level" value="debug"/>
    <property name="log.maxHistory" value="30"/>
    <property name="log.filePath" value="${catalina.base}/logs/webapps"/>
    <property name="log.pattern" 
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} >> %msg%n"/>

<!--控制台设置-->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
<!--    设置DEBUG级别的日志-->
    <appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.filePath}/debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
<!--    设置INFO级别的日志-->
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.filePath}/info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
<!--    设置ERROR级别的日志-->
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.filePath}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <maxHistory>${log.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
<!--    绑定到logger-->
    <logger name="com.tory.shop" level="${log.level}" additivity="true">
        <appender-ref ref="debugAppender"/>
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="errorAppender"/>
    </logger>
    <root level="info">
        <appender-ref ref="consoleAppender"/>
    </root>
</configuration>

使用logback输出日志

比如我们要在Controller中进行日志输出,则首先需要通过LoggerFactory创建一个Logger对象,这两个类都是来自org.slf4j接口,该接口用于提供日志输出的相关操作规范,logback实现了该接口,之后调用info()、debug()、error()分别输出各自级别的日志信息

package com.tory.shop.controller.superadmin;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...

import java.util.List;

@Controller
@RequestMapping("/area")        
public class AreaController {
    Logger logger= LoggerFactory.getLogger(AreaController.class);   //获取日志输入对象logger
    @Autowired
    private AreaService areaService;

    @RequestMapping("/list")    
    @ResponseBody               
    public List<Area> getList(){                            //调用方法输出不同级别的日志信息
        logger.info("==========开始执行AreaController.getList()==========");
        logger.debug("输出Debug调试信息...");
        logger.error("输出报错信息...");
        return areaService.getAreaList();
    }
}

最后在CATALINA_BASE目录下找到/logs/webapps/debug.log文件如下,类似地在该文件夹下还有info.log、error.log文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值