JavaSE-日志

news2024/11/26 20:30:56

在这里插入图片描述

世上只有想不通的人,没有走不通的路。

文章目录

      • 1. 日志概述
      • 2. Logback日志框架
      • 3. Logback快速入门
      • 4. Logback配置详解
        • 输出位置设置
        • 日志级别设置


1. 日志概述


通过日志可以查看程序运行的过程和详情。

输出语句的弊端:

  • 信息只能展示在控制台。
  • 不能将其记录到其他的位置(文件,数据库)。
  • 想取消记录的信息需要修改源代码才可以完成。

日志技术具备的优势:

  • 可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。
  • 可以随时以开关的形式控制是否记录日志,无需修改源代码。
image-20220706204732577

体系结构:

image-20220706205034782

2. Logback日志框架


Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好。

官方网站:https://logback.qos.ch/index.html

image-20220706211113103

Logback是基于 ”slf4j的日志规范 “ 实现的框架。

logback 分为三个技术模块: logback-core、logback-classic 和 logback-access。

  • logback-core 模块为其他两个模块奠定了基础,必须有。
  • logback-classi 它是log4j的一个改良版,同时它完整实现了slf4j API。
  • logback-access 模块与 Tomcat 和 Jetty 等 Servlet 容器集成,以提供 HTTP 访问日志功能。

使用Logback需要使用哪几个模块,各自的作用是什么?

  • slf4j-api:日志规范。
  • logback-core:基础模块。
  • logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j APl。

3. Logback快速入门


使用步骤如下:

1、在项目下新建文件夹lib,导入logback相关的jar包到该文件夹下,并添加到项目依赖库中去。

image-20220707094520543

image-20220707095225947

在 ‘’Project Structure‘’— “Libraries ” 中查看添加的jar包。

image-20220707095511949


2、将Logback的核心配置文件 logback.xml 直接拷贝到src目录下(存放源码的目录)。

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{yyyy-MM-dd HH:mm:ss.SSS} 表示日期时间,
                        %-5level    取日志级别(debug、info、error等等),
                        %c          取类(在哪个类上面打印日志),
                        %thread     表示线程名(在哪个方法执行),
                        %msg        取日志信息,
                        %n          是换行符 不会用就去百度一下logback的日志格式
             -->
            <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>
            <!-- 日志文件编码utf-8 -->
            <charset>utf-8</charset>
        </encoder>
        <!-- 日志输出路径 -->
        <file>E:/Code/MyProject/java-study/JavaSE/helloworld-java/out/data.log</file>
        <!-- 指定日志文件拆分和压缩规则 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 通过指定压缩文件的名称,来确定分割文件方式 -->
            <fileNamePattern>E:/Code/MyProject/java-study/JavaSE/helloworld-java/out/data-%d{yyyy-MMdd}.log.zip
            </fileNamePattern>
            <!-- 文件拆分大小 -->
            <maxFileSize>1MB</maxFileSize>
        </rollingPolicy>
    </appender>


    <!--
        level:用来设置打印级别,大小写无关:TRACE,DEBUG,INFO,WARN,ERROR,ALL和OFF,默认debug

		TRACE < DEBUG < INFO < WARN < ERROR,如果日志级别是info,表示大于等于info级别的日志

        <root>可以包含零个或多个<appender-ref>元素,表示当前日志在哪个位置下输出。
     -->
    <root level="ALL">
        <!-- 注意:如果这里不配置关联打印位置,该位置将不会记录日志 -->
        <appender-ref ref="CONSOLE"/> <!--控制台打印日志-->
        <appender-ref ref="FILE"/>    <!--文件打印日志-->
    </root>
</configuration>

image-20220707101703714


3、在代码中获取日志对象

public static final Logger LOGGER= LoggerFactory.getLogger("要记录的类对象");

image-20220707103011145


4. Logback配置详解


Logback日志系统的特性都是通过核心配置文件logback.xml控制的。

输出位置设置

  • 通过logback.xml 中的 <append> 标签可以设置输出位置和日志信息的详细格式。

  • 通常可以设置2个日志输出位置:一个是控制台、一个是系统文件

