San*_*Raj 5 java spring log4j amazon-s3 amazon-web-services
我正在构建一个 Spring-boot 应用程序,其中所有日志记录都存储在 log4j.properties 中的指定路径中。
我在 AWS Beanstalk 上托管此应用程序。
一旦我在 AWS 上托管应用程序,日志文件的指定路径将变得无效。
我如何解决这个问题,其中日志文件也应该存储在云中的不同路径中,比如 Amazon S3,但不在服务器上,因为日志文件需要相当大的大小。
log4j.appender.file.File=/my_log.log
Run Code Online (Sandbox Code Playgroud)
如何更改上述行以在 AWS S3 中存储“my_log.log”?
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5304 次 |
| 最近记录: |