`
cryolite
  • 浏览: 573003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Erlang/OTP的application参数配置

阅读更多


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

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

application运行时可能需要提供某些参数,以调整运行时的行为。例如数据库的连接参数(主机名,端口号等),这些参数可以存放在静态配置文件中,application运行时可以通过调用application:get_env(ParamKey)得到当前application配置的参数值。get_env(Foo, Par)得到某个指定application,Foo的配置参数值.

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

实际上,application的参数可以在很多地方配置(例如: 在静态配置文件中配置,一般是application的.app文件,甚至在erlang启动时作为启动命令的一部分为某个application配置运行参数),因此搞清这些不同地方进行配置关系(比如配置的缺省位置和如何覆盖override参数)是进行erlang OTP开发的基本功。

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


上层的配置可以覆盖(override)下层的配置:

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

System Configuration File, (.config文件), 图中第二层(绿色),当多个application连同erlang运行时, lib库打包发布时,整个发布包(粉红色虚线框)会有一个sys.config,在sys.config文件中配置可以对特定的application的环境参数进行定制:同名的参数将被覆盖。作为整个发布的配置文件, sys.config可以同时对发布包中的多个application进行参数配置。而且在我们的发布里不一定都叫sys.config这个名字,可以在erl命令的选项-config中指定其它名字

最高层(蓝色),直接在erl命令中直接为某个application配置参数,详细信息,例如如果打算将lager的日志级别设为debug(缺省是info),可以这样:
erl -lager handlers '[{lager_console_backend, debug}]'

如例所示,参数的值可以是比较复杂的erlang term,记得要用引号引起来。

这一级别显然比较适合在application开发、调试时临时调整application参数用。



这些配置参数的值实际上在application启动之前就已生效。比如上述例子中在erl启动时配置了lager的运行参数,但此时lager这个application还没有启动,当用application:start/1 启动lager后,相关的配置参数在此时应用到lager上。


另外,还有一种特殊的application叫做Library Applications(比如一个复数函数库),这种application有可能只提供一些函数,不会直接有erlang进程生成,所以一般不需要application:start就能使用。Library Applications中的参数也可以在app.src文件中配置,但是不用application:start这些文件中参数是不会自动加载的。


还要注意的一点是:当对系统打包发布(release)时,只能通过修改System Configuration File(默认名是sys.config的文件)覆盖环境配置参数,发布后再修改发布包中application的app文件是没有效果的。
  • 大小: 164 KB
分享到:
评论

相关推荐

    Erlang/OTP Application完整例子

    Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677

    Erlang / OTP 21.0 版本下载

    官网下载实在是困难,我把当前Erlang / OTP 21.0 版本提交到这里提供给大家和自己下载 原先积分0的现在都这么高了,为了方便大家,放出云盘地址:https://pan.百度.com/s/1hb8vPiMslXxNuJC8PvnKgg提取码wmx8

    Designing for Scalability with Erlang/OTP

    This book is what you get if you put together an Erlang enthusiast who worked on the R1 release of OTP in 1996 and a Distributed Systems specialist who discovered Erlang/OTP

    Erlang / OTP并发编程实战

    二十多年来,在传统电信领域高并发、高可靠、高容错的严酷环境下,Erlang语言和OTP平台被锻炼得坚如磐石,浓郁的函数式特质更是恰到好处地弥补了传统命令式语言在并发编程上的固有缺陷,大大降低了构筑并发、容错、...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    erlang_otp_win64_25.0

    erlang_otp_win64_25.0

    otp, erlang/otp.zip

    otp, erlang/otp erlang/otp是一种编程语言和运行时系统,用于构建大规模可以伸缩软实时系统,具有高可用性。费 OTP是一套Erlang库,由Erlang运行时系统,大量的组件和一套Erlang程序设计原则组成。 了解更多关于...

    windows 32位和64位 Erlang 21.0.1下载

    This guide covers Erlang/OTP requirements, recommendations, caveats and commonly used installation sources. Unsupported Versions Erlang/OTP versions older than 19.3 are not supported by currently ...

    erlang otp25 win安装包

    erlang otp25 win安装包

    Erlang/OTP reference

    Erlang/OTP reference

    Erlang/OTP并发编程实战 英文

    Erlang/OTP并发编程实战 英文 

    Erlang-otp_win64_23.0.zip

    rabbitmq安装前的环境安装,Erlang23.0 Windows64安装包,官网下载了几个小时

    (学成在线day05 RabbitMQ资料)Erlang/OTP20.3版本和RabbitMQ3.7.3

    (学成在线day05 RabbitMQ资料)Erlang/OTP20.3版本和RabbitMQ3.7.3

    cowboy, 用于 erlang/otp的小型,快速,现代的HTTP服务器.zip

    cowboy, 用于 erlang/otp的小型,快速,现代的HTTP服务器 牛仔牛仔是一个小型。快速和现代的用于 erlang/otp的HTTP服务器。目标牛仔的目标是提供一个收费的完整的,以英镑为代价的小代码库。 系统以英镑低延迟和低...

    Erlang/OTP 中文手册(R11B)

    Erlang/OTP 中文手册,包含一些入门语法基础,及OTP设计原则

    Erlang最新版本 otp-win64-25.0.3

    Erlang最新版本 25.0.3 windows 安装文件 解压直接安装 5个币-----------------------------------------------------------------------------------------------------------------------------------------------...

    erlang绿色解压版 otp_win64 21.0.1.zip

    erlang绿色解压版 otp_win64 21.0.1 OTP 20.0 下载,OTP (Open Telecom Platform) 是一个开源的 Erlang 分发和一个用 Erlang 编写的应用服务器,由爱立信开发。Erlang / OTP 21.0.1 是一个新的主要版本,新增了一些新...

    otp_Erlang_win64_22.1下载地址.txt

    otp_win64_22.1的官方地址下载太慢,共享一下otp_Erlang_win64_22.1百度云下载地址

    ErlangOTP并发编程实战

    《erlang/otp并发编程实战》侧重生产环境下的erlang 开发,主要讲解如何构建稳定、版本控制良好、可维护的产品级代码,凝聚了三位erlang 大师多年的实战经验。 《erlang/otp并发编程实战》主要分为三大部分:第一...

Global site tag (gtag.js) - Google Analytics