Logback配置文件这么写,还说你不会整理日志?

当我们开发的应用程序或者服务运行起来后,往往需要记录一些关键的操作日志,或者是出现了异常、错误信息等情况时需要将这些信息记录下来方便我们排查问题。因此,日志对于软件开发和运维是非常重要的。进行日志管理的方式有多种,而 Logback 是一款非常优秀、流行的日志框架。

在项目中使用 Logback 的时候,首先需要配置 Logback 的配置文件。下面是一个完整的 “Logback配置文件这么写,还说你不会整理日志?”攻略:

步骤一:导入依赖

如果是基于 Maven 项目进行开发,需要在 pom.xml 文件中导入 logback-classic 和 logback-core 依赖,如下所示:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
</dependency>

步骤二:编写 Logback 配置文件

在 src/main/resources 目录下,新建一个名为 logback.xml 的文件,然后按照下面的样例进行配置。该配置文件包括了以下几个部分:

1、定义日志输出格式

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{35}:%L - %msg%n</pattern>

其中,%d 表示日期时间、%level 表示日志级别、%logger 表示日志名称、%L 表示代码行号、%msg 表示日志消息、%n 表示换行符。这些参数可以根据需要进行定制。

2、定义日志输出的文件名及路径

输出日志文件的路径由 ${LOG_PATH} 定义,可以在 JVM 启动时通过系统变量进行设置。输出日志文件名中包含了 ${DATE} 和 ${PID} 两个变量,它们分别表示日期时间和进程 ID。

<file>${LOG_PATH}/log_${DATE}_${PID}.log</file>

3、定义日志之间的分割方式

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <fileNamePattern>${LOG_PATH}/log_%d{yyyyMMdd_HHmmss.SSS}_pid${PID}.%i.log.gz
    </fileNamePattern>
    <maxFileSize>10MB</maxFileSize>
    <maxHistory>15</maxHistory>
    <totalSizeCap>1GB</totalSizeCap>
    <cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>

这里使用了 SizeAndTimeBasedRollingPolicy,表示按照文件大小和时间来分割日志文件。maxFileSize 表示一个日志文件的大小,超过这个大小后就会分割成新的日志文件;maxHistory 表示最多保存的历史日志文件数量;totalSizeCap 表示最大保存日志文件占用的总磁盘空间;cleanHistoryOnStart 表示是否在启动时删除历史日志文件。

4、设置日志级别和输出目标

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/log_${DATE}_${PID}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}/log_%d{yyyyMMdd_HHmmss.SSS}_pid${PID}.%i.log.gz
        </fileNamePattern>
        <maxFileSize>10MB</maxFileSize>
        <maxHistory>15</maxHistory>
        <totalSizeCap>1GB</totalSizeCap>
        <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{35}:%L - %msg%n</pattern>
    </encoder>
</appender>

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

这里定义了一个名为 FILE 的 appender,使用 RollingFileAppender 实现将日志输出到文件中。同时设置了 root 的日志级别是 INFO,表示只输出 INFO 级别及以上的日志。

步骤三:使用 Logback 进行日志记录

在需要记录日志的地方,创建一个名为 logger 的对象,并使用该对象进行日志输出。

private static final Logger logger = LoggerFactory.getLogger(XXX.class);
logger.info("This is a info log message");
logger.warn("This is a warn log message");

这里直接使用 LoggerFactory 来创建 logger 对象,然后使用不同的级别来输出不同级别的日志信息。

示例说明一:将日志输出到控制台

将 Logback 配置文件中的 appender 改为如下配置,即可将日志信息输出到控制台:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{35}:%L - %msg%n</pattern>
    </encoder>
</appender>

示例说明二:根据不同的日志级别输出到不同的文件

将 Logback 配置文件中的 appender 改为如下配置,即可将不同的日志级别输出到不同的文件:

<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/info_${DATE}_${PID}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}/info_%d{yyyyMMdd_HHmmss.SSS}_pid${PID}.%i.log.gz
        </fileNamePattern>
        <maxFileSize>10MB</maxFileSize>
        <maxHistory>15</maxHistory>
        <totalSizeCap>1GB</totalSizeCap>
        <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>INFO</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{35}:%L - %msg%n</pattern>
    </encoder>
</appender>

<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/warn_${DATE}_${PID}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}/warn_%d{yyyyMMdd_HHmmss.SSS}_pid${PID}.%i.log.gz
        </fileNamePattern>
        <maxFileSize>10MB</maxFileSize>
        <maxHistory>15</maxHistory>
        <totalSizeCap>1GB</totalSizeCap>
        <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>WARN</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{35}:%L - %msg%n</pattern>
    </encoder>
