erlang 응용 시스템 매개 변수 가 져 오기

3088 단어 erlang
많은 경우, 우리 프로그램 은 지난번 에 말 한 tcp 와 같은 미리 정 의 된 인자 가 필요 합 니 다.server 의 예
 
일반 매개 변 수 는 몇 가지 경로 가 있 는데 구체 적 으로 여기 http://blog.yufeng.info/archives/2852 를 참고 하 세 요.
 
app 에서 env 필드, 예 를 들 어 우리 tcpserver_app.src
{application, tcp_server,
 [
  {description, ""},
  {vsn, "0.1"},
  {registered, []},
  {applications, [
                  kernel,
                  stdlib
                 ]},
  {mod, { tcp_server_app, []}},
  {env, [
      {listen_port,7000}
  ]}
 ]}.

이 직접 컴 파일 후 실행 되 며, rebar generate 가 필요 없습니다.
 
또 하 나 는 rebar 프로젝트 를 기반 으로 한 rel / files / sys. config 에 넣 습 니 다. 예 를 들 어
[
 {sasl, [
         {sasl_error_logger, {file, "log/sasl-error.log"}},
         {errlog_type, error},
         {error_logger_mf_dir, "log/sasl"},      % Log directory
         {error_logger_mf_maxbytes, 10485760},   % 10 MB max file size
         {error_logger_mf_maxfiles, 5}           % 5 files max
        ]},
 
 {tcp_server,[
     {listen_port,7000}
    ]}
].

tcp_server 는 application 의 behavior 를 실현 한 모듈 이름 입 니 다.
 
응용 안의 코드 는 대략 이렇다.
-define(DEF_PORT,  2222).

get_app_env(Opt, Default) ->
    case application:get_env(Opt) of
        {ok, Val} -> Val;
        _ ->
            case init:get_argument(Opt) of
                [[Val | _]] -> Val;
                error       -> Default
            end
    end.

ListenPort = get_app_env(listen_port, ?DEF_PORT).

좋은 웹페이지 즐겨찾기