erlang log4erl日志记录

本文详细介绍了log4erl作为一个应用启动后如何运行gen_server模块接收日志请求,并最终调用gen_event模块异步写日志的过程。包括下载、编译、启动以及配置步骤,并展示了如何使用log4erl的日志功能,如设置日志级别、添加日志记录器和输出方式等。同时,对比了log4erl与error_logger的不同之处,强调了其在项目日志管理中的优势。

           log4erl是一个application,所以要使用必须先启动才行,log4erl做为application启动后会运行一个gen_server类型的模块接收记录日志请求,该模块最终调用一个gen_event的模块异步写日志。

          下载:http://code.google.com/p/log4erl/

          直接解压文件,通过命令行进入源文件目录编译启动。

          $> cd src
          $> erl
          > make:all([{outdir, "../ebin"}]).

          >application:start(log4erl).

         > log4erl:conf("../priv/log4erl.conf").

          > log4erl:add_logger(messages_log).
          > log4erl:add_console_appender(messages_log, cmd_logs, {warn, "[%L] %l%n"}).

 

          6> log4erl:info("Information message").
          ok
          7> log4erl:info("log4erl test...").
          ok
          8> log4erl:warn("log4erl warn test...").
          21:19:39.582000 2012-04-17 [warn] log4erl warn test...
          ok
          9> log4erl:debug("log4erl debug test...").
          ok
          10> log4erl:error("log4erl error test...").
           21:20:05.338000 2012-04-17 [error] log4erl error test...

      其实文档里面说的非常详细,具体等有时间深入研究。总体来说使用log4erl作为项目日志工具还是比较不错的。

与error_logger不同,log4erl不能直接将erlang term作为日志信息记录,log4erl的日志的使用类似与io:format。

 其它与log4erl的使用相同,五级日志信息:warn | info | error | fatal | debug。

系统中有多个日志记录器(logger),用户根据自己的需要可以用不同的日志记录器记录不同类型的日志,这样我们可以按各种标准划分日志,例如不同功能模块的日志信息由不同的日志记录器负责。

这些日志记录器由用户自己定义的atom标识,还有一个缺省的日志记录器,如果你不指定哪个日志记录器记录,就会用缺省的那个。

每个日志记录器(logger)可以有一个或多个输出方式(这被称为appender),每个appender都有一个atom标识,各个appender可能各不相同,可以是输出到终端屏幕上的,可以是记录在文件上的,smtp的,未来还有记录到数据库上的、SNMP的、SMTP的。一个日志记录器有多个appender使得同一个日志信息可以记录在多个地方。

日志信息中还可包含格式化的时间信息。

 

 

        

用不惯sasl的,可以用log4xxx的erlang版,log4erllog4erl Manual: =============== TOC: ==== 1. Features 2. Installation 3. Usage 4. API 5. Configuration 6. Known issues 7. Future development 8. License 1. FEATURES: ============ - Multiple logs - Currently, only size-based log rotation of files for file appender - Support default logger if no logger specified - 5 predifined log levels (debug, info, warn, error, fatal) - A log handler for error_logger - Support for user-specified log levels - Support for a log formatter (similar to Layouts in Log4J) - Support for console log - Support for smtp formatter - Support for XML logs - Support for syslog - Support for changing format and level of appender during run-time 2. INSTALLATION: ================ To compile & install log4erl, download source from google code's website (http://code.google.com/p/log4erl/) or from svn: $> svn checkout http://log4erl.googlecode.com/svn/trunk/ log4erl or from github public repository (http://github.com/ahmednawras/log4erl/). $> cd log4erl $> make or you can run the below from erlang shell: $> cd src $> erl 1> make:all([{outdir, "../ebin"}]). 3. USAGE: ========= 1- In order to use log4erl, you need to first include it in the path. There are 2 ways to do this: a) include the "log4erl" directory in erlang's "lib" directory in the target machine (cp -Rf log4erl /where/erlang/is/lib). $> cp -Rf log4erl /usr/local/lib/erlang/lib/ b) include the "log4erl" ebin directory in the path when running you program $> erl -pz /path/to/log4erl ... 2- Once the log4erl directory is included, you can use its API as described in section "API". but before, you need to run: > application:start(log4erl). 3- Create a configuration file and load it using log4erl:conf(File) > log4erl:conf("priv/log4erl.conf"). 4- Alternatevly, you can create loggers & add appenders to them programmatically as appropriate. You can do this as per the API below. > log4erl:add_logger(messages_log). > log4erl:add_console_appender(messages_log, cmd_logs, {warn, "[%L] %l%n"}). where Conf is the erlang term describing how the log is to be handled You can also add more types of appenders, which is explained in API.txt and Appneders_API.txt. 5- Now, you can log whatever messages you like as per logging functions described in API. > log4erl:info("Information message"). Precedance of log levels are: all = debug < info < warn < error < fatal < none User defined levels are always written except when none level is specified in the logger specification (See below). 4. API: ======= Please look at API.txt file for more information about the API. 5. CONFIGURATION: ================= Please look at CONFIGURATION.txt for more information about how to configure log4erl. 6. KNOWN ISSUES: ================ - Name of both loggers & appenders should be unique and not registered since log4erl will try and register their names. If the name is already registered, nothing will happen. This will be fixed soon. - If you run change_log_format/1,2 and appender crashed, a restart from the supervisor will not record the latest format used. It will only use either the default format or the format used in the argument is supplied. 7. FUTURE DEVELOPMENT: ====================== - Add support for different log persistance methods (e.g files, XML, console, DB, SNMP, syslog...etc) - Add support for time-based log rotation - Multiple configuration format (Erlang terms, XML?, properties files?) - Add support for NDC & MDC ??? Please send your suggestion to ahmed.nawras <at @ at> gmail <dot . dot> com 8. LICENSE: =========== This software is subject to "Mozilla Public License 1.1". You can find the license terms in the file 'LICENSE.txt' shipping along with the source code. You may also get a copy of the license term from the URL: "http://www.mozilla.org/MPL/MPL-1.1.html".
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值