# sdhs-paas-sdk **Repository Path**: keepeng/sdhs-paas-sdk ## Basic Information - **Project Name**: sdhs-paas-sdk - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-05-10 - **Last Updated**: 2021-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sdhs-paas-sdk ## 项目介绍 为公司后续开发分布式微服务项目提供一些基础组件,简化微服务开发过程,提高开发效率,并且统一相关规范,目前SDK先接入日志组件,目的是为了统一日志规则,为后续日志中心进行日志收集以及日志监控告警提供基础。 ## [ **日志** ](#) ### 1.如何使用 1.修改Maven远程仓库地址 > http://10.180.29.108:8081/repository/xlpay-public/ ``` xlpaymaven xlpay maven http://10.180.29.108:8081/repository/xlpay-public/ true true ``` 2.Maven引入相关依赖 ``` com.sdhs.paas sdhs-paas-sdk ${latestVersion} ``` 3.如果项目里已经使用基于Slf4j接口进行日志打印,需要 **删除** 本地的日志配置文件 **log4j.properties、log4j2.xml(yml)、logback.xml** 等,原有日志实例定义无需改动: > 为了以后业务埋点,需要更换日志包名,日志库内部也是基于Slf4j接口实现,因此后续内部可扩展 ``` import org.slf4j.Logger; import org.slf4j.LoggerFactory; ``` 替换为: ``` import com.sdhs.paas.sdk.core.logger.Logger; import com.sdhs.paas.sdk.core.logger.LoggerFactory; ``` 4.如果项目里目前不是使用的基于Slf4j接口进行日志打印,直接按照(**5**)进行修改,并且**删掉本地相关日志配置文件** 5.初始化日志库实例 ``` import com.sdhs.paas.sdk.core.logger.Logger; import com.sdhs.paas.sdk.core.logger.LoggerFactory; ... ... public class Demo{ ... ... private static Logger LOGGER = LoggerFactory.getLogger(Demo.class); ... ... } ``` 6.打印日志 ``` LOGGER.trace("Hello {}", "World"); LOGGER.debug("Hello {}", "World"); LOGGER.info("Hello {}", "World"); LOGGER.warn("Hello {}", "World"); LOGGER.error("Hello {}", "World"); ``` ### 2.日志配置 日志库配置目前暂仅支持基于 **SpringBoot** 开发的项目,通过在 **application-{profile}.yml** 文件里进行配置,为了方便多环境配置应用启动,不要在默认的application.yml里进行配置,即默认的application.yml文件里不要配置任何东西,具体多环境配置参考[这里](#multi_config) #### 2.1 日志文件命名 日志文件使用{spring.application.name}属性即应用名称进行命名,默认使用"app"; 一个可执行程序运行默认会产生2个日志文件: - {spring.application.name}_all.log: 当前最新的所有日志信息文件 - {spring.application.name}_error.log: 错误日志信息文件 #### 2.2 日志目录 日志目录通过{logging.path}属性进行配置,可以是绝对路径或者相对路径,默认在可执行程序运行目录logs文件夹下(./logs/) #### 2.3 日志文件归档 日志文件同时根据日期(每天)以及文件大小进行分割归档,归档文件默认使用gzip进行压缩,归档文件保存在日志目录下的{yyyy-MM}文件夹下,即在日志目录下按月生成一个文件夹保存日志归档文件。 归档日志文件格式:{LOG_NAME}_all.%d{yyyy-MM-dd}.%i.log.gz、{LOG_NAME}_error.%d{yyyy-MM-dd}.%i.log.gz #### 2.4 日志打印格式 **日志打印格式为日志库内置,为了统一各个项目日志输出格式,原则上不能外部自定义;** _如果以下格式不能满足需求或者有个性化需求及时沟通,日志库支持扩展_ ``` 日期时间 级别 进程号 线程标识 调用类:行号 日志内容 %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:- } --- [%t] %logger:%L - %msg%n} ``` #### 2.5 日志配置示例 - application-{profile}.yml ``` spring: application: name: Demo #应用名称,目前日志文件名称使用该属性命名 logging: maxFileSize: 10MB #单个日志文件最大10MB,可选节点,默认200MB maxHistoryDay: 180 #可选节点,控制保留的归档文件的周期(天),示例仅保存最近180天的日志归档文件 totalSizeCap: 10GB #可选节点,默认20GB,所有归档文件的总大小。当超过了总大小上限时,将异步删除最老的文件。 level: root: INFO #根节点日志打印级别,最好配置,默认DEBUG org.springframework.web: ERROR #某包(类)的日志打印级别,根据自身项目情况进行配置 com.howtodoinjava: INFO org.hibernate: ERROR path: E:\logPath #可选节点,日志输出目录,默认可执行程序运行目录下logs文件夹(./logs) ``` - application-{profile}.properties ``` spring.application.name: Demo #应用名称,目前日志文件名称使用该属性命名 logging.maxFileSize: 10MB #单个日志文件最大10MB,可选节点,默认200MB logging.maxHistoryDay: 180 #可选节点,控制保留的归档文件的周期(天),示例仅保存最近180天的日志归档文件 logging.totalSizeCap: 10GB #可选节点,默认20GB,所有归档文件的总大小。当超过了总大小上限时,将异步删除最老的文件。 logging.level.root: INFO #根节点日志打印级别,最好配置,默认DEBUG logging.level.org.springframework.web: ERROR #某包(类)的日志打印级别 logging.level.com.howtodoinjava: INFO logging.level.org.hibernate: ERROR logging.path: E:\logPath\ #可选节点,日志目录,默认可执行程序运行目录下logs文件夹(./logs) ``` **新项目建议采用yml格式进行配置,如果现有项目已经使用properties格式进行配置可以继续保留或者使用[在线转换工具](http://www.toyaml.com/)进行转换。** ### 3.Spring Boot多环境配置 在Spring Boot中多环境通过在yml(properties)文件中配置,其中yml配置有2种方式,一种是使用一个yml文件,文件内通过"---"符号进行多环境配置分割,另一种是使用多个yml文件。这里我们采用第二种方式,同时配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识,比如: - application-dev.yml:开发环境 - application-test.yml:测试环境 - application-prod.yml:生产环境 例如: **application-dev.yml** ``` spring: application: name: Demo logging: level: root: DEBUG org.springframework.web: ERROR com.howtodoinjava: DEBUG org.hibernate: ERROR ``` **application-prod.yml** ``` spring: application: name: Demo logging: level: root: INFO org.springframework.web: ERROR com.howtodoinjava: DEBUG org.hibernate: ERROR ``` **注意: 目前日志库仅支持以上三种环境配置,即profile只能从dev、test、prod三个值中选一个,不能自定义为其他值** , 目前日志库开发环境会同时向控制台以及文件中输出,测试以及生产环境只向文件中输出。 ### 4. Spring Boot多环境启动 通过命令的方式运行jar需要注意的是不要在默认的application.yml(application.properties)中配置(spring.profiles.active),否则通过外部指定的配置项会不生效。 #### 4.1 IDE中多环境启动(IDEA) 通过idea启动不同环境的话,首先打开Run-->Edit Configurations,添加一个Jar Application启动项并配置: ![输入图片说明](https://gitee.com/uploads/images/2018/0514/181617_1f0156e7_670899.png "屏幕截图.png") 这里只需要指定jar的路径(使用maven clean package打包,一般在target目录下),以及在Environment variables中添加上述配置就行了。 ![输入图片说明](https://gitee.com/uploads/images/2018/0514/184943_72b8ac20_670899.png "屏幕截图.png") 一个环境对应一个启动项,在切换环境的时候,就不需要修改application.yml中spring.profiles.active的值那么麻烦了。 #### 4.2 命令行jar包启动 dev环境配置启动 ``` java -jar xxx.jar --spring.profiles.active=dev ```