关于Erlang/OTP的application参数配置

转载:http://cryolite.iteye.com/blog/1663436


Erlang/OTP中将完成特定功能的一组模块组织起来,称之为application 。这不是个好名字,它与我们约定俗成的application有着不同的含义,例如在JEE这样的开发中,整个应用系统被称为一个application;在iOS中一个独立游戏、一个小工具都被称为一个应用。 

erlang/OTP的application是一种最基本的behavior,是Erlang代码和功能组织的形式(见Erlang OTP设计原则

我们可以为application设置各种参数,以调整运行时的行为,例如lager应用有多个日志级别(debug/info/warning/error),设置不同级别的日志会影响日志的输出,此外日志文件的名字/存放位置都是可以配置的,这些都可以作为lager的运行时参数在lager启动时配置。 

application的参数可以在很多地方配置(包括配置文件和erlang运行参数),因此搞清这些不同地方进行配置关系(比如配置的缺省位置和如何覆盖override参数)是进行erlang OTP开发的基本功。 

application的运行参数可视为一种环境变量,可以在三个层次进行配置,如图所示 


上层的配置可以覆盖下层的配置: 

最底层(橙色),每个application都要自己的资源文件(.app文件),这些文件都有统一的格式,其中有个env属性,在此为应用配置环境参数,详细信息。因为最底层配置的参数总能被上层的参数覆盖,而且资源文件中的参数只限于本应用,所以application的缺省参数在此配置最好。 

第二层(绿色),当多个application连同erlang运行时(包括lib库)打包发布时,整个发布包(红色虚线框)会有一个sys.config,在sys.config文件中配置可以对所有的application进行配置,同名的参数将被覆盖。这个文件可以同时对多个application进行参数配置。不一定都叫sys.config这个名字,可以在erl命令的选项-config中指定其它名字。 

最高层(蓝色),直接在erl命令中直接为某个application配置参数,详细信息,例如如果打算将lager的日志级别为debug: 

Bash代码   收藏代码
  1. erl -lager handlers '[{lager_console_backend, debug}]'  

显然,参数的值可以是比较复杂的erlang term,记得要用引号引起来。 

这一级别显然适合做应用开发调试时临时修改参数。 


此外,配置参数实际上在application启动之前就已生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值