输出到控制台的配置:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

输出到系统文件的配置:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

最后在打印级别中配置输出位置。

<root level="ALL">
<!-- 注意:如果这里不配置关联打印位置,该位置将不会记录日志 -->
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>    
</root>

日志级别设置

如果系统上线后只想记录一些错误的日志信息或者不想记录日志了,怎么办?

  • 可以通过设置日志的输出级别来控制哪些日志信息输出或者不输出。

  • Logback日志级别:TRACE < DEBUG < INFO < WARN < ERROR;默认级别是debug(忽略大小写),对应其方法。

  • 日直级别的作用:用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息。

  • ALL 和 OFF 分别是打开全部日志信息和关闭全部日志信息。

  • 具体在 <root level="INFO"> 标签的level属性中设置日志级别。(ALL、OFF、INFO、DEBUG、ERROR等等)

image-20220707140416271

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/978447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java读取服务器数据包并下载至本地目录

jsch包如果没有的话&#xff0c;可评论联系我&#xff0c;我私发给你&#xff0c;或者通过https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.55进行下载&#xff0c;添加至工程目录 package com.hbisdt.dqbasic.modular.util;import com.jcraft.jsch.*;import java.i…

OpenShift 4 - 利用 OpenShift 的 OAuth Proxy 实现应用身份认证

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.13 的环境中验证 文章目录 部署测试应用只有认证用户才能访问只有有权的用户才能访问使用 ServiceAccount 访问参考 说明&#xff1a; 本文需要集群中除了管理员外还有一个一般用户。另外除…

Leetcode 1486.数组异或操作

给你两个整数&#xff0c;n 和 start 。 数组 nums 定义为&#xff1a;nums[i] start 2*i&#xff08;下标从 0 开始&#xff09;且 n nums.length 。 请返回 nums 中所有元素按位异或&#xff08;XOR&#xff09;后得到的结果。 示例 1&#xff1a; 输入&#xff1a;n 5, …

NPM 常用命令(四)

目录 1、npm diff 1.1 描述 1.2 过滤文件 1.3 配置 diff diff-name-only diff-unified diff-ignore-all-space diff-no-prefix diff-src-prefix diff-dst-prefix diff-text global tag workspace workspaces include-workspace-root 2、npm dist-tag 2.1 常…

79 # koa 相应结果设置

返回的类型可能是文件流&#xff0c;或者是对象的等方式&#xff0c;需要我们对 body 的类型进行判断在返回。 判断是否是 string 或者 buffer 、流、对象 if (typeof body "string" || Buffer.isBuffer(body)) {res.end(body); } else if (body instanceof Strea…

大模型参数高效微调技术原理综述(三)-P-Tuning、P-Tuning v2

随着&#xff0c;ChatGPT 迅速爆火&#xff0c;引发了大模型的时代变革。然而对于普通大众来说&#xff0c;进行大模型的预训练或者全量微调遥不可及。由此&#xff0c;催生了各种参数高效微调技术&#xff0c;让科研人员或者普通开发者有机会尝试微调大模型。 因此&#xff0c…

面试题速记:JavaScript有哪些数据类型,它们的区别是?

JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f; JavaScript共有八种数据类型&#xff0c;分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是ES6 中新增的数据类型&#xff1a; ●Symbol 代表创建后独一无二…

vue3 element - plus 安装使用教程

下边是安装教程 element - plus 是针对 vue3 开发 一个 Vue 3 UI 框架 | Element Plus (element-plus.org)https://element-plus.org/zh-CN/ 安装 element - plus ui 库 # 选择一个你喜欢的包管理器# NPM $ npm install element-plus --save# Yarn $ yarn add elemen…

python 学习笔记(4)—— webdriver 自动化操作浏览器(基础操作)

安装 web driver&#xff1a; 使用 driver 前&#xff0c;需要下载与浏览器版本相对应的 driver。如要在 Chrome 浏览器上操作&#xff0c;就要下载Chrome Driver。 几个常用浏览器的参考和下载地址&#xff1a; Edge Driver&#xff1a;https://developer.microsoft.com/en…

C++内存区堆和栈

