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

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
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: 这整座山谷都是风笛手

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: logback-spring.xml是一个Spring Boot应用程序使用的配置文件,用于配置日志记录器logback的行为。以下是一个可能的logback-spring.xml配置文件示例,其中包含常见的配置选项: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <springProfile name="dev"> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="CONSOLE"/> </root> </springProfile> <springProfile name="prod"> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/myapp.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>logs/myapp.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="FILE"/> </root> </springProfile> </configuration> ``` 这个配置文件使用了Spring Profiles,根据不同的环境加载不同的配置。在“dev”环境中,日志记录器使用控制台输出,记录debug级别及以上的日志信息。在“prod”环境中,日志记录器将日志写入文件,并记录info级别及以上的日志信息。配置文件还设置了日志信息的格式、日志文件的大小、数量和保存时间等选项,以满足不同的需求。 ### 回答2: logback-spring.xmlSpring Boot项目中用于配置Logback日志框架的配置文件。通过该文件,可以对日志输出的格式、路径、级别等进行详细配置。 首先,需要在项目的 src/main/resources 目录下创建一个名为 logback-spring.xml 的文件。 配置文件主要包含以下几个关键部分: 1. 配置根节点和属性:在配置文件中,首先需要配置一个根节点 configuration,并为其添加属性。 - 属性 scan:设置是否自动重新加载配置文件,默认为 true,即在文件修改后自动重新加载。 - 属性 debug:设置是否在启动时打印调试信息,默认为 false。 2. 配置日志输出路径和文件名规则:可以通过定义一个 appender,配置输出路径和文件名规则。 - 可以使用 RollingFileAppender 定义日志输出到文件中,并可以配置每个文件大小、备份文件个数等。 - 也可以配置 ConsoleAppender 将日志输出到控制台。 3. 配置日志输出格式: - 通过定义一个 encoder,可以设置输出日志的格式,包括日期格式、日志级别、输出的类名等。 - 可以使用 PatternLayoutEncoder 来设置输出格式的规则。 4. 配置日志级别: - 可以为每个包或类单独设置日志级别,来控制输出的详细程度。 - 使用 logger 元素来配置包或类的日志级别。 5. 配置日志文件的大小和备份个数: - 在 appender 中定义的 RollingFileAppender 中,可以设置每个日志文件的大小和备份文件的个数。 6. 配置日志异步输出: - 可以通过 AsyncAppender 来配置异步输出日志,提高性能。 以上是 logback-spring.xml 的详细配置。通过对这些配置项的灵活调整,可以实现精确的日志输出、格式化和管理。 ### 回答3: logback-spring.xml是一个用于Spring项目的日志配置文件,它使用logback作为日志框架,提供了灵活且可定制的日志记录功能。 在logback-spring.xml配置文件中,可以定义以下几个关键的配置元素: 1. appender(输出器):指定日志的输出方式。可以配置多个输出器,如ConsoleAppender(将日志输出到控制台)、FileAppender(将日志输出到文件)等。 2. encoder(编码器):指定日志输出的格式,如PatternLayoutEncoder(输出具体的日志格式)、JsonEncoder(将日志以JSON格式输出)等。 3. logger(日志记录器):定义日志记录的规则和级别。可以设置多个日志记录器,用于不同的类或包。通过指定package或class属性,可以配置相应的日志级别和输出器。 4. root(根记录器):指定所有日志的根记录器,并设定其级别和输出器。 当进行详细的配置时,可以通过配置属性来进一步定制日志记录的行为,如设置日志级别、输出格式和文件路径等。 此外,logback-spring.xml还支持使用System environment(系统环境)和Spring的Property placeholder(属性占位符)来配置文件路径和其他属性值。 总的来说,logback-spring.xml提供了一种灵活且可扩展的方式来配置日志记录器,在Spring项目中可以根据具体需求进行详细的配置,满足不同的日志需求和输出要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值