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

gen_event例子:terminal_logger

阅读更多
定义三个terminal_logger:
$$ terminal_logger1.erl
-module(terminal_logger1).
-behaviour(gen_event).

-export([init/1, handle_event/2, handle_call/2, handle_info/2, code_change/3, terminate/2]).

init(_Args) ->
  {ok, []}.

handle_event(ErrorMsg, State) ->
  io:format("*** Error1 *** ~p~n", [ErrorMsg]),
  {ok, State}.

handle_call(_Request, _State) ->
  {ok, [], []}.

handle_info(_Info, _State) ->
  {ok, []}.

code_change(_OlvVsn, _State, _Extra) ->
  ok.

terminate(_Args, _State) ->
  ok.

$$ terminal_logger2.erl
-module(terminal_logger2).
-behaviour(gen_event).

-export([init/1, handle_event/2, handle_call/2, handle_info/2, code_change/3, terminate/2]).

init(_Args) ->
  {ok, []}.

handle_event(ErrorMsg, State) ->
  io:format("*** Error2 *** ~p~n", [ErrorMsg]),
  {ok, State}.

handle_call(_Request, _State) ->
  {ok, [], []}.

handle_info(_Info, _State) ->
  {ok, []}.

code_change(_OlvVsn, _State, _Extra) ->
  ok.

terminate(_Args, _State) ->
  ok.

$$ terminal_logger3.erl
-module(terminal_logger3).
-behaviour(gen_event).

-export([init/1, handle_event/2, handle_call/2, handle_info/2, code_change/3, terminate/2]).

init(_Args) ->
  {ok, []}.

handle_event(ErrorMsg, State) ->
  io:format("*** Error3 *** ~p~n", [ErrorMsg]),
  {ok, State}.

handle_call(_Request, _State) ->
  {ok, [], []}.

handle_info(_Info, _State) ->
  {ok, []}.

code_change(_OlvVsn, _State, _Extra) ->
  ok.

terminate(_Args, _State) ->
  ok.


编译:
Eshell> c(terminal_logger1).
Eshell> c(terminal_logger2).
Eshell> c(terminal_logger3).


运行:
D:\erl\code>erl
Eshell V5.6.3  (abort with ^G)
1> gen_event:start_link({local, error_man}).
{ok,<0.31.0>}
2> gen_event:add_handler(error_man, terminal_logger1, []).
ok
3> gen_event:add_handler(error_man, terminal_logger2, []).
ok
4> gen_event:add_handler(error_man, terminal_logger3, []).
ok
5> gen_event:which_handlers(error_man).
[terminal_logger3,terminal_logger2,terminal_logger1]
6> gen_event:notify(error_man, "Hideto").
*** Error3 *** "Hideto"
ok
*** Error2 *** "Hideto"
7> *** Error1 *** "Hideto"
7>
分享到:
评论

