首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用exrm创建发行版后无法读取菲尼克斯配置条目

使用exrm创建发行版后无法读取菲尼克斯配置条目
EN

Stack Overflow用户
提问于 2014-09-18 19:39:28
回答 1查看 949关注 0票数 1

我正在尝试使用exrm部署我的药剂/凤凰应用程序。这很好,只是当我通过发布的“二进制”启动应用程序时,我无法读取config/config.exs中定义的一些配置条目。

我的config/config.exs锁如下(为了清晰起见,我删除了一些行):

代码语言:javascript
复制
use Mix.Config

config :phoenix, RestProxy.Router,
  port: System.get_env("PORT")
  # ...

config :logger,
  backends: [:console,  Logjam.LoggerBackend]
  # ...

config :logjam, :forwarder,
  app_name: "profileproxy",
  enabled: false

我还通过以下方式生成了conform配置

代码语言:javascript
复制
mix conform.new
mix conform.configure

让它们保持不变。

如果我通过mix release构建它,使用./rel/my_app/bin/my_app start启动它并与远程控制台连接,我可以读取一些配置条目,但不能读取日志:

代码语言:javascript
复制
> ./rel/rest_proxy/bin/rest_proxy remote_console
Erlang/OTP 17 [erts-6.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernelpoll:false] [dtrace]

Interactive Elixir (1.0.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(my_app@127.0.0.1)1> Application.get_env(:logger, :backends)
[:console, Logjam.LoggerBackend]
iex(my_app@127.0.0.1)2> Application.get_env(:logjam, :forwarder)
nil

sys.config中生成的rel/my_app/releases/0.0.1/如下所示:

代码语言:javascript
复制
[{sasl,[{errlog_type,error}]},
 {phoenix,
     [{'Elixir',
          [{'MyApp',
               [{'Router',
                    [{cookies,true},
                     {debug_errors,true},
                     {host,<<"localhost">>},
                     {port,4000},
                     {session_key,<<"_rest_proxy_key">>},
                     {session_secret,<<"snip">>},
                     {ssl,false}]}]}]},
      {'Elixir.MyApp.Router',
          [{port,nil},
           {ssl,false},
           {host,<<"example.com">>},
           {cookies,true},
           {session_key,<<"_rest_proxy_key">>},
           {session_secret,<<"snip">>}]},
      {code_reloader,[{enabled,true}]}]},
 {logger,
     [{backends,[console,'Elixir.Logjam.LoggerBackend']},
      {format,<<"$time $metadata[$level] $message">>},
      {handle_otp_reports,true},
      {handle_sasl_reports,true},
      {metadata,[request_id]}]},
 {logjam,[{forwarder,[{app_name,<<"profileproxy">>},{enabled,false}]}]}].

我使用的是灵丹妙药1.0.0、凤凰0.4.1和exrm 0.14.9。

有什么想法/暗示我看不懂配置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-18 21:06:12

我认为这是因为在发行版中没有加载名为logjam的应用程序。引用:application.get_env的Erlang文档

如果未加载指定的应用程序,或者执行调用的进程不属于任何应用程序,则函数返回[]

在您的示例中,您看到的是零,因为给定一个空关键字列表,Application.get_env无法根据:forwarder的名称找到密钥,因此默认情况下返回零。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25921024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档