logback.xml 只在控制台打印,不在文件打印

如果你的 logback.xml 配置只在控制台打印日志而不在文件中记录,可能是因为配置文件中只定义了控制台输出(ConsoleAppender)而没有定义文件输出(FileAppenderRollingFileAppender)。下面是一个简单的 logback.xml 配置示例,展示如何同时配置控制台和文件输出:

xml 复制代码
xmlCopy code
<configuration>

    <!-- 定义日志文件的存储位置和文件名 -->
    <property name="LOG_FILE" value="logs/myapp.log" />

    <!-- ConsoleAppender:在控制台打印日志 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- FileAppender:在文件中记录日志 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover with max history 30 days -->
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 日志记录器,这里将 root logger 的级别设置为 DEBUG,并且添加了 CONSOLE 和 FILE 两个 appender -->
    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

这个配置文件中包含了两个 appender 定义:

  1. CONSOLE : 使用 ConsoleAppender 在控制台打印日志。
  2. FILE : 使用 RollingFileAppender 将日志写入文件。它使用了基于时间的滚动策略,每天生成一个新文件,保留最近30天的日志文件。

请确保你的 logback.xml 文件中包含了类似的文件输出定义。如果仍然存在问题,可能需要检查以下几点:

  • 文件路径权限:确保应用有权限写入指定的日志文件路径。
  • 文件路径存在:确保指定的日志文件路径存在,或者 Logback 有权限创建目录。
  • Logback 版本:确保你使用的 Logback 版本没有已知的相关 bug。

调整你的配置后,重新启动应用以应用这些更改,并检查指定的文件位置是否开始记录日志。

LOG_FILE 变量

LOG_FILE 在使用 Logback 或 Spring Boot 时常见于日志配置中,特别是在 application.propertiesapplication.yml 文件中。这个变量用于指定日志文件的路径和名称,Spring Boot 会自动将其解析并用于日志输出。

在 Spring Boot 中使用 LOG_FILE

在 Spring Boot 应用程序中,LOG_FILE 可以在 application.propertiesapplication.yml 文件中设置,以定义日志文件的存储位置。例如:

ini 复制代码
propertiesCopy code
# application.properties
logging.file.name=myapp.log

或者在 application.yml 中:

yaml 复制代码
yamlCopy code
# application.yml
logging:
  file:
    name: myapp.log

在这些设置中,logging.file.name(Spring Boot 2.2 之后的版本使用这个属性)定义了日志文件的名称和(可选的)路径。如果只指定了文件名而没有路径,日志文件通常会被创建在应用程序的运行目录中。

在 Logback 配置文件中引用 LOG_FILE

logback-spring.xmllogback.xml 配置文件中,你可以通过定义一个具有相同名称的属性来使用 LOG_FILE 变量,或者直接使用 Spring Boot 设置的变量(如果是在 Spring Boot 环境中)。例如:

xml 复制代码
xmlCopy code
<property name="LOG_FILE" value="myapp.log" />

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_FILE}</file>
    ...
</appender>

或者,如果你在 Spring Boot 应用中且已经通过 application.propertiesapplication.yml 指定了 logging.file.name,则可以直接在 Logback 配置中使用该变量:

xml 复制代码
xmlCopy code
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_FILE}</file>
    ...
</appender>

这样,Logback 就会将日志输出到你在 LOG_FILE 变量中指定的文件中。

注意事项

  • 确保在 Logback 的配置文件中正确设置了文件输出器(FileAppender)。
  • 如果你的日志只在控制台打印而不在文件中打印,检查你的 Logback 配置文件,确保文件输出器(FileAppender)配置正确,并且没有由于配置错误或其他问题被忽略。
  • LOG_FILE 变量的具体解析和使用方式可能会根据 Spring Boot 的版本和你的具体配置有所不同。确保参考你所使用的 Spring Boot 版本的官方文档。

以文件的形式输出日志

默认情况下,Spring Boot将日志输出到控制台,不会写到日志文件。如果要编写除控制台输出之外的日志文件,则需在application.properties中设置logging.file.name或logging.file.path属性。

1)logging.file.name,设置文件,可以是绝对路径,也可以是相对路径。例如:

js 复制代码
logging.file.name=info.log  

2)logging.file.path,设置目录,会在该目录下创建spring.log文件,并写入日志内容,例如:

js 复制代码
logging.file.path=/workspace/log

如果只配置logging.file.name,会在项目的当前路径下生成一个xxx.log日志文件。如果只配置logging.file.path,在/workspace/log文件夹生成一个为spring.log日志文件。

注:二者不能同时使用,如若同时使用,则只有logging.file.name生效。默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO。

所有支持的日志记录系统都可以在Spring环境中设置记录级别,格式为:"logging.level.* = LEVEL"。

logging.level属性:

日志级别控制前缀,*为包名或Logger名。

LEVEL参数:

选项包括TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。

相关推荐
全职计算机毕业设计几秒前
基于Java Web的校园失物招领平台设计与实现
java·开发语言·前端
东阳马生架构7 分钟前
商品中心—1.B端建品和C端缓存的技术文档
java
Chan169 分钟前
【 SpringCloud | 微服务 MQ基础 】
java·spring·spring cloud·微服务·云原生·rabbitmq
LucianaiB12 分钟前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库
面朝大海,春不暖,花不开36 分钟前
自定义Spring Boot Starter的全面指南
java·spring boot·后端
得过且过的勇者y36 分钟前
Java安全点safepoint
java
夜晚回家1 小时前
「Java基本语法」代码格式与注释规范
java·开发语言
斯普信云原生组1 小时前
Docker构建自定义的镜像
java·spring cloud·docker
wangjinjin1801 小时前
使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
java·spring boot·intellij-idea
wtg44521 小时前
使用 Rest-Assured 和 TestNG 进行购物车功能的 API 自动化测试
java