在C中&#xff0c;内存分成5个区&#xff0c;堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈&#xff0c;就是那些由编译器在需要的时候分配&#xff0c;在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆&#xff0c;就是那些…

《Linux从练气到飞升》No.21 Linux简单实现一个shell

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

​​​​​​​光伏智慧设施休息区

随着人们环保意识的日益增强&#xff0c;光伏智慧景观渐渐出现在大众的视野&#xff0c;成为低碳城镇建设的新景观、新亮点。打造光伏智慧设施休息区&#xff0c;既能满足游客休息纳凉&#xff0c;还能设置手机相机等充电区域。此设备组还可提供夜间照明灯、音乐广播、多媒体广…

flask中的操作数据库的插件Flask-SQLAlchemy

1、ORM 框架 Web 开发中&#xff0c;一个重要的组成部分便是数据库了。Web 程序中最常用的莫过于关系型数据库了&#xff0c;也称 SQL 数据库。另外&#xff0c;文档数据库&#xff08;如 mongodb&#xff09;、键值对数据库&#xff08;如 redis&#xff09;近几年也逐渐在 w…

普通平衡树 Splay

Splay 简介 Splay&#xff08;伸展树&#xff09;&#xff0c;又叫做分裂树&#xff0c;是一种自调整形式的二叉查找树&#xff0c;满足二叉查找树的性质&#xff1a;一个节点左子树的所有节点的权值&#xff0c;均小于这个节点的权值。且其右子树所有节点的权值&#xff0c;均…

IEC 62368-1:2023(第4版)《音频视频、信息和通信设备 第1部分安全要求》标准发布,IEC 62368-1第四版标准更新与变化

2023年05月26日&#xff0c;IEC 62368-1:2023 《音频视频、信息和通信设备 第1部分安全要求》第4版标准正式发布&#xff0c;2023年08月18日&#xff0c;IECEE又发布了TRF模板&#xff0c;为新版标准的实施和应用做好了准备. 下载地址 &#xff1a; https://download.csdn.net…

【个人博客系统网站】项目的发布 · 通过公网IP访问我们的网站 · 思考总结

【JavaEE】进阶 个人博客系统&#xff08;6&#xff09; 文章目录 【JavaEE】进阶 个人博客系统&#xff08;6&#xff09;1. 项目发布1.1 后端代码修改1.1.1 数据库密码1.1.2 端口号修改1.1.3 文件保存地址修改1.1.4 静态资源映射修改 1.2 云服务器1.2.1 建库建表1.2.2 必要…

算法通关村第十三关——溢出问题处理模板

前言 溢出问题是面试当中输出涉及到数字的一个需要特别注意的地方&#xff0c;典型的题目有三个&#xff1a;数字反转&#xff0c;将字符串转成数字和回文数。 1.整数反转 力扣7题&#xff0c;给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。…

Vue + Element UI 前端篇(十五):嵌套外部网页

Vue Element UI 实现权限管理系统 前端篇&#xff08;十五&#xff09;&#xff1a;嵌套外部网页 嵌套外部网页 在有些时候&#xff0c;我们需要在我们的内容栏主区域显示外部网页。如查看服务端提供的SQL监控页面&#xff0c;接口文档页面等。 这个时候就要求我们的导航菜…

Intel OneAPI黑客松记录

题目&#xff1a; 生成2048*2048个随机单精度实数; 实现两维Real to complex FFT参考代码; 使用OneMKL计算两维Real to complex FFT; 对两维FFT输出数据进行全数据比对&#xff1b; 平均性能数据比对,输出FFT参考代码平均运行时间和oneMKL FFT平均运行时间。 代码&#x…

12 - 多线程之锁优化(上):深入了解Synchronized同步锁的优化方法

在并发编程中&#xff0c;多个线程访问同一个共享资源时&#xff0c;我们必须考虑如何维护数据的原子性。在 JDK1.5 之前&#xff0c;Java 是依靠 Synchronized 关键字实现锁功能来做到这点的。Synchronized 是 JVM 实现的一种内置锁&#xff0c;锁的获取和释放是由 JVM 隐式实…