设为首页 加入收藏

TOP

日志(一)
2023-07-25 21:27:03 】 浏览:56
Tags:日志

前言:日志通常打印在控制台或者日志文件。打印需要考虑格式、日志级别、性能等问题,手动实现起来比较麻烦,为此衍生出一大批的日志打印框架比如JUL(java util logging)、logback、log4j、log4j2。

一、日志实现

1.JUL(Java util logging)

1.1 入门案例

JUL是JDK提供的日志打印工具,使用起来比较简单,不需要引入外部依赖,下面就是最简单的一个入门案例。

    @Test
    public void testJUL() {
// 获取Logger对象 Logger logger
= Logger.getLogger("com.xxx.log.JULLogTest"); logger.info("hello JUL"); }

1.2 概念

JUL引入了很多重要的概念,后续的其他框架也进行了引用。

Logger:被称为日志记录器,应用程序通过获取Logger对象,并调用其方法完成日志打印。

Appender:也被称为Handler,一个Logger对象可以关联一个或多个Appender对象,Logger会将日志交给Appender处理,不同的Appender实现打印的日志位置也不同,比如可以将日志打印至控制台、文件、数据库等。

Layout:负责对日志数据进行格式化。

Level:日志级别

JUL中的Logger(后面的日志实现也都遵循此规律)存在父子关系,在程序启动时,会创建一个RootLogger,它是所有Logger的根。其他的Logger默认会继承RootLogger的Appender、Layout以及日志打印级别,这一点非常重要。在开发中我们一般只会在配置文件中配置RootLogger,其他的Logger继承它就行。至于其他Logger,它们的继承关系通过包的路径来关联,比如com.example的Logger继承自com的Logger。

2.Log4j

log4j是log for java的简称,是Apache开源的一款日志打印框架,虽然其存在安全问题,已经很少使用,但是他的升级版本Log4j2,在安全和性能上都有了很大的提升,是现在的主流日志框架,因此还是有必要了解下。

入门案例

1. 引入log4j依赖

 <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
  </dependency>

2. 编写配置文件

log4j会默认扫描classpath下的配置文件log4j.xml或log4j.properties,如果扫描不到配置文件,会报错"No appenders could be found for logger"。

#指定日志的输出级别与输出端
log4j.rootLogger=INFO,Console

# 控制台输出配置
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

3.编写Java代码

    public static void main(String[] args) {
        Logger logger = Logger.getLogger(Log4jTest.class);
        logger.fatal("fatal...");
        logger.error("error...");
        logger.warn("warn...");
        logger.info("info...");
        logger.debug("debug...");
        logger.trace("trace...");
    }

4.控制台输出

2022-10-23 16:56:52,478 [main] FATAL [org.log.Log4jTest] - fatal...
2022-10-23 16:56:52,478 [main] ERROR [org.log.Log4jTest] - error...
2022-10-23 16:56:52,479 [main] WARN  [org.log.Log4jTest] - warn...
2022-10-23 16:56:52,479 [main] INFO  [org.log.Log4jTest] - info...

组件

与jul类似,log4j也包含三个重要的组件:Logger、Appender以及Layout,其功能也类似,这里不再赘述。

配置文件

log4j的配置文件主要就是配置上面提到的Logger、Appender以及Layout组件。

Logger组件的配置:可按照下面的方式配置rootLogger,首先是日志级别,然后是Appender的名称,可以配置多个Appender,之间用逗号隔开。

log4j.rootLogger=INFO,Console,File

Appender组件配置:根据输出的位置不同,选择不同的Appender。输出至console,选择org.apache.log4j.ConsoleAppender,输出至文件,选择org.apache.log4j.DailyRollingFileAppender。log4j.appender.xxx,其中xxx代表在Appender名称,与Logger配置中的名称一致              log4j.appender.Console=org.apache.log4j.ConsoleAppender

Loayout组件配置:配置文件的输出格式,一个Appender配置一个与之对应的Layout。

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

3.Logback

Logback是Log4j的创始人开发的另外一款日志打印框架,性能比Log4j好,也是Spring底层使用的默认日志打印实现。同时它完整实现了slf4j的API,可以轻松和slf4j对接。

入门案例

1.引入依赖

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3&
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java多线程(3):ThreadPool(上.. 下一篇Java Apache POI 小记(读取Word通..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目