關於Erlang/OTP的application參數配置

來源:互聯網
上載者:User

轉載: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啟動之前就已生效。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.