日志框架整理--logback

logback是有log4j 创始人设计的又一个开源日志框架
logback 当前分为三个模块:logbakc-core,logback-classic 和 logback-access

  • logback-core:是其他两个模块的基础模块
  • logback-classic:是log4j的一个改良版本。此外logback-classic 完整实现SLF4J API,所以可以很方便的更换成其他日志系统,如 log4j 或 JDK14 Logging
  • logback-access:访问模块与Servlet容器基础,提供通过http访问日志的功能。

maven:


    org.slf4j
    slf4j-api
    1.7.7


    ch.qos.logback
    logback-core
    1.1.7


    ch.qos.logback
    logback-access
    1.1.7


    ch.qos.logback
    logback-classic
    1.1.7

logback, 一个“通用,可靠,快速又灵活的Java日志框架”

在src目录下建立logback.xml
logback查找顺序:

  1. 首先会试着查找logback.groovy文件
  2. 当没有找到时,继续试着查找 logback-test.xml 文件
  3. 当没有找到时,继续试着查找 logback.xml 文件
  4. 如果仍然没有找到,则使用默认配置(打印到控制台)

自定义日志配置

根据不同的日志系统,可以按照如下规则组织配置文件名,就可以被正确加载:
Logback:logback-spring.xml,logback-spring.groovy,logback.xml,logback.groovy
Log4j: log4J-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2: log4j2-spring.xml, log4j2.xml
JDK(Java Util Logging): logging.properties

Spring Boot 官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml), 命名为logback-spring.xml 的日志配置文件,spring boot 可以为它添加一些spring boot特有的配置项。
默认的命名规则,并且放在 src/main/resources 下面即可

如果你不想用 logback.xml 作为 logback 配置的名字,application.yml 可以通过 logging.config 属性指定自定义的名字:
logging.config=classpath:logging-config.xml
虽然一般并不需要改变配置文件的名字,但是如果你想针对不同运行是profile使用不同的配置,这个功能会很有用。
一般不需要这个属性,而是直接在 logback-spring.xml 中使用 springProfile配置,不需要logging.config 指定不同环境使用不同配置文件。

上代码:

package logback;  
  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
  
public class LogbackDemo {  
    private static Logger log = LoggerFactory.getLogger(LogbackDemo.class);  
    public static void main(String[] args) {  
        log.trace("======trace");  
        log.debug("======debug");  
        log.info("======info");  
        log.warn("======warn");  
        log.error("======error");  
           
        String name = "Aub";  
        String message = "3Q";  
        String[] fruits = { "apple", "banana" };  
          
        // logback提供的可以使用变量的打印方式,结果为"Hello,Aub!"  
        log.info("Hello,{}!", name);  
          
        // 可以有多个参数,结果为“Hello,Aub! 3Q!”  
        log.info("Hello,{}!   {}!", name, message);  
          
        // 可以传入一个数组,结果为"Fruit:  apple,banana"  
        log.info("Fruit:  {},{}", fruits);   
    }  
}  

configuration

  1. 根节点 configuration 包含的属性:
  • scan:
    此属性设置为true,配置文件如果发生改变,将会被重新加载,默认为true
  • scanPeriod:
    设置监测配置文件是否有修改的时间间隔,如果没有给出事件单位,默认单位是毫秒。当scan为true时,此属性默认生效。默认的时间将为1分钟。
  • debug:
    此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认为false。
    例如:
  
        
  
  1. 根节点 configuration 的子节点:
  • contextName
    每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。可以通过%contextName来打印日志上下文名称,一般来说我们不用这个属性,可有可无.
    例如:

你可能感兴趣的:(Java-log)