Appearance
日志
说明
本系统的日志采用logback,每个服务使用了7个日志配置文件(5个通用文件、2个业务文件),xml文件之间也可以有继承关系,可以将公共的配置抽取出去。
acuity-log-stater/src/main/resource/logback/defaults.xml
配置所有环境的都会用到的配置,定义了常用的
appender
和springProperty
acuity-log-stater/src/main/resource/logback/defaults-prod.xml
记录了acuity-box-utils-pro项目和第三方jar在生产环境的日志
acuity-log-stater/src/main/resource/logback/defaults-dev.xml
记录了acuity-box-utils-pro项目和第三方jar在开发环境的日志
acuity-public/acuity-common/src/main/resource/defaults-biz-prod.xml
记录了 acuity-cloud 和 acuity-boot 在生产环境的日志
acuity-public/acuity-common/src/main/resource/defaults-biz-dev.xml
记录了 acuity-cloud 和 acuity-boot 在开发环境的日志
logback-spring.xml
记录单个服务在生产环境的日志
logback-spring-dev.xml
记录单个服务在开发环境的日志
依赖关系如图:
开发环境和生产环境使用不同的配置文件,区别在于生产采用异步记录日志到磁盘,开发采用实时几辆车日志到磁盘。
如何修改日志级别?
- 方式1: 在bootstrap.yml或bootstrap-dev.yml文件中修改logging.level.xxx。如:
yaml
logging:
level:
controller: INFO # 这种方式必须在defaults.xml 中定义 springProperty
logging:
level:
controller: INFO # 这种方式必须在defaults.xml 中定义 springProperty
方式2: 在defaults.xml中修改 logging.level.xxx 的 defaultValue。
xml
// defaults.xml
<springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
<springProperty scope="context" name="log.level.controller" source="logging.level.controller" defaultValue="INFO"/>
<springProperty scope="context" name="log.level.service" source="logging.level.service" defaultValue="INFO"/>
<springProperty scope="context" name="log.level.dao" source="logging.level.sql" defaultValue="DEBUG"/>
<springProperty scope="context" name="log.level.nacos" source="logging.level.nacos" defaultValue="WARN"/>
// defaults.xml
<springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
<springProperty scope="context" name="log.level.controller" source="logging.level.controller" defaultValue="INFO"/>
<springProperty scope="context" name="log.level.service" source="logging.level.service" defaultValue="INFO"/>
<springProperty scope="context" name="log.level.dao" source="logging.level.sql" defaultValue="DEBUG"/>
<springProperty scope="context" name="log.level.nacos" source="logging.level.nacos" defaultValue="WARN"/>
- 方式3:logback-spring.xml、logback-spring-dev.xml、defaults-biz-prod.xml、defaults-biz-dev.xml 已经配置了的包路径,可以直接在修改 level属性. 如:
xml
<!-- <logger name="top.acuity.box.authority.service" additivity="true" level="${log.level.service}"> -->
<logger name="top.acuity.box.base.service" additivity="true" level="DEBUG">
<appender-ref ref="ASYNC_SERVICE_APPENDER"/>
</logger>
<!-- <logger name="top.acuity.box.authority.service" additivity="true" level="${log.level.service}"> -->
<logger name="top.acuity.box.base.service" additivity="true" level="DEBUG">
<appender-ref ref="ASYNC_SERVICE_APPENDER"/>
</logger>
${log.level.service} 读取的是defaults.xml 文件中
- 方式4:直接在yml 中配置包名
yaml
logging:
level:
top.acuity.box.authority.controller: warn
logging:
level:
top.acuity.box.authority.controller: warn
如何在生产环境记录并查看sql语句?
开发环境,默认开启了p6spy在控制台输出sql,但在生产不建议使用,影响性能。所以生产环境要将acuity.database.p6spy属性设置为false,并常用以下方式打印sql。
- 方式1: 在bootstrap.yml或bootstrap-dev.yml文件配置后,查看root.log 或 控制台。
yaml
logging:
level:
# 将 top.acuity.box.base.dao 改成你想要记录sql的 Mapper 包名!
top.acuity.box.base.dao: debug # 一定是debug级别
logging:
level:
# 将 top.acuity.box.base.dao 改成你想要记录sql的 Mapper 包名!
top.acuity.box.base.dao: debug # 一定是debug级别
- 方式2(推荐使用):在 logback-spring.xml或 logback-spring-dev.xml 中配置后, 查看dao.log。
xml
<!-- log.level.dao 一定要设置为debug。 将 top.acuity.box.base.dao 改成你想要记录sql的 Mapper 包名! -->
<logger name="top.acuity.box.base.dao" additivity="true" level="${log.level.dao}">
<appender-ref ref="DAO_APPENDER"/>
</logger>
<!-- log.level.dao 一定要设置为debug。 将 top.acuity.box.base.dao 改成你想要记录sql的 Mapper 包名! -->
<logger name="top.acuity.box.base.dao" additivity="true" level="${log.level.dao}">
<appender-ref ref="DAO_APPENDER"/>
</logger>