关于logBack配置日志文件及编码配置的问题

关于logBack配置日志文件及编码配置的完整攻略如下:

1. 导入Logback依赖

首先需要在项目中导入Logback依赖,可以在pom.xml中进行配置:

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

2. 配置Logback日志输出文件

在项目的src/main/resources目录下创建logback.xml文件,并进行以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>log/myapp.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>log/myapp.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>5MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>

        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="Console"/>
        <appender-ref ref="File"/>
    </root>
</configuration>

上述配置使用了两个Appender,分别是ConsoleAppender和RollingFileAppender。

其中ConsoleAppender会把日志信息打印到控制台上。而RollingFileAppender则会把日志信息写入到磁盘文件中,此处的日志文件配置在log/myapp.log中。

rollingPolicy会有两个属性,fileNamePattern表示日志文件命名规则,此处的命名规则示例是log/myapp.%d{yyyy-MM-dd}.%i.log。maxFileSize表示日志文件最大大小为5MB。maxHistory表示历史日志保留的天数,这里是30天。totalSizeCap表示日志文件的最大容量,此处设置了10GB,当磁盘空间不足时,会删除最早的日志文件来释放空间。

这样配置后,就可以在项目的log目录下查看到日志文件了。

3. 配置日志的编码方式

在上述logback.xml中的encoding标签,可以进行配置日志文件的编码方式。

<encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    <charset>utf8</charset>
</encoder>

在上述代码中,可以看到charset进行了设置,将日志文件的编码方式设置为UTF-8。

设置编码方式的目的是为了避免在实际使用中的乱码问题。

示例1:

比如我们在业务中使用logback将订单信息等写入文件,如下:

String orderNum = "W001";
String message = "订单: "+ orderNum + " 支付成功!";
Logger logger = LoggerFactory.getLogger(OrderController.class);
logger.info(message);

则最终的日志文件输出结果如下:

16:10:08.254 [http-nio-8090-exec-1] INFO  com.example.controller.OrderController - 订单: W001 支付成功!

示例2:

再比如我们在业务中使用logback将异常信息写入错误日志文件,如下:

try {
    // ...
} catch (Exception e) {
    log.error("调用接口发生异常", e);
}

则最终的错误日志输出结果如下:

16:23:37.140 [http-nio-8090-exec-1] ERROR com.example.service.UserServiceImpl - 调用接口发生异常
java.lang.NullPointerException: null
    at com.example.service.UserServiceImpl.getUserById(UserServiceImpl.java:18)
    at com.example.controller.UserController.getUserById(UserController.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

以上是关于Logback配置日志文件及编码配置的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于logBack配置日志文件及编码配置的问题 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java对象初始化代码详解

    Java对象初始化代码详解 在Java中,创建一个对象时需要初始化其各个属性,保证在其它地方使用时能够正常执行。对象初始化通常包含在构造函数中,而构造函数是一个特殊的方法,其名称与类名相同,用于创建对象并初始化。 该文将从以下几个方面详细讲解Java对象初始化代码的实现。 对象属性初始化 在Java中,为了保证对象能够正常使用,需要对其各个属性进行初始化。J…

    Java 2023年5月23日
    00
  • js布局实现单选按钮控件

    JS布局实现单选按钮控件的完整攻略主要包括以下几个步骤: 创建HTML结构,在结构中添加单选按钮控件需要的元素,如单选按钮的label和input元素。 <div id="radioGroup"> <label> <input type="radio" name="color&q…

    Java 2023年6月15日
    00
  • 什么是对象的生命周期?

    以下是关于“什么是对象的生命周期?”的完整使用攻略: 1. 对象的生命周期 在Java中,对象的生命周期指对象从创建到销毁的整个过程。对象的生命周期包括以下几个阶段: 创建阶段:在Java中,使用new关键字创建对象,JVM会在堆内存中为对象分配内存空,并调用对象的构造函数进行初始化。在创建阶段对象的状态为“创建”。 使用阶段:在Java中,对象被创建后,可…

    Java 2023年5月12日
    00
  • Java Springboot之Spring家族的技术体系

    Java Springboot之Spring家族的技术体系 什么是Spring家族 Spring家族是一个庞大的Java生态圈,以Spring Framework为核心,囊括了Spring Boot、Spring Cloud、Spring Data、Spring Security等许多重要的技术板块。Spring家族以轻量级的理念为基础,提供了丰富的技术和工…

    Java 2023年5月15日
    00
  • Struts1之url截取_动力节点Java学院整理

    以下是详细的讲解“Struts1之url截取_动力节点Java学院整理”的攻略。 简介 在Struts1中,URL截取是非常重要的特性之一。通过URL截取,我们可以将一个请求映射到合适的Action上。本文将详细介绍URL截取的相关知识。 步骤一:配置Filter 要使用URL截取功能,需要在web.xml文件中添加Filter配置。配置如下: <fi…

    Java 2023年5月20日
    00
  • Java实现分页代码

    下面是Java实现分页代码的完整攻略。 确定分页参数 Java实现分页代码的第一步就是要确定分页参数,常见的分页参数有:当前页码、每页显示的记录数、总记录数、总页数等。 计算总页数 需要先根据每页记录数和总记录数计算出总页数。计算方法是将总记录数除以每页显示的记录数,如果余数大于0,则总页数需要加1。 // 计算总页数 int totalPage = tot…

    Java 2023年5月18日
    00
  • Java Optional实践(小结)

    Java Optional实践(小结) 什么是Java Optional? Optional 是 Java 8 引入的一个新特性,可以作为一种容器,对空值的处理提供更为优美的解决方案。 通常情况下我们在使用 Java 的时候经常会遇到 NullPointerException,就比如一个变量为 null,我们调用其方法时就可能会抛出该异常。而 Optiona…

    Java 2023年5月26日
    00
  • Java 自定义动态数组方式

    Java中没有内置的动态数组类,需要我们自己实现。下面是Java自定义动态数组的完整攻略。 需求分析 我们需要实现一个具有动态扩容功能的数组。当数组空间不够时,需要动态扩充,保证数据能够正常存储。 实现步骤 定义一个数组类,包含数组容量大小、元素个数和数组本身三个属性。 java public class CustomArray<T> { pri…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部