【问题标题】:Erlang: print loaded sys.config in OTP applicationErlang:在 OTP 应用程序中打印加载的 sys.config
【发布时间】:2017-05-03 02:01:49
【问题描述】:

如何显示我的 Erlang OTP 应用程序从其加载sys.config绝对路径?即,如果get_all_env (http://erlang.org/doc/apps/kernel/application.html#get_all_env-0) 显示意外结果,我如何查看正在加载的文件进行调试?

我这样做过一次,所以我知道这是可能的,但遗憾的是我找不到该代码 =(

【问题讨论】:

    标签: erlang


    【解决方案1】:

    您可以使用 init:get_plain_arguments/0 获取 VM 参数的完整列表:

    (node@localhost)13> init:get_plain_arguments().
      ["/usr/local/bin/rebar3","shell","--apps","some_app",
       "--config","priv/sys.config","--sname","node1@localhost"]
    

    如果您在 CLI 上手动启动了节点,那当然可以。作为参考,上面的输出对应于我使用rebar3的启动脚本:

    rebar3 shell --apps some_app --config priv/sys.config --sname node1@localhost
    

    【讨论】:

    • 是的,不幸的是,这不是我想要的,因为该路径是相对的 (priv/sys.config)。我想我在 Docker 中有一个路径问题,所以我想要加载文件的绝对路径。
    • 使用 file:get_cwd() 获取您当前的工作目录。假设它没有改变,你可以使用 filename:join(Base, Path) 和 init 参数来构建配置文件的绝对路径。此外,init:get_argument(config) 比 get_plain_arguments() 更易于使用。
    猜你喜欢
    • 2015-12-14
    • 2011-07-13
    • 2011-05-24
    • 2010-11-24
    • 2012-10-11
    • 2014-07-04
    • 2018-07-16
    • 2014-12-15
    • 2016-03-05
    相关资源
    最近更新 更多