Skip to content

日志

说明

本系统的日志采用logback,每个服务使用了7个日志配置文件(5个通用文件、2个业务文件),xml文件之间也可以有继承关系,可以将公共的配置抽取出去。

  • acuity-log-stater/src/main/resource/logback/defaults.xml

    配置所有环境的都会用到的配置,定义了常用的 appenderspringProperty

  • 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>

欢迎使用天源云Saas快速开发系统