日志及其框架

日志技术的概述

日志

生活中的日志: 生活中的日志就好比日记,可以记录你生活的点点滴滴。

程序中的日志: 程序中的日志可以用来记录程序运行过程中的信息,并可以进行永久存储。

以前记录日志的方式(输出语句)的弊端

Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
String number = sc.nextLine();
try {
    int result = Integer.parseInt(number);
    System.out.println("输入的数字为" + result);
} catch (NumberFormatException e) {
    System.out.println("输入的数字有误,请输入一个整数");
}

信息只能展示在控制台

不能将其记录到其他的位置(文件,数据库)

想取消记录的信息需要修改代码才可以完成

日志技术具备的优势

可以将系统执行的信息选择性地记录到指定的位置(控制台、文件中、数据库中)。

可以随时以开关的形式控制是否记录日志,无需修改源代码。

日志技术体系结构

日志规范:一些接口,提供给日志的实现框架设计的标准。

日志框架:牛人或者第三方公司已经做好的日志记录实现代码,后来者直接可以拿去使用。

因为对Commons Logging的接口不满意,有人就搞了SLF4J。因为对Log4j的性能不满意,有人就搞了Logback。 

Logback概述

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

官方网站:Logback Home

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

Logback主要分为三个技术模块:  

        logback-core: logback-core 模块为其他两个模块奠定了基础,必须有。

        logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API。

        logback-access 模块与 Tomcat 和 Jetty 等 Servlet 容器集成,以提供 HTTP 访问日志功能。 

Logback快速入门

需求:导入Logback日志技术到项目中,用于记录系统的日志信息。

步骤:

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

②:将Logback的核心配置文件logback.xml直接拷贝到src目录下(必须是src下)。

<?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="ALL">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE" />
    </root>
</configuration>

 ③:在代码中获取日志的对象

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

④:使用日志对象LOGGER调用其方法输出日志信息

Logback配置详解-输出位置、格式设置

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

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

输出位置(仅对输出位置做具体阐述,不是决定日志将输出到哪里):

        控制台:<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

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

日志信息的详细格式见上面logback.xml的内容。

Logback配置详解-日志级别设置及日志将输出到哪里

级别程度依次是:TRACE< DEBUG< INFO<WARN<ERROR  ; 默认级别是debug(忽略大小写),对应其方法。

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

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

具体在<root>标签的level属性中设置日志级别以及在子标签中配置日志输出位置:

<root level=“INFO">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE" />
</root>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么要安装田间气象站?

随着农业科技的发展&#xff0c;越来越多的农民朋友开始关注如何利用科技手段来提高农业生产效益。其中&#xff0c;安装田间气象站成为了许多农民朋友的选择之一&#xff0c;为什么会有这种情况呢&#xff1f;安装田间气象站会带来哪些优势呢&#xff1f; 一、了解气候变化 气…

响应式珠宝首饰展示网站模板源码带后台

模板信息&#xff1a; 模板编号&#xff1a;6201 模板编码&#xff1a;UTF8 模板颜色&#xff1a;黑白 模板分类&#xff1a;服饰、箱包、礼品、玩具 适合行业&#xff1a;珠宝饰品类企业 模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xf…

实现资产与财务的无缝对接,易点易动固定资产管理系统帮您消除数据难题

在现代企业中&#xff0c;固定资产管理和财务管理是两个密不可分的环节。然而&#xff0c;许多企业面临着固定资产和财务数据不一致、不准确的问题&#xff0c;给企业的决策和运营带来了困扰。为了解决这一难题&#xff0c;易点易动固定资产管理系统应运而生。该系统通过实现资…

基于C#开发的任天堂 Switch 开源模拟器

今天给大家推荐一款基于C#开发的任天堂 Switch 开源模拟器&#xff0c;可方便开发人员来测试游戏&#xff0c;也用于娱乐。 01 项目简介 Ryujinx 是一个开源的任天堂 Switch 模拟器&#xff0c;可以在 PC 上模拟运行 Switch 游戏。采用C#开发&#xff0c;基于 .NET Core技术框…

3.6、linux调试器:gdb

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 背景 程序员在做项目写代码时&#xff0c;每完成一个功能&#xff0c;需要自己先测试一下&#xff0c;看看能不能跑之类的&#xff0c;然后交给测试人员&#xff0c;但是测试人员就代表着用户&#xff0c;用户不需要调试&am…

区块链链游合约系统开发项目模式技术方案

​随着区块链技术的发展&#xff0c;链游合约系统开发逐渐成为了一个备受关注的项目。本文将探讨区块链链游合约系统开发项目的技术方案&#xff0c;包括项目背景、开发目标、技术架构、系统流程、安全措施等方面的内容。 一、项目背景 链游是一种基于区块链技术的游戏&#xf…

