Java日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Java日志

Java日志


本篇主要讲述了Java日志的基础知识。


1、概述


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


  • 日志与输出语句的区别


image.png


2、日志体系结构和logback


  • 日志体系结构


  • logback
    通过使用logback,我们可以控制日志信息输送的目的地是控制台、文件等位置。
    我们也可以控制每一条日志的输出格式。
    通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
    最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。


3、入门案例【应用】


3.1、使用步骤


  1. 导入logback的相关jar包


  1. 编写logback配置文件


  1. 在代码中获取日志的对象


  1. 按照级别设置记录日志信息


// 测试类
public class Test {
    // 获取日志的对象
    private static  final Logger LOGGER = LoggerFactory.getLogger(Test01.class);
    public static void main(String[] args) {
        // 1.导入jar包
        //2.编写配置文件
        //3.在代码中获取日志的对象
        //4.按照日志级别设置日志信息
        LOGGER.debug("debug级别的日志");
        LOGGER.info("info级别的日志");
        LOGGER.warn("warn级别的日志");
        LOGGER.error("error级别的日志");
    }
}


3.2、代码示例


logback.xml


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!--
      CONSOLE :表示当前的日志信息是可以输出到控制台的。
  -->
  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
      <!--输出流对象 默认 System.out 改为 System.err-->
      <target>System.out</target>
      <encoder>
          <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度
              %msg:日志消息,%n是换行符-->
          <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level]  %c [%thread] : %msg%n</pattern>
      </encoder>
  </appender>
  <!-- File是输出的方向通向文件的 -->
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <encoder>
          <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
          <charset>utf-8</charset>
      </encoder>
      <!--日志输出路径-->
      <file>C:/code/itheima-data.log</file>
      <!--指定日志文件拆分和压缩规则-->
      <rollingPolicy
              class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
          <!--通过指定压缩文件名称,来确定分割文件方式-->
          <fileNamePattern>C:/code/itheima-data2-%d{yyyy-MMdd}.log%i.gz</fileNamePattern>
          <!--文件拆分大小-->
          <maxFileSize>1MB</maxFileSize>
      </rollingPolicy>
  </appender>
  <!--
  level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
 , 默认debug
  <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
  -->
  <root level="DEBUG">
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="FILE" />
  </root>
</configuration>

LogDemo.java

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Scanner;
public class  {
  //获取日志对象
  private static final Logger LOGGER = LoggerFactory.getLogger(LogDemo.class);
  public static void main(String[] args) {
      //打日志 --- 类似于写输出语句
      Scanner sc = new Scanner(System.in);
      System.out.println("请输入您的姓名");
      LOGGER.debug("用户开始输入信息了");
      String name = sc.nextLine();
      //System.out.println(name);
      LOGGER.info("用户输出录入姓名为:" + name);
      System.out.println("请输入您的年龄");
      String age = sc.nextLine();
      try {
          int ageInt = Integer.parseInt(age);
          LOGGER.info("用户输入的年龄格式正确" + age);
      } catch (NumberFormatException e) {
          LOGGER.info("用户输入的年龄格式错误" + age);
      }
  }
}


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
Java Apache 开发工具
【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
|
23天前
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
30 2
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
|
3月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
3月前
|
Java Linux C++
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
|
4月前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
294 5
|
4月前
|
XML Java 测试技术
《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)
【7月更文挑战第9天】在Java项目中,使用Logback配置可以实现日志按照不同包名输出到不同的文件,并且根据日志级别分开记录。
92 4
|
4月前
|
存储 消息中间件 运维
使用Java实现分布式日志系统
使用Java实现分布式日志系统