【发布时间】:2020-08-07 19:42:06
【问题描述】:
我们有一个在 PCF 上运行的微服务应用。 一些微服务能够在其日志文件夹中生成日志文件。 有没有办法自动下载这些日志文件并将其保存到共享文件夹或远程容器(如谷歌驱动器等)?
非常感谢您的建议和建议。
谢谢。
【问题讨论】:
标签: spring-boot microservices spring-cloud cloud-foundry pcf
我们有一个在 PCF 上运行的微服务应用。 一些微服务能够在其日志文件夹中生成日志文件。 有没有办法自动下载这些日志文件并将其保存到共享文件夹或远程容器(如谷歌驱动器等)?
非常感谢您的建议和建议。
谢谢。
【问题讨论】:
标签: spring-boot microservices spring-cloud cloud-foundry pcf
在理想情况下,您不会将需要保留的内容写入本地文件系统。编写可以简单地重新创建的缓存文件或工件是可以的,但你不应该在那里放置任何重要的东西。
https://docs.cloudfoundry.org/devguide/deploy-apps/prepare-to-deploy.html#filesystem
向您的应用公开的本地文件系统是短暂的,即使在短时间内存储重要的东西也不安全。您当然可以尝试设置一个定期运行的进程,并将日志文件从您的容器发送到其他地方。但是,当您的应用崩溃时,您将丢失日志消息,可能是说明应用崩溃原因的重要消息,因为在清理容器之前,您的同步过程没有时间运行。
您想要做的是配置您的应用程序以将其日志写入 STDOUT 或 STDERR。
https://docs.cloudfoundry.org/devguide/deploy-apps/streaming-logs.html#writing
任何写入 STDOUT/STDERR 的内容都会被平台自动捕获,并为您的应用发送日志流。然后,您可以将日志流发送到各种持久位置。
https://docs.cloudfoundry.org/devguide/services/log-management.html
大多数应用程序都可以轻松配置为写入 STDOUT/STDERR。您已经在这篇文章中标记了 spring-boot,所以我假设您的应用程序正在运行 Spring Boot。默认情况下,Spring Boot 应该记录到 STDOUT/STDERR,所以你不需要做任何事情。
但可能发生的情况是您的应用开发人员已专门配置应用以将日志发送到文件。在应用程序的src/main/resources/application.properties 或application.yml 文件中查找属性logging.file.path 或logging.file.name。如果存在,请注释掉或删除它们。这应该使您的日志到 STDOUT/STDERR。
【讨论】: