我正在构建一个Spring-boot应用程序,其中所有日志记录都存储在log4j.properties中的指定路径中。
我将这个应用程序托管在AWS Beanstalk上。
一旦我将应用程序托管在AWS上,日志文件的指定路径将变为无效。
我该如何解决此问题,即在日志文件中还应将其存储在云中的其他路径(例如Amazon S3)中,而不是在服务器上,因为日志文件会占用大量的大小。
log4j.appender.file.File=/my_log.log
如何更改以上行以在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);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句