log4erl是一个在Erlang下很好的处理log的tools。可是,一些系统崩溃的error_msg不能用log4erl直接捕捉。因为OTP系统默认的error处理是给error_logger的。
可是系统崩溃的log对于debug和improve来说至关重要。一开始,我是一面用log4erl,一面用error_logger:logfile({open, FileName})来分别记录我自己定义的log和捕捉系统崩溃时的log。
之前,就有听说过error_logger可以自己写callback module然后add_report_handler。可是,之前一直没有时间去看,这个callback module的具体要求和格式。
今天发现了log4erl下面原来已经提供了这个callback module:error_logger_log4erl_h,所以,这一切都变得很简单。只要:
error_logger:add_report_handler(error_logger_log4erl_h).
就可以,转给log4erl来记录相应的系统发出的log了。
看了一下,error_logger_log4erl_h的源代码,发现原来就是这么简单地mapping一下就可以了:
-module(error_logger_log4erl_h).
-behaviour(gen_event).
...
-record(elogger_l4e_mappings, {error=error, info_msg=info, warning_msg=warn,
error_report=error, info_report=info,
warning_report=warn}).
...
init([])->
{ok, #elogger_l4e_mappings{}};
init(Conf) ->
io:format("Conf ~p~n",[Conf]),
{ok, mapping(Conf, #elogger_l4e_mappings{})}.
...
handle_event({error, _GLeader, {_PID, Msg, Data}}, #elogger_l4e_mappings{error=L} = State) ->
R = log4erl:log(L, Msg, Data),
{R, State};
handle_event({info_msg, _GLeader, {_PID, Msg, Data}}, #elogger_l4e_mappings{info_msg=L} = State) ->
R = log4erl:log(L, Msg, Data),
{R, State};
handle_event({warning_msg, _GLeader, {_PID, Msg, Data}}, #elogger_l4e_mappings{warning_msg=L} = State) ->
R = log4erl:log(L, Msg, Data),
{R, State};
handle_event({error_report, _GLeader, _}, State) ->
{ok, State};
handle_event({info_report, _GLeader, _}, State) ->
{ok, State};
handle_event({warning_report, _GLeader, _}, State) ->
{ok, State}.
...
分享到:
相关推荐
用不惯sasl的,可以用log4xxx的erlang版,log4erl。 log4erl Manual: =============== TOC: ==== 1. Features 2. Installation 3. Usage 4. API 5. Configuration 6. Known issues 7. Future development 8. ...
- 使用log4erl提供的函数进行日志记录,如`log4erl:info/1`、`log4erl:error/2`等,这些函数会自动附加必要的上下文信息。 - 定期检查和分析日志,以便快速发现并解决问题。 - 对于大型项目,可以结合监控系统,实时...
标题中的"erl:otp_src_24.0.5.tar.gz"指的是Erlang的源码包,其中"otp_src_24.0.5"是Erlang/OTP (Open Telecom Platform) 的24.0.5版本的源代码。Erlang是一种面向并发的、函数式的编程语言,常用于构建高可用性和...
1. 确保选择与系统架构匹配的版本,即64位系统使用`otp_win64_21.1.exe`,32位系统使用`otp_win32_21.1.exe`。 2. 安装路径不应包含空格或非ASCII字符,以免导致后续RabbitMQ配置问题。 3. 安装后,需要将Erlang的...
这包括设置正确的环境变量,如ERL_INETRC,以及确保 RabbitMQ 插件目录被加入到 OTP 的代码路径中。此外,还需要根据项目需求安装相应的 RabbitMQ 插件,如管理界面或特定的协议插件。 在 OTP 22.0 版本中,有一些...
The Kernel application is the first application started. It is mandatory in the...• error_logger • file • global • global_group • heart • inet • net_kernel • os • pg2 • rpc • seq_trace • user
在Erlang中,`NIF (Native Implemented Functions)` 是一种机制,允许开发者使用其他语言(如C或Rust)...通过理解`rustler_macro`的过程宏和Erlang NIF的生命周期,开发者可以轻松地将Rust功能集成到Erlang系统中。
4. **32位系统兼容性**:尽管现在64位系统已经成为主流,但仍有部分用户或服务器在使用32位操作系统。OTP提供32位版本,确保了这些平台上的兼容性,让所有开发者都能利用Erlang和OTP的强大功能。 5. **安装过程**:...
erl_to_html 使用解析变换和erl_id_trans.erl Erlang的代码转换为HTML,跨度的一切。...我不知道我需要怎么做许可证,但是由于我是从Erlang示例代码中复制erl_id_trans.erl,因此我正在使用Erlang公共许可证。
例如,使用`erl`命令启动Erlang shell,可以编写和运行Erlang代码,测试和调试系统。OTP还提供了诸如`rebar3`或`mix`这样的构建工具,便于管理和构建Erlang项目。 在分布式系统中,OTP的进程模型允许应用程序创建轻...
OTP(Open Telephony Platform)是Erlang的核心部分,包含了许多库、开发工具和应用程序,使得Erlang在分布式系统、实时系统以及容错系统等领域表现出色。这个压缩包包含了构建Erlang运行环境所需的全部源代码。 ...
4. **错误处理**:Erlang VM的并发模型要求所有的错误都必须是可恢复的,因此,NIFs需要处理错误并返回适当的Erlang值。 5. **线程安全**:由于Erlang VM可能在多个线程之间调度进程,因此NIFs必须是线程安全的。这...
**OTP (Open Telecom Platform) for Windows 64位 25.0.1 版本:ErLang 下载** ErLang是一种高级并发编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高度可靠和可扩展的分布式系统。OTP(Open Telecom ...
Erlang OTP (Open Telephony Platform) 是一种高级编程语言,专为构建高并发、分布式、容错性强的系统而设计。22.3 版本是 Erlang OTP 的一个稳定版本,它提供了许多增强的功能和性能改进。下面将详细介绍这个版本的...
在开发和运行使用Erlang OTP或RabbitMQ的应用时,还需要了解Erlang的语法和编程模型,包括模块、函数、进程通信(通过消息传递)、错误处理和日志记录等。此外,熟悉RabbitMQ的基本概念,如exchange(交换器)、...
- 下载:访问Erlang Solutions或Erlang/OTP官方网站获取适合操作系统的安装包。 - 安装:运行下载的`.exe`文件,按照向导完成安装。 - 配置环境变量:确保`ERLANG_HOME`和`PATH`指向Erlang的安装目录。 - 检查...
标题“erlong-otp_win64_21.3.zip”指的是Erlang OTP(Open Telecom Platform)在Windows 64位系统上的版本21.3的压缩包。Erlang是一种动态类型的、函数式的编程语言,特别适合构建高可用性、容错性强和面向并发的...
OTP(Open Telecommunications Platform,开放电信平台)是Erlang编程语言的核心库,它提供了一系列强大的工具和库,用于构建高可靠性和可扩展性的分布式系统。`otp_src_23.1.tar.gz`是一个源码包,包含了Erlang OTP...
4. **错误修复**:解决了已知的问题和漏洞,提升了系统的稳定性和可靠性。 5. **安全改进**:可能加强了安全相关的特性,如加密和认证机制,以保护系统免受攻击。 6. **开发工具升级**:可能更新了调试器、代码分析...
"otp_src_22.0.tar.gz" 是一个源于 Erlang/OTP (Open Telecom Platform) 开源项目的压缩文件。Erlang 是一种并发性极强、面向分布式计算的编程语言,而 OTP 是一个由 Erlang 提供的软件框架,包含了各种库、工具和...