压测必经之路,Jmeter分布式压测教程!

01、分布式压测原理 Jemter分布式压测是选择其中一台作为调度机&#xff08;master&#xff09;&#xff0c;其他机器作为执行机&#xff08;slave&#xff09;&#xff1b;当然一台机器也可以既做调度机&#xff0c;也做执行机。 调度机执行脚本的时候&#xff0c;master将会…

NFTScan | 11.06~11.12 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.11.06~ 2023.11.12 NFT Hot News 01/ 《辛普森一家》提及 NFT 及区块链&#xff0c;相关 NFT 地板价涨至 0.35 ETH 11 月 6 日&#xff0c;据 Coindesk 报道&#xff0c;美国时间周…

【算法与数据结构】491、LeetCode递增子序列

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题和【算法与数据结构】78、90、LeetCode子集I&#xff0c; II中90.子集II问题有些类似&#xff0c;…

车载测试和软件测试有什么区别

车载测试和软件测试都是在汽车电子系统中进行的测试工作&#xff0c;但是它们之间有一些不同之处。 1. 测试对象不同&#xff1a;车载测试是在汽车电子系统中进行的测试工作&#xff0c;测试对象是整个车辆上的各种部件和系统的集成。而软件测试是针对汽车电子系统中的软件程序…

前端框架图谱

以上图谱基于个人经验总结&#xff0c;比如小程序、第三方平台等未在其中有所体现

【学习辅助】Axure手机时间管理APP原型,告别手机控番茄任务模板

作品概况 页面数量&#xff1a;共 30 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;时间管理、系统工具 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本品为「手机时间管理」APP原型&#xff0c;…

Django——路由层

一. 路由匹配 1. 路由匹配注意事项 urlpatterns [url(r^admin/, admin.site.urls),# 首页url(r^$,views.home),# 路由匹配url(r^test/$,views.test),url(r^testadd/$,views.testadd),# 尾页(了解): 后期使用异常捕获处理, 这样的尾页让django的第二次在路径中斜杠APPEND_SL…

【深度学习实验】网络优化与正则化(三):随机梯度下降的改进——Adam算法详解(Adam≈梯度方向优化Momentum+自适应学习率RMSprop)

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正&#xff1a;动量法Momen…

excel中通过ROW函数返回引用的行号

例如&#xff0c;想引用B3的行号&#xff08;行号应该是3&#xff09;&#xff1a; 鼠标点在想输入函数的单元格&#xff1a; 插入-》函数&#xff1a; 选择ROW函数&#xff1a; 点击“继续”&#xff0c;然后点击红框圈出来的按钮&#xff1a; 鼠标点击B3单元格&…

thinkphp8 多级控制器调用

在使用这个目录的时候正常访问时 http://tp.com/index.php/user2.login/index, 这个多级目录时不允许使用的&#xff0c;想要使用就的使用路由 在route/app.php 里面配置&#xff1a;Route::get(user2/login,user2.Login/index); 第一个参数时外部访问参数&#xff0c;第二个是…

AD教程 (十四)常见IC类封装的创建

AD教程 &#xff08;十四&#xff09;常见IC类封装的创建 新建IC类PCB封装&#xff0c;并双击命名 放置焊盘&#xff0c;从datasheet上找到对应焊盘大小 如下图&#xff0c;焊盘宽度为b&#xff0c;就是0.51mm&#xff0c;焊盘长度为&#xff08;E1-E&#xff09;/2&#xff0…

VB.net TCP服务端监听端口接收客户端RFID网络读卡器上传的读卡数据

本 示例使用设备介绍&#xff1a;WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) Imports System.Threading Imports System.Net Imports System.Net.Sockets Public Class Form1Dim ListenSocket As SocketDim Dict As New Dictionary(Of…

ultrascale+mpsoc系列的ZYNQ中DDR4参数设置说明

ultrascalempsoc系列的ZYNQ中DDR4参数设置说明 标题1 概述标题2 讲述平台标题3 ZYNQ的DDR设置界面参数标题4 DDR参数界面说明如下 标题1 概述 本文用于讲诉ultrascalempsoc系列中的ZYNQ的DDR4的参数设置与实际硬件中的DDR选型之间的关系&#xff0c;为FPGA设计人员探明道路。 …

云汇优想:抖音矩阵系统有哪些类型?

抖音作为中国最热门的短视频分享平台之一&#xff0c;不断推陈出新&#xff0c;在内容管理和展示方面也进行了创新。其中&#xff0c;抖音矩阵系统是一项重要的功能&#xff0c;它提供了多种类型的矩阵&#xff0c;帮助用户更好地管理和展示自己的内容。那么&#xff0c;抖音矩…