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使得同一个日志信息可以记录在多个地方。
日志信息中还可包含格式化的时间信息。