logback-spring.xml基本配置,可以输出方法和行号
问题背景
由于需要输出行号,查找代码中的打印处位置比较方便,所以使用了logbcak-spring,本来还给日志添加了漂亮的颜色,结果经过测试发现,加了颜色之后,linux存储的日志是不能显示颜色的,因此也不能识别颜色字符,就出现了乱码,但是 tail -f 实时打印是可以颜色显示的
- logback-spring.xml只有在加载spring的再启动
- tail -f 没有乱码
- 日志文件乱码
解决方案
- Springboot默认日志格式
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n
-
可以直接使用 application.yml 配置的值,在 logback.xml 这么书写
graylog:
host: 192.168.1.1
port: 1001
name: suolong
<springProperty scope="context" name="graylogHost" source="graylog.host"/>
<springProperty scope="context" name="graylogPort" source="graylog.port"/>
<springProperty scope="context" name="graylogName" source="graylog.name"/>
- 只是在 IDEA 控制台打印可以添加颜色的日志,可以自行更改颜色,比如 red 红色可以改成 blue 蓝色
- 其中反斜杠 \ 是转义的意思,下面是转义括号
%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) [%yellow(%thread)] %cyan(%logger{20}).%M\(%F:%L\): %msg%n
- 输出日志文件需要显示正常,就不能添加颜色打印,xml如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<!--可以写在项目路径下 value="${catalina.base}/logs"-->
<property name="BASE_PATH" value="/logs"/>
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--layout转换为字符串显示,encoder转换成字符数组,在转换成字节存储在文档-->
<layout class="ch.qos.logback.classic.PatternLayout">
<!--日期 日志等级 线程名 类路径 方法名 行号 打印信息 换行-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{20}.%M\(%F:%L\): %msg%n</pattern>
</layout>
</appender>
<appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{20}.%M\(%F:%L\): %msg%n</pattern>
</encoder>
<file>${BASE_PATH}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${BASE_PATH}/%d{yyyy-MM-dd}/app.%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Append>true</Append>
<file>${BASE_PATH}/app-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${BASE_PATH}/%d{yyyy-MM-dd}/app-error.%i.log</fileNamePattern>
<maxFileSize>500MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>
<![CDATA[[%d{yyyy-MM-dd HH:mm:ss.SSSZ} ] - %X{method} %X{requestURIWithQueryString} [ip=%X{remoteAddr}, ref=%X{referrer}, ua=%X{userAgent}, sid=%X{cookie.JSESSIONID}]%n %-5level %logger{35} - %m%n]]>
</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 异步输出 -->
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>20</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="appLogAppender"/>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<springProfile name="dev,prod">
<appender-ref ref="CONSOLE"/>
</springProfile>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="errorAppender"/>
</root>
<springProfile name="default">
<root>
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
<springProfile name="dev">
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="errorAppender"/>
</root>
</springProfile>
<springProfile name="test">
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="errorAppender"/>
</root>
</springProfile>
<springProfile name="pre">
<root>
<appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="errorAppender"/>
</root>
</springProfile>
<springProfile name="prod">
<root>
<appender-ref ref="ASYNC_FILE"/>
<appender-ref ref="errorAppender"/>
</root>
</springProfile>
</configuration>
问题总结
- 文件里面的日志颜色乱码,我测了好久,有点蓝瘦,还是不能解决包含颜色的文件,编辑决定了
- 有好的方法可以是文件里面的日志也有颜色,欢迎留言
作为程序员第六篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
Lyric: 这整座山谷都是风笛手
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110870.html