关于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技术站