Java日志学习笔记

Java日志学习笔记

java的日志方案有Commons-logging, Log4j, Slf4j, LogBack...

Commons-logging: apache最早提供的日志的门面接口,类似于jdbc的接口,具体实现由jdbc driver

Log4j:经典的一种日志解决方案,内部把日志系统抽象封装为Logger, appender, pattern等实现,可以通过配置文件轻松的实现日志系统的管理和多样化配置

Slf4j:全称:Simple Logging Facade for JAVA : java简单日志门面,是对不同日志框架提供的一种门面封装,部署的时候不修改任何配置即可接入一种日志实现方案。

Logback: 作为一个通用可靠,快速灵活的日志框架,将作为Log4j的替代和Slf4j组合新的日志系统的完整实现

SLF4J日志方案

通过SLF4J依赖,提供日志API,其实使用Log4J作为实现的,其Maven的配置如下:

<dependency>
	<groupId>org.slf4j</groupId>
  	<artifactId>slf4j-log4j12</artifactId>
  	<version>1.7.7</version>
</dependency>

若是在Maven工程中,必须在main/resource目录下创建一个名为log4j.properties的文件,内容如下:

#日志级别为ERROR 提供两种日志console(控制台),file(文本)
#需要对两种日志分别配置

log4j.rootLogger = ERROR, console, file
#控制台日志
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
# %m%n在日记结尾添加换行
log4j.appender.console.layout.ConversionPattern = %m%n  

#文件日志
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
#输出日志到指定的文件
log4j.appender.file.File = ${user.home}/logs/book.log
#文件回滚的时间
log4j.appender.file.DatePattern = '_'yyyyMMdd 
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{HH:mm:ss,SSS} %p %c (%L) - %m%m

#同时指定只有cc.codingape包下的类才输出DEBUG级别的日志
log4j.logger.cc.codingape = DEBUG

日志的一个使用范例:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory
public class Slf4jDemo {
    private static final Logger LOGGER = LoggerFactory.getLogger(Slf4jDemo.class);
    public static void main(String[] args){
        LOGGER.error("Slf4jDemo");//在控制台上输出Slf4jDemo
    }
}

在Slf4j中增加了占位符{},使得信息的输出便捷很多

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Slf4jDemo {
    private static final Logger LOGGER = LoggerFactory.getLogger(Slf4jDemo.class);
    public static void main(String[] args){
        String message = "slf4j";
        LOGGER.debug("use {}",message);
    }
}

日志的配置文件

核心对象

  • Logger对象 负责获取日志信息,并存储于一个分层的命名空间中
  • Layout对象 提供用于各种风格格式的日志信息的对象,在日志发布前,为appender提供支持
  • Appender对象 负责将日志信息发布到不同的目的地,比如数据库,文件, 控制台

%m%n`表示在输出信息后换行

日志的级别有:TRACE < DEBUG < INFO < WARN < ERROR < FATAL < ALL 级别不断提高,输出的日志基本高于配置文件中日志的基本才能得以输出,例如配置文件中的日志级别为 ERROR,则代码中INFO级别的日志是无法输出的,FATAL,ALL级别的日志信息才能被输出。若指定具体包下的日志输出级别除外,如上述log4j.logger.cc.codingape = DEBUG指定了cc.codingape包下的日志输出级别为DEBUG.

在日志的配置文件中可以使用${}的运算符来配置文件

Layout类型

Apache Log4j提供多个Layout对象,每个根据布局的不同都可格式化日志数据

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

文件记录日志

FileAppender配置
属性描述
immediateFlush默认为true,每次日志追加操作都刷新到文件
encoding编码,默认情况下使用平台相关的编码
thresholdappender对象的阀值
Filename日志文件名
fileAppend默认true,日志追加到文件
bufferedIO是否打开缓冲,默认为false
bufferSize若是开启缓冲去IO,指定缓冲区大小,默认8kb

使用org.apache.Log4j.FileAppender将日志记录到文件,

将文件写入多个文件则使用org.apache.Log4j.RollingFileAppender,该类继承了FileAppender

逐日生成日志

逐日生成日志文件,使用org.apache.Log4j.DailyRollingFileAppender,该类同样继承了FileAppender

DatePattern:该属性表明什么时候回滚文件,以及文件的命名约定,缺省情况下每日午夜回滚文件

DatePattern描述
'.'yyyy-MM在本月末,下月初回滚文件
'.'yyyy-MM-dd在每日午夜回滚文件,缺省值
'.'yyyy-MM-dd-a在每日中午和午夜回滚文件
'.'yyyy-MM-dd-HH在每个整点回滚文件
'.'yyyy-MM-dd-HH-mm每分钟回滚文件
'.'yyyy-ww根据地域,在每周的第一天回滚文件

转载于:https://my.oschina.net/u/3592080/blog/1507472

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值