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

导读:本篇文章讲解 logback-spring.xml基本配置,可以输出方法和行号,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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

问题背景

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

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

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

  • 日志文件乱码

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

解决方案

  • Springboot默认日志格式
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n
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 …
logback-spring.xml基本配置,可以输出方法和行号logback-spring.xml基本配置,可以输出方法和行号logback-spring.xml基本配置,可以输出方法和行号

Lyric: 这整座山谷都是风笛手

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110870.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!