Skip to content
A logger for erlang in the spirit of Log4J.
Erlang Makefile
Find file
Latest commit 76ef24c Nov 26, 2015 @ahmednawras Merge pull request #21 from legoscia/handle-leex-error
Signal errors when lexing
Failed to load latest commit information.
ebin fixed issue of cutoff with user defined log level Jun 16, 2014
include time-based file rotation Jun 16, 2012
priv time-based file rotation Jun 16, 2012
src Signal errors when lexing Nov 16, 2015
.gitignore fixed issue of cutoff with user defined log level Jun 16, 2014
API.txt doc update May 3, 2009
Appenders_API.txt version 0.8.6 May 3, 2009
CONFIGURATION.txt version 0.8.5 Mar 24, 2009
LICENSE.txt src upload Feb 28, 2009
Makefile Rebarized the build. Jul 11, 2011
README.txt doc update2 May 3, 2009
TODO.txt version 0.8.5 Mar 24, 2009
rebar Rebarized the build. Jul 11, 2011
rebar.config fixed issue of cutoff with user defined log level Jun 16, 2014


log4erl Manual:

1. Features
2. Installation
3. Usage
4. API
5. Configuration
6. Known issues
7. Future development
8. License

- 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

To compile & install log4erl, download source from google code's website
( or  from svn:
$> svn checkout log4erl

or from github public repository (

$> cd log4erl
$> make

or you can run the below from erlang shell:

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

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.

Please look at CONFIGURATION.txt for more information about how to configure log4erl.

- 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.  

- 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

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: "".
Something went wrong with that request. Please try again.