GAE app.yaml:如何设置包含句点的环境变量?
Posted
技术标签:
【中文标题】GAE app.yaml:如何设置包含句点的环境变量?【英文标题】:GAE app.yaml: How to set env variable that contains periods? 【发布时间】:2016-06-19 02:47:20 【问题描述】:我正在使用 app.yaml 检出 GAE 托管的虚拟机,如此处所述https://cloud.google.com/appengine/docs/managed-vms/java/configuring-your-app-with-app-yaml
当我这样做时
env_variables:
java.util.logging.config.file: 'WEB-INF/logging.properties'
我得到异常
google.appengine.api.yaml_errors.EventError: Value 'java.util.logging.config.file' for key in EnvironmentVariables does not match expression '^(?:[a-zA-Z_][a-zA-Z0-9_]*)$'
有没有办法通过app.yaml指定自定义logging.properties
?
【问题讨论】:
我仍然没有找到答案,但 gcloud-maven 插件源代码非常有用:github.com/GoogleCloudPlatform/gcloud-maven-plugin/tree/master/… 感谢 gcloud 团队的源代码! 【参考方案1】:试试这个:
env_variables:
JAVA_USER_OPTS: -Djava.util.logging.config.file=webapps/root/WEB-INF/logging.properties
app.yaml
中的env_variables
部分用于设置环境变量。点在它们的名字中是not allowed,所以这个例外是有道理的。
您正在尝试设置java.util.logging.config.file
,这是一个系统属性,而不是环境变量。要设置它,您需要在启动 Java 时提供 -Djava.util.logging.config.file=<value>
参数。 GAE Flexible image 提供JAVA_USER_OPTS
环境变量来自定义Java 命令行,因此您可以使用它来自定义JUL 设置(现在也在图像readme 中推荐)。
另外,WEB-INF/logging.properties
值对我不起作用,因为当前目录是 $JETTY_BASE
,而不是 $JETTY_BASE/webapps/root
。
【讨论】:
更正,注意这个JETTY_ARGS:-Djava.util.logging.config.file=WEB-INF/logging.properties github.com/GoogleCloudPlatform/…【参考方案2】:另一个答案不再正确。属性名称现在命名为 JAVA_OPTS
这里有完整的“秘密”变量名 https://github.com/GoogleCloudPlatform/jetty-runtime#providing-loggingproperties-via-the-web-application
现在这是正确的设置:
env_variables:
JAVA_OPTS: -Djava.util.logging.config.file=webapps/root/WEB-INF/logging.properties
【讨论】:
显然这也是不正确的。见github.com/GoogleCloudPlatform/…【参考方案3】:对于普遍可用的柔性环境,请使用此格式。
env_variables:
JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties
见here。
【讨论】:
以上是关于GAE app.yaml:如何设置包含句点的环境变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 app.yaml 在 GAE(python) 中上传静态文件?
使用 Flask-Restless 进行 GAE app.yaml 路由