关于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 Spring Dubbo三种SPI机制的区别

    Java Spring Dubbo三种SPI机制的区别,主要涉及到Java开发领域中SPI(Service Provider Interface)的概念和Dubbo框架中的三种不同的SPI机制。下面我会针对这些内容进行详细讲解。 什么是SPI SPI(Service Provider Interface),中文名为服务提供者接口,是Java提供的一种面向接口…

    Java 2023年5月19日
    00
  • turn.js异步加载实现翻书效果

    下面是使用turn.js异步加载实现翻书效果的完整攻略: 1. 引入turn.js 首先,需要在HTML文件中引入turn.js文件和其依赖的jQuery库。可以在turn.js官网下载代码。 <!– 引入jQuery库 –> <script src="https://ajax.googleapis.com/ajax/libs…

    Java 2023年6月15日
    00
  • java如何把逗号分隔的String字符串转int集合

    要把逗号分隔的字符串转换为整数集合,可以使用Java中的split()方法将字符串分割,然后使用Integer.parseInt()方法将分割后的字符串转换为整数,最后将整数添加到集合中。以下是完整的攻略: 步骤一:将逗号分隔的字符串转为字符串数组 使用String类的split()方法可以将逗号分隔的字符串转化为字符串数组。 String str = &q…

    Java 2023年5月20日
    00
  • Java8新特性Lambda表达式的一些复杂用法总结

    Java8新特性Lambda表达式的一些复杂用法总结 在Java8中,Lambda表达式的出现为我们带来了更简洁、更高效的编程方式。除了基本语法外,Lambda表达式还有一些复杂的用法,本文将对这些用法进行总结,并提供两个示例来说明。 一、函数接口 Lambda表达式的本质是函数式编程,因此我们需要了解函数接口。函数接口是指只有一个抽象方法的接口。在Java…

    Java 2023年5月26日
    00
  • Java 实现定时任务的三种方法

    以下是对“Java 实现定时任务的三种方法”的详细讲解: Java 实现定时任务的三种方法 在实际开发中,经常会遇到需要在固定时间或间隔时间内执行任务的情况,这时候需要使用定时任务来完成。Java 提供了很多种方式来实现定时任务,本文将介绍三种比较常用的方法。 一、使用 Timer/TimerTask 类实现定时任务 1.1 Timer/TimerTask …

    Java 2023年5月18日
    00
  • Java创建文件夹及文件实例代码

    Java创建文件夹及文件实例代码可以通过Java提供的File类来实现,具体步骤如下: 创建文件夹 首先,我们需要创建一个File对象,并指定要创建的文件夹路径: java File dir = new File(“D:\\test\\folder1”); 其中,”D:\test\folder1″是要创建的文件夹路径,需要注意的是,在Java中需要使用”\\…

    Java 2023年5月20日
    00
  • 这一次搞懂Spring自定义标签以及注解解析原理说明

    下面是详细讲解“这一次搞懂Spring自定义标签以及注解解析原理说明”的完整攻略: 什么是自定义标签以及注解解析 Spring框架提供了一些便捷的标签和注解用于配置应用程序上下文,可以帮助我们更方便地进行Spring的配置和管理。其中,自定义标签和注解解析是Spring框架中很重要的概念,它们可以帮助我们通过定义自己的标签或注解,来扩展Spring框架的功能…

    Java 2023年5月31日
    00
  • C#中C/S端实现WebService服务

    针对这个问题,我为您详细解析一下C#中C/S端实现WebService服务的完整攻略并提供两个示例。 什么是WebService WebService(Web服务)是一种使用XML协议来进行应用程序之间的交流的服务,通过SOAP(简单对象访问协议)和HTTP(超文本传输协议) 来实现。WebService通常被用于不同平台之间的数据交互,例如Java web…

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