当前位置: 代码迷 >> 综合 >> Logback日志乱码,指定日志输出路径,日志彩色输出
  详细解决方案

Logback日志乱码,指定日志输出路径,日志彩色输出

热度:34   发布时间:2024-02-02 16:59:56.0

Logback日志乱码:

处理方案1:

<encoder><charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>

方案2:

如果你的服务器系统编码不是UTF8 方案1,配置了还是会有问题。

那是去掉  <charset >吧。(反正我这边服务器去掉这个配置好了)

 

Logback日志指定输出位置(tomcat/logs):

默认的日志数据是跟随项目源码。

如果想指定输出到 Tomcat里面

可以添加如下配置。

 <property name="LOG_HOME" value="${catalina.home}/logs"/>

其中 ${catalina.home} 为Tomcat的根目录,然后 拿这个变量 去定义日志的位置。

 

日志彩色输出

首先,新增输出格式:

<property name="CONSOLE_LOG_PATTERN"value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />

然后,使用这个格式:

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!--设置输出格式--><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>${CONSOLE_LOG_PATTERN}</pattern></encoder></appender>

 

完整的logback 日志如下。【仅供参考】(生产环境已经在使用)

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><!-- logback-spring 的文件可以基于环境配置,相对路径会默认成项目根目录开始 --><property name="LOG_HOME" value="${catalina.home}/logs"/><property name="CONSOLE_LOG_PATTERN"value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" /><!-- 日志展示规则,比如彩色日志、异常日志等 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /><conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /><conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /><!--控制台输出appender--><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!--设置输出格式--><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>${CONSOLE_LOG_PATTERN}</pattern></encoder></appender><!--文件输出,时间窗口滚动--><appender name="timeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender"><!--日志名,指定最新的文件名,其他文件名使用FileNamePattern --><File>${LOG_HOME}/recharge-logs/recharge.log</File><!--文件滚动模式--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名,可设置文件类型为gz,开启文件压缩--><FileNamePattern>${LOG_HOME}/timeFile/info.%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory><!--按大小分割同一天的--><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>200MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><!--输出格式--><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!--指定基础的日志输出级别--><root level="INFO"><!--appender将会添加到这个loger--><appender-ref ref="console"/><appender-ref ref="timeFileOutput"/></root><!-- 单独指定某个包的日志打印,级别,appender等   --><logger name="org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor" level="DEBUG" addtivity="true"><appender-ref ref="console"/></logger></configuration>