<configuration> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 设置全局日志级别 --> <root level="INFO"> <appender-ref ref="STDOUT" /> </root> <!-- 设置 MyBatis 和 MP 的日志级别为 DEBUG --> <logger name="com.baomidou.mybatisplus" level="DEBUG" /> <logger name="org.apache.ibatis" level="DEBUG" /> </configuration> 最外层标签就报错,说没有
时间: 2025-06-07 08:44:58 浏览: 25
### 在 Spring 项目中正确配置 Logback 以在控制台输出 MyBatis SQL 日志
#### 配置 Logback 控制台输出 SQL 日志
为了确保 MyBatis 的 SQL 日志能够正确输出到控制台,需要对 `logback-spring.xml` 文件进行适当的配置。以下是完整的配置示例:
```xml
<configuration>
<!-- 定义控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 设置全局日志级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
<!-- 针对 MyBatis 和 MyBatis-Plus 设置 DEBUG 级别 -->
<logger name="com.baomidou.mybatisplus" level="DEBUG" additivity="false" />
<logger name="org.apache.ibatis" level="DEBUG" additivity="false" />
</configuration>
```
上述配置中,`<logger>` 标签分别针对 MyBatis 和 MyBatis-Plus 指定了 `DEBUG` 级别,并且设置了 `additivity="false"` 以避免日志重复输出[^1]。
#### 解决 XML 配置文件最外层标签的错误
如果在 XML 配置文件中遇到最外层标签报错的问题,通常是因为 XML 文件的根标签未正确声明或命名空间配置有误。以下是一个标准的 Spring 配置文件示例,确保根标签 `<beans>` 正确声明了命名空间和 schemaLocation 属性:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 其他 Spring 配置 -->
</beans>
```
上述配置中,`<beans>` 标签正确声明了命名空间和 schemaLocation 属性,避免了 XML 文件解析时的最外层标签错误[^3]。
#### 配置 MyBatis 的日志实现类
除了在 Logback 中设置日志级别外,还需要在 `application.yml` 或 `application.properties` 文件中配置 MyBatis 的日志实现类为 `StdOutImpl`,以便将 SQL 日志输出到控制台。以下是配置示例:
**`application.yml` 配置:**
```yaml
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
level:
root: WARN
org.apache.ibatis: DEBUG
com.baomidou.mybatisplus: DEBUG
```
**`application.properties` 配置:**
```properties
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.root=WARN
logging.level.org.apache.ibatis=DEBUG
logging.level.com.baomidou.mybatisplus=DEBUG
```
通过上述配置,可以确保 MyBatis 和 MyBatis-Plus 的 SQL 日志以 `DEBUG` 级别输出到控制台[^3]。
#### 注意事项
- 如果项目中使用了其他日志框架(如 Log4j),则需要在对应的配置文件中进行类似的日志级别设置。
- 在生产环境中启用 `StdOutImpl` 可能会导致性能下降并暴露敏感信息,因此建议仅在开发和测试环境中使用。
- 确保当前运行环境中加载的是启用了 `StdOutImpl` 的配置文件。
---
阅读全文
相关推荐

















