logback-spring.xml基本配置,可以输出方法和行号

logback-spring.xml基本配置,可以输出方法和行号

  • 问题背景
  • 解决方案
  • 问题总结
  • Lyric: 这整座山谷都是风笛手

问题背景

由于需要输出行号,查找代码中的打印处位置比较方便,所以使用了logbcak-spring,本来还给日志添加了漂亮的颜色,结果经过测试发现,加了颜色之后,linux存储的日志是不能显示颜色的,因此也不能识别颜色字符,就出现了乱码,但是 tail -f 实时打印是可以颜色显示的

  • logback-spring.xml只有在加载spring的再启动
  • tail -f 没有乱码

logback-spring.xml基本配置,可以输出方法和行号_第1张图片

  • 日志文件乱码

logback-spring.xml基本配置,可以输出方法和行号_第2张图片

解决方案

  • 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如下

<configuration>
    
    
    <property name="BASE_PATH" value="/logs"/>
    
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    
        <layout class="ch.qos.logback.classic.PatternLayout">
        
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{20}.%M\(%F:%L\): %msg%npattern>
        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%npattern>
        encoder>
        <file>${BASE_PATH}/app.logfile>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${BASE_PATH}/%d{yyyy-MM-dd}/app.%i.logfileNamePattern>
            <maxFileSize>500MBmaxFileSize>
            <maxHistory>30maxHistory>
            <totalSizeCap>20GBtotalSizeCap>
        rollingPolicy>
    appender>
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Append>trueAppend>
        <file>${BASE_PATH}/app-error.logfile>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${BASE_PATH}/%d{yyyy-MM-dd}/app-error.%i.logfileNamePattern>
            <maxFileSize>500MBmaxFileSize>
            <maxHistory>30maxHistory>
            <totalSizeCap>20GBtotalSizeCap>
        rollingPolicy>
        <encoder>
            <pattern>
                
            pattern>
        encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERRORlevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>

    
    <appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
        
        <discardingThreshold>20discardingThreshold>
        
        <queueSize>512queueSize>
        
        <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: 这整座山谷都是风笛手

你可能感兴趣的:(java开发常遇问题,spring,xml,intellij-idea)