[Erlang 学习笔记] 使用 rebar 创建 application(basho- lager 应用实例)

来源:互联网 发布:国际船舶网络 编辑:程序博客网 时间:2024/06/16 18:56

一开始自己写application的时候要手动创建好几个模块,最近发现了一个好东西basho-rebar,用rebar创建application可以自动生成三个文件:

lqg_app.erl

lqg_sup.erl

lqg.app.src

然后,再添加个人需要的逻辑业务,一个application很快就出炉了。。。。。。

具体做法: ======这里用了basho-lager(erlang的日志应用)来做实例


1.创建应用文件夹(很简单的一步)

mkdir lapp

2.进入创建好的应用文件夹,下载 rebar 执行文件到此处

cd lapp/wget http://cloud.github.com/downloads/basho/rebar/rebar && chmod u+x rebar

3.使用rebar创建application

./rebar create-app appid=lager

这是能看到 在路径 lapp/src/下生成了三个文件

lqg@lqg:~/lapp$ ./rebar create-app appid=lager==> lapp (create-app)Writing src/lager.app.srcWriting src/lager_app.erlWriting src/lager_sup.erl

4。由于lager有依赖的应用,所以要把以来解决,这里可以通过 rebar的配置文件去把依赖自动下载补全,当然前提是写好了配置文件 rebar.config

在这里,rebar.config的内容如下:

{erl_opts, [debug_info]}.{deps, [  {lager_amqp_backend, ".*", {git, "https://github.com/jbrisbin/lager_amqp_backend.git", "master"}},  {amqp_client,   ".*", {git, "https://github.com/jbrisbin/amqp_client.git", {tag,"rabbitmq_2.7.0"}}}]}.

接着,执行 ./rebar get-deps 把依赖下载回来,路径是  lapp/deps/*

lqg@lqg:~/lapp$ ./rebar get-deps==> lapp (get-deps)Pulling lager_amqp_backend from {git,"https://github.com/jbrisbin/lager_amqp_backend.git",                                     "master"}Cloning into 'lager_amqp_backend'...Pulling amqp_client from {git,"https://github.com/jbrisbin/amqp_client.git",                              {tag,"rabbitmq_2.7.0"}}Cloning into 'amqp_client'...==> Entering directory `/home/lqg/lapp/deps/lager_amqp_backend'==> Entering directory `/home/lqg/lapp/deps/amqp_client'==> amqp_client (get-deps)Pulling rabbit_common from {git,"git://github.com/jbrisbin/rabbit_common.git",                                {tag,"rabbitmq_2.7.0"}}Cloning into 'rabbit_common'...==> Entering directory `/home/lqg/lapp/deps/rabbit_common'==> rabbit_common (get-deps)==> Leaving directory `/home/lqg/lapp/deps/rabbit_common'==> Leaving directory `/home/lqg/lapp/deps/amqp_client'==> lager_amqp_backend (get-deps)Pulling lager from {git,"https://github.com/basho/lager.git",{tag,"0.9.4"}}Cloning into 'lager'...==> Entering directory `/home/lqg/lapp/deps/lager'==> lager (get-deps)==> Leaving directory `/home/lqg/lapp/deps/lager'==> Leaving directory `/home/lqg/lapp/deps/lager_amqp_backend'

5.这时候基本完成了,差个测试代码,随便写个  test.erl

-module(test).-compile([{parse_transform, lager_transform}]).  %%lager的编译要求-export([t/0]).t()->    lager:info("lqg").

6.都准备好之后就要编译了,这里编译不使用不需要makefile了,直接用rebar来执行    ./rebar compile  

7.启动 erl  进行测试

erl -sname lqg -pa ebin/ -pa deps/*/ebin/ 

添加启动命令参数,把依赖一并包括进来。。。

lqg@lqg:~/lapp$ erl -sname lqg -pa ebin/ -pa deps/*/ebin/Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:false]Eshell V5.9.1  (abort with ^G)       (lqg@lqg)1> application:start(compiler).   %%此处是lager的依赖应用,要先启动,ok(lqg@lqg)2> application:start(syntax_tools).%%同上ok(lqg@lqg)3> application:start(lager).       ok16:39:31.020 [info] Application lager started on node lqg@lqg(lqg@lqg)4> test:t().16:39:39.491 [info] lqg    %%日志输出ok(lqg@lqg)5> 

在回头看看,现在发布一个应用,很容易了=。=


这里顺便说下lager的一些特点

1.内部定义了6个日志等级 debug<info<notice<warning<error<critcal<alert<emergency

2.支持动态设置日志输出等级  lager:set_loglevel/2,set_loglevel/3

3.支持日志汇总 lager_amqp_backend




原创粉丝点击