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。

相关推荐
自律的kkk14 分钟前
mysql基础快速入门
java·数据库·mysql·oracle
alien爱吃蛋挞15 分钟前
List详解
java·list
HackKong21 分钟前
高校网络安全_网络安全之道
java·网络·c++·python·学习·web安全·黑客技术
Andy01_38 分钟前
Java八股汇总【MySQL】
java·开发语言·mysql
唐 城1 小时前
Solon v3.0.5 发布!(Spring 可以退休了吗?)
java·spring·log4j
V+zmm101341 小时前
社区二手物品交易小程序ssm+论文源码调试讲解
java·微信小程序·小程序·毕业设计·ssm
坊钰1 小时前
【Java 数据结构】合并两个有序链表
java·开发语言·数据结构·学习·链表
秋天下着雨1 小时前
apifox调用jar程序
java·python·jar
m0_748251081 小时前
docker安装nginx,docker部署vue前端,以及docker部署java的jar部署
java·前端·docker
A22741 小时前
Redis——缓存雪崩
java·redis·缓存