Fast Logging Library for Erlang/OTP
Erlang
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
include
src
test
.gitignore
LICENSE
Makefile
README.md
TODO.md
cover.spec
fastlog.epm
rebar.config

README.md

Fast Erlang/OTP Logging Support

This small OTP application aims to bring together several utilities to provide fast and efficient logging support for Erlang/OTP applications. It is primarily intended as a wrapper around error_logger, so you can continue to take advantage of enhancements for SASL logging provided by tools like riak_err. Support for disk_log based logging, and choice between sync and async is in the pipeline.

Usage

Include it in your deps (or stick on your ERL_LIBS path) and use at your leisure.

%% rebar.config
{deps, [{fastlog, ".*", {git, "git@github.com:hyperthunk/fastlog.git", "master"}}]}.

Please consult the wiki for more details.

API Quickstart

demo() ->
    %% start the app
    fastlog:start(),

    %% configure your own application
    fastlog:configure(myapp),

    %% add a new (named) logger
    fastlog:add_logger('net.kit.event.*', debug),

    %% update the level of an existing logger
    fastlog:set_level(my.logger, warn),

    %% log statements....
    fastlog:debug("foobar"),
    fastlog:warn("it is ~p~n", [alive]),

    %% log statements to a specific logger....
    fastlog:debug(my.logger, "foobar"),

    %% log using wildcard - this will hit the 'net.kit.event.*'
    %% logger we defined earlier....
    fastlog:warn(net.kit.event.consumer, "I am the consumer....~n"),
    
    %% use macros (with fastlog_parse_trans these will be expanded
    %% to include lots of additional details)
    ?DEBUG("Hello ~s~n", ["World"]),
    ok.

There are many more features available, which are documented on the wiki.

Configuration Options

You can configure fastlog in your application (or release) config and load it using the fastlog:configure/1 function. Here's an example:

%% in app.config
{webapp, [
    {webconfig, [
        {ip, "127.0.0.1"},
        {port, 8080}
    ]},
    {fastlog, [
        {'web.*', [{level, warn}]},
        {'web.info.event.*', [{level, debug}]}
    ]}
]}

There are other configuration elements and options, which are documented on the wiki.

Status and Version Management

This project will use semantic versioning. API stability will be provided from version 1.0.0 onwards.