gpt4 book ai didi

java - 从 Spring Boot 应用程序将日志文件存储在 AWS S3 中

转载 作者:搜寻专家 更新时间:2023-11-01 03:51:19 25 4
gpt4 key购买 nike

我正在构建一个 Spring-boot 应用程序,其中所有日志记录都存储在 log4j.properties 中的指定路径中。

我在 AWS Beanstalk 上托管此应用程序。

一旦我在 AWS 上托管应用程序,日志文件的指定路径将失效。

我该如何解决这个问题,其中日志文件也应该存储在云中的不同路径中,比如 Amazon S3,而不是在服务器上,因为日志文件占用相当大的大小。

log4j.appender.file.File=/my_log.log

如何更改以上行以将“my_log.log”存储在 AWS S3 中?

最佳答案

    import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.PutObjectRequest;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;


@Autowired
private AmazonS3 s3Client;
@Scheduled(cron = "0 5 1 * * *")
public void moveLogsFromEC2ToS3() {
try {
File logsDir = new File(env.getProperty("AWS_EC2_LOG_PATH"));
for (File logFile : logsDir.listFiles()) {
String fileName = logFile.getName();
if (fileName.endsWith(".log")) {
s3Client.putObject(new PutObjectRequest(env.getProperty("AWS_S3_LOGS_BUCKET_NAME"), fileName, logFile));
}
}
} catch (Exception e) {
logger.error("Error in moving log files! : {}", e);
}
}

关于java - 从 Spring Boot 应用程序将日志文件存储在 AWS S3 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27186137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com