文档章节

Java日志学习笔记

zitongChan
 zitongChan
发布于 2017/07/09 13:29
字数 1038
阅读 21
收藏 0

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 编码,默认情况下使用平台相关的编码
threshold appender对象的阀值
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 根据地域,在每周的第一天回滚文件

© 著作权归作者所有

下一篇: Spring Data
zitongChan
粉丝 4
博文 20
码字总数 25022
作品 0
中山
程序员
私信 提问
给大家分享一个JAVA技术大牛的课程笔记

目前,Java语言已经广泛应用于生活中的各个领域,无论是网络编程还是数据库编程,甚至是web开发都有Java语言的身影 很多小伙伴想学习java却布置从何学起,现在给大家分享一个JAVA大神课程笔记...

dadaxiaoxiao
2015/12/31
414
1
111 多线程JUC包下代码分析

Java多线程系列目录(共43篇) AtomicLongFieldUpdater:通过反射+CAS实现对传入对象的指定long字段实现类似AtomicLong的操作 http://www.cnblogs.com/skywang12345/p/javathreadscategory.ht...

素雷
2017/10/31
42
0
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0
mybatis 学习笔记(一):mybatis 初认识

mybatis 学习笔记(一):mybatis 初认识 简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。mybatis 可以将 preparedStatement 中的输入参数自动...

希希里之海
2018/08/22
0
0
BAT等大厂Android面试书单和知识点清单

java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比...

android自学
2018/07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
2分钟前
0
0
读书笔记:深入理解ES6 (八)

第八章 迭代器(Iterator)与生成器(Generator) 第1节 循环语句的问题   在循环、多重循环中,通过变量来跟踪数组索引的行为容易导致程序出错。迭代器的出现旨在消除这种复杂性,并减少循...

张森ZS
3分钟前
1
0
Elasticsearch 实战(一) - 简介

官腔 Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 基本等于没说,咱们慢慢看 1 概述 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜...

JavaEdge
7分钟前
0
0
【jQuery基础学习】11 jQuery性能简单优化

本文转载于:专业的前端网站➦【jQuery基础学习】11 jQuery性能简单优化 关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的。如果这样不能直接找到,也可以用find方法继...

前端老手
16分钟前
3
0
重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源

导读:2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Open Application Model (OAM...

阿里云官方博客
19分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部