【Java】Java(四十八):日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 1. 概述程序中的日志可以用来记录程序在运行的时候点点滴滴。并可以进行永久存储。日志与输出语句的区别

1. 概述


程序中的日志可以用来记录程序在运行的时候点点滴滴。并可以进行永久存储。

日志与输出语句的区别

82f4d2d5744f47fdb12cdaa6711e85ca.png

2. 日志体系结构和Log4J

  • 体系结构

4ab75a13dcd248c3a3010f84ba51f207.png

Log4J

Log4j是Apache的一个开源项目。

通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件等位置。

我们也可以控制每一条日志的输出格式。

通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

  • Apache基金会
    Apache软件基金会(也就是Apache Software Foundation,简称为ASF),为支持开源软件项目而办的一个非盈利性组织。

3. 入门案例

  • 使用步骤
  1. 导入log4j的相关jar包
  2. 编写log4j配置文件
  3. 在代码中获取日志的对象
  4. 按照级别设置记录日志信息

代码示例

// 测试类
public class Log4JTest01 {
  //使用log4j的api来获取日志的对象
  //弊端:如果以后我们更换日志的实现类,那么下面的代码就需要跟着改
  //不推荐使用
  //private static final Logger LOGGER =
  Logger.getLogger(Log4JTest01.class);
  //使用slf4j里面的api来获取日志的对象
  //好处:如果以后我们更换日志的实现类,那么下面的代码不需要跟着修改
  //推荐使用
  private static final Logger LOGGER =
  LoggerFactory.getLogger(Log4JTest01.class);
  public static void main(String[] args) {
  //1.导入jar包
  //2.编写配置文件
  //3.在代码中获取日志的对象
  //4.按照日志级别设置日志信息
  LOGGER.debug("debug级别的日志");
  LOGGER.info("info级别的日志");
  LOGGER.warn("warn级别的日志");
  LOGGER.error("error级别的日志");
  }
}

4. 配置文件详解

    Loggers(记录器) 日志的级别

    Loggers组件在此系统中常见的五个级别:DEBUG、INFO、WARN、ERROR 和 FATAL。

    DEBUG < INFO < WARN < ERROR < FATAL。

    Log4j有一个规则:只输出级别不低于设定级别的日志信息。

    Appenders(输出源) 日志要输出的地方

    把日志输出到不同的地方,如控制台(Console)、文件(Files)等。

    org.apache.log4j.ConsoleAppender(控制台)

    org.apache.log4j.FileAppender(文件)

    Layouts(布局) 日志输出的格式

    可以根据自己的喜好规定日志输出的格式

    常用的布局管理器:

    org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)

    配置根Logger

    格式

    log4j.rootLogger=日志级别,appenderName1,appenderName2,…

    日志级别

    OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。

    appenderName1

    就是指定日志信息要输出到哪里。可以同时指定多个输出目的地,用逗号隔开。

    例如:log4j.rootLogger=INFO,ca,fa

    ConsoleAppender常用的选项

    ImmediateFlush=true

    表示所有消息都会被立即输出,设为false则不输出,默认值是true。

    Target=System.err

    默认值是System.out。

    FileAppender常用的选项

    ImmediateFlush=true

    表示所有消息都会被立即输出。设为false则不输出,默认值是true

    Append=false

    true表示将消息添加到指定文件中,原来的消息不覆盖。

    false则将消息覆盖指定的文件内容,默认值是true。

    File=D:/logs/logging.log4j

    指定消息输出到logging.log4j文件中

    PatternLayout常用的选项

    ConversionPattern=%m%n

    设定以怎样的格式显示消息

    相关实践学习
    日志服务之使用Nginx模式采集日志
    本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
    相关文章
    |
    2月前
    |
    Java Apache 开发工具
    【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
    【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
    |
    2月前
    |
    Java 应用服务中间件 HSF
    Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
    Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
    |
    2月前
    |
    Java 应用服务中间件 HSF
    Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
    Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
    |
    2月前
    |
    Java 应用服务中间件 HSF
    Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
    Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
    |
    2月前
    |
    存储 消息中间件 监控
    Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
    Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
    |
    2月前
    |
    Java Linux C++
    【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
    【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
    |
    3月前
    |
    存储 Java
    浅析JAVA日志中的性能实践与原理解释问题之测试日志内容大小对系统性能的影响问题如何解决
    浅析JAVA日志中的性能实践与原理解释问题之测试日志内容大小对系统性能的影响问题如何解决
    |
    2月前
    |
    Kubernetes Ubuntu Windows
    【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
    【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
    |
    23天前
    |
    Java
    日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
    日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
    |
    1月前
    |
    存储 监控 数据可视化
    SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
    【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
    66 9
    下一篇
    无影云桌面