相关推荐

    logger-app:将事件数据写为日志条目:writing_hand::right_arrow::right_arrow::right_arrow::right_arrow::file_folder::file_cabinet:

    :magnifying_glass_tilted_left:它能做什么 :thinking_face: Logger-app可以将事件记录到日志文件中。 与gRPC服务器通信的合同由event.proto文件定义。 event.proto是Google协议缓冲区,它为gRPC框架奠定了通信介质...

    Proxy_SQL_Logger:Proxy_SQL_Logger

    欢迎使用Proxy_SQL_Logger :waving_hand: PostgreSQL代理服务器,用于记录用户SQL查询 :house:安装make && ./proxy_sql_logger --user_side localhost:8080 --server_side localhost:5432 --log_file logs.txt作者 :...

    flexi_logger:防锈程序的灵活记录器,可以写入stderr或日志文件

    flexi_logger 灵活易用的记录器,可将日志写入stderr和/或文件和/或其他输出流,并且在程序运行时可能会受到影响。 用法 将flexi_logger添加到项目的Cargo.toml的依赖项部分,使用 [ dependencies ] flexi_logger =...

    gen_state_machine:OTP 19(及更高版本)中gen_statem的惯用Elixir包装器

    该包装器还为Logger提供了OTP错误翻译Logger ,当:gen_state_machine应用程序启动时,该翻译Logger会自动添加。 (可选)如果不希望将翻译Logger添加到Logger ,可以将:gen_state_machine添加到:included_...

    C++项目写日志文件log.h

    Logger_mgr* Logger_mgr::pmyself = NULL; logger_dayfile lgdayfile("Logs", "AppLogFile"); logger_base * Logger_mgr::pmylogger = &lgdayfile; // 在项目中需要的地方写日志信息 LOG("Log while begin"); LOG(...

    fluent-logger-erlang:搬家了

    例子 1 &gt; { ok , _Pid } = gen_event : start ({ local , yourlogger }),2 &gt; ok = gen_event : add_handler ( yourlogger , fluent_event , myapp ),ep18 3 &gt; ok = gen_event : notify ( yourlogger , { access , {...

    Dlib各种组件

    大名鼎鼎的Dlib(人脸特征点定位神器),官网下载的用VS2015运行报错,故而搬运了这个可以运行的版本。

    simple_json_logger:python内置Logger的简单,薄层,直接替换

    安装pip install simple_json_logger 测验python -m unittest discover 用法你好,世界 from simple_json_logger import JsonLoggerdef foo (): logger = JsonLogger () logger . info ( "Hello world!" )foo ()&gt;&gt; &gt;...

    env_logger:通过环境变量配置的`log`的日志记录实现

    env_logger 实现可以通过环境变量配置的记录器。 用法 在图书馆 env_logger在可执行文件(二进制项目)中使用时有意义。 图书馆应改用箱。 在可执行文件中 它必须与log一起添加到项目依赖项中: [ dependencies ] ...

    Event_Logger-8.1.rar_event

    标题中的"Event_Logger-8.1.rar_event"暗示了一个名为"Event Logger"的软件版本8.1,它被压缩成RAR格式的文件,可能包含了关于事件记录的相关内容。"event"标签进一步证实了这一点,这通常指的是系统或应用程序中...

    frida_ssl_logger:基于frida的ssl_logger

    frida_ssl_loggerssl_logger based on fridafor from修改内容优化了frida的JS脚本,修复了在新版frida上的语法错误;调整JS脚本,使其适配iOS和macOS,同时也兼容了Android;增加了更多的选项,使其能在多种情况下...

    rfm_ecomanager_logger:rfm_edf_ecomanager RF 基本单元的 Python 前端

    代码,在 Nanode / Arduino 上运行并与 rfm_ecomanager_logger 对话。 密切关注日志记录过程(如 rfm_ecomanager_logger),并在检测到问题时发送电子邮件。 从功率数据文本文件创建简单的统计数据。 主要用于检查...

    HOLUX_ezTour_Logger_installer20090921_v1.03

    标题中的“HOLUX_ezTour_Logger_installer20090921_v1.03”指的是一个特定版本的HOLUX ezTour日志记录器安装程序,发布于2009年9月21日,版本号为v1.03。HOLUX是一家专注于GPS导航和定位设备的制造商,而ezTour可能...

    rust-simple_logger:生锈的记录器,以可读的输出格式打印所有消息

    simple_logger 一个记录器,它以可读的输出格式打印所有消息。 输出格式基于使用的格式。用法use simple_logger :: SimpleLogger;fn main () { SimpleLogger :: new (). init (). unwrap (); log :: warn! ( "This ...

    activity_logger:记录和分析计算机使用情况的脚本

    activity_logger.pl在后台运行并监控计算机何时处于活动或空闲状态,以及哪个程序在前台。 它将将此数据存储在日志文件中。 提供了几个脚本来帮助分析记录的数据。 此代码在下获得 安装 将activity_logger.pl脚本...

    ecto_logger_json:将ecto数据记录为JSON,但字段略有不同

    EctoLoggerJson 将ecto数据记录为JSON,但字段略有不同依存关系毒埃克托安装如果,则可以将软件包安装为: 添加ecto_logger_json到您的依赖项列表mix.exs : ```elixirdef deps do [{:ecto_logger_json, "~&gt; 0.1.0"}...

    com.orhanobut:logger:1.15(logger1.15.jar)

    https://github.com/orhanobut/logger 把这个代码功能做成了一个jar包,可以在Eclipse中使用的logger架包。

    plug_logger_json:将http请求日志格式化为json的Elixir插件

    2. 在你的应用启动模块(通常是`MyApp.Web`或类似)中,配置`Plug.Logger`和`plug_logger_json`: ```elixir defmodule MyApp.Web do use Plug.Builder plug(Plug.Logger) plug Plug.LoggerJson, log_level: :...

    dll_logger_4.0.1.107

    《DLL_logger_4.0.1.107:优化与增强动态链接库日志记录功能》 在软件开发过程中,动态链接库(DLL)扮演着至关重要的角色,它允许程序共享代码和资源,提高效率并减少内存占用。DLL_logger_4.0.1.107是一个专门...

    500强公司培训资料 第十五章_Android内核驱动—杂项.pdf

    日志系统提供了丰富的文件操作接口,包括`logger_open`、`logger_read`、`logger_aio_write`、`logger_ioctl`和`logger_poll`,涵盖了日志的读写控制、状态查询等功能。 - `logger_open`:根据打开模式(读/写)...

Global site tag (gtag.js) - Google Analytics