</appender>

<root level="INFO">
    <appender-ref ref="INFO_FILE"/>
    <appender-ref ref="WARN_FILE"/>
</root>

这里定义了 INFO_FILE 和 WARN_FILE 两个 appender,分别表示输出 INFO 和 WARN 级别的日志,并将这两个 appender 关联到了 root 中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Logback配置文件这么写,还说你不会整理日志? - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 怎么显示隐藏文件

    如何显示或隐藏文件取决于你的操作系统。在本篇攻略中,我将为你介绍如何在 Windows、macOS 和 Linux 系统上显示和隐藏文件。 显示和隐藏文件(Windows) 在 Windows 上,可以使用以下两种方法显示和隐藏文件: 使用“文件资源管理器”(Windows 文件资源管理器)软件 使用 Windows 命令提示符 利用文件资源管理器显示隐藏文…

    其他 2023年4月16日
    00
  • Windows控制面板命令大全

    Windows控制面板命令大全攻略 什么是控制面板命令? 在 Windows 系统中,控制面板是重要的工具,能够让我们配置计算机的各种设置和选项。控制面板还包括一系列的命令,这些命令可以方便地配置计算机而不必打开控制面板。本篇攻略将详细介绍常用的 Windows 控制面板命令及其使用方法。 常见的控制面板命令 以下列出了控制面板常用的命令及其功能。 1. c…

    other 2023年6月26日
    00
  • pythontkinter教程-04:输入框

    Python Tkinter教程-04: 输入框 在Python Tkinter中,输入框是一种常用的用户界面元素,用于接收用户输入的文本。以下是Python Tkinter中输入框的详细攻略。 步骤1:创建输入框 Python Tkinter中,我们可以使用Entry类来创建一个输入框。以下是一个简单的示例: from tkinter import * r…

    other 2023年5月9日
    00
  • ubuntu 16.04 64位兼容32位程序三步曲

    当在Ubuntu 16.04 64位系统上运行32位程序时,可以按照以下三个步骤进行兼容设置: 步骤一:安装32位兼容库首先,需要安装32位兼容库以支持32位程序的运行。在终端中执行以下命令来安装32位兼容库: sudo dpkg –add-architecture i386 sudo apt-get update sudo apt-get install…

    other 2023年7月28日
    00
  • jQuery 禁止表单用户名、密码自动填充功能

    以下是详细讲解“jQuery 禁止表单用户名、密码自动填充功能”的完整攻略。 禁止表单自动填充的原因 表单自动填充功能可以帮助用户快捷地填写表单,但在一些场景下,比如登录表单、支付表单等安全性要求较高的表单中,自动填充功能会增加用户的信息泄露风险,因此有必要禁用这个功能。 禁用用户名、密码自动填充的方法 方法一:在HTML中添加autocomplete属性 …

    other 2023年6月27日
    00
  • Win7/Win8.1/Win10命令行配置静态IP地址方法

    Win7/Win8.1/Win10命令行配置静态IP地址方法攻略 在Windows 7、Windows 8.1和Windows 10操作系统中,你可以使用命令行来配置静态IP地址。下面是详细的步骤: 打开命令提示符:点击开始菜单,然后在搜索框中输入\”cmd\”,点击打开\”命令提示符\”。 查看当前网络适配器:在命令提示符中,输入以下命令并按下回车键: i…

    other 2023年7月30日
    00
  • 命令行清空或还原HOSTS文件内容(包括覆盖hosts)

    要清空或还原HOSTS文件内容(包括覆盖hosts),可以通过命令行来完成。下面是具体步骤: 运行命令提示符或 PowerShell,以管理员身份运行。 运行以下命令之一以备份当前HOSTS文件: shell copy c:\Windows\System32\drivers\etc\hosts c:\Windows\System32\drivers\etc\…

    other 2023年6月26日
    00
  • JS 插件dropload下拉刷新、上拉加载使用小结

    JavaScript 插件 dropload 的使用小结 简介 dropload 是一个帮助实现下拉刷新和上拉加载的 JavaScript 插件,简单易用,并提供了多种自定义配置和回调函数来满足不同需求场景的使用。在下面的介绍中,我们将详细讲解如何使用和配置 dropload。 安装 你可以从 GitHub 或者 npm 上找到 dropload,然后按照相…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部