Erlang學習記錄:app demo

來源:互聯網
上載者:User

標籤:lan   form   reg   rgs   env   max   .bat   art   ...   

目錄結構
│  Emakefile│  make.bat│  start.bat├─config│      config.config│      server.app├─ebin│      wulin_app.beam│      wulin_sup.beam│      util.beam│      demo.beam├─logs│      debug.log└─src       wulin_app.erl       wulin_sup.erl       util.erl       demo.erl

config 配置目錄

ebin 編譯輸出目錄

logs 日誌輸出目錄

src 原始碼目錄

Emakefile(編譯配置)
{["src/*"],[{outdir, "ebin"}]}.

src/* 表示編譯src目錄下所有的原始碼檔案

outdir 指定編譯後的beam檔案輸出目錄

make.bat(編譯命令)
erl -make all
start.bat(啟動app)
cd configerl -name [email protected] -setcookie mywulin -boot start_sasl -noshell -config config -pa ../ebin/ -s wulin_app start

-noshell 禁止輸入

-config xxx 負載檔案名為xxx.config的配置

-pa 指定目錄

-s xxx yyy 啟動xxx模組的yyy函數

config.config(env變數)
[    {        sasl,        [            {sasl_error_logger, false},            {errlog_type, error},            {error_logger_mf_dir, "../logs"},            {error_logger_mf_maxbytes, 1048760},            {error_logger_mf_maxfiles, 10}        ]    },{       ab,       []      }].

可以在程式內使用application:get_env/2擷取這裡定義的變數

樣本:application:get_env(sasl, error_logger_mf_dir). 返回{ok,"../logs"}

server.app
{   application, server % 對應檔案名稱   , [{description,  "Server"}      , {vsn, ‘1.0a‘}      , {modules, []}      , {registered, []}      , {applications, [kernel, stdlib, sasl]} % 依賴庫      , {env, [{author, "demo"}]}      , {mod, {wulin_app, [12321]}} % 相依模組,主模組      , {start_phases, []}]}.

server(app名)必須和server.app(檔案名稱)一致

wulin_app.erl
-module(wulin_app).-behaviour(application). -export([start/2,start/0, stop/1]). start() -> application:start(server).start(_Type, [A]) ->      util:debug("Server Starting.... ~p ~n", [A]),      util:debug("Server Starting.... ~n", []),      {ok, Pid} = wulin_sup:start_link(),      util:debug("Server Started in ~p ~n", [Pid]),          {ok, Pid}.      stop(_State) ->      io:format("Server Stoped..... ~n"). 

application:start(server)中的server對應server.app中的server

wulin_sup.erl
-module(wulin_sup).-behaviour(supervisor).-export([start_link/0,init/1]).start_link() ->      supervisor:start_link({local,?MODULE}, ?MODULE, []).init([]) ->       {ok, {{one_for_one, 3, 10},[        {demo, {demo, start, []}, permanent, 10000, worker, []}    ]}}.  
demo.erl
-module(demo).-export([start/0]).start() ->      util:debug("xxxxx ~n", []),    {‘ok‘, self()}.
util.erl
-module(util).-export([debug/2]). debug(F, Args) ->    {ok, LogPath} = application:get_env(sasl, error_logger_mf_dir),    File = LogPath ++ "/debug.txt",    {ok, Steam} = file:open(File, [write, append]),    io:format(Steam, F, Args),    file:close(Steam).
debug.log
Server Starting.... 12321 Server Starting.... xxxxx Server Started in <0.49.0> 
流程

start.bat -> wulin_app:start/0 -> server.app ->

wulin_app:start/2 -> wulin_sup:start_link/0 -> demo:start/0

Erlang學習記錄:app demo

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.