微服务搭建
集成Log4j 配置
第一步:引入 log4j ,依赖
在微服务架构中我们通常会抽取出一个公共的模块,常规命名为 common 模块 ,而其他的微服务都会依赖于这个 模块,所以加入log4j 依赖时,建议在 commom 模块引入:(前提是在父工程引入log4j 依赖管理)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
第二步:准备 log4j 文件 :
这里日志的要求是:在 D:/ayou/ideaWrokSpace/DreamHome/DreamHome/logs/ 路径下生成各个服务自己的 日志,因为后续会有很多个微服务,所以日志按照 服务名称 按天生成。而仅在文件中配置我们是无法动态生成目录的,所以需要 重写DailyRollingFileAppender, 在共功能模块中 重写 DailyRollingFileAppender 如下:
public class AbstractLogDailRollingFileAppender extends DailyRollingFileAppender {
// 服务名称
public String SERVER_NAME;
// 日志路径
public String LOG_PATH;
@Override
public void activateOptions() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
// this.fileName 对应着 日志文件中 log4j.appender.error.File 的路径
LOG_PATH=this.fileName;
// 当前日期
String format = dateFormat.format(date);
// 例如 d:/ayou/dh-user/20230705.error.log
File file = new File(LOG_PATH + SERVER_NAME + "/" + format);
if (!file.exists()){
// 不存在则创建文件夹
file.mkdir();
}
this.fileName=file.getAbsolutePath()+"/"+this.name+".log";
super.activateOptions();
}
}
以上代码我们也只是修改了 this.fileName 的路径,为我们自定义的路径,
修改每个微服务的log4j.properties文件: 指定 自定义的日志处理类 com.ayou.dh.common.config.AbstractLogDailRollingFileAppender
log4j.rootLogger=info,error,CONSOLE,info
##
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
#log4j.logger.info=info
log4j.appender.info=com.ayou.dh.common.config.AbstractLogDailRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.Threshold = info
log4j.appender.info.File=D:/ayou/ideaWrokSpace/DreamHome/DreamHome/logs/dh-user
#log4j.logger.error=error
log4j.appender.error=com.ayou.dh.common.config.AbstractLogDailRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.Threshold = error
log4j.appender.error.File=D:/ayou/ideaWrokSpace/DreamHome/DreamHome/logs/dh-user
log4j.logger.Java.SQL.resultset=info
log4j.logger.org.apache=INFO
log4j.logger.Java.SQL.connection=info
log4j.logger.Java.SQL.statement=info
log4j.logger.Java.SQL.prepared.statement=info
log4j.logger.org.hibernate=info
log4j.logger.org.hibernate.SQL=trace
log4j.logger.org.hibernate.hql=trace
log4j.category.org.hibernate.type=trace
log4j.logger.org.spring.framework=info
将log4j.properties文件,放到每个微服务的 resource 文件路径下,并在 application.yml 文件或者 bootstrap.yml 文件 配置 如下:
logging:
config: classpath:log4j.properties