[erlang-questions] is there any logging module for erlang?
Dave Smith
dizzyd@REDACTED
Thu Jun 12 16:39:07 CEST 2008
I think it might be worth noting that Erlang provides some powerful
runtime tracing tools. Where in python/java/c++ I would litter my code
with logging statements to keep track of what's happening where, I
find myself not needing that as much, since I can simply throw a trace
on the things I'm interested in, when/if there are problem. That's why
(I think) erlang is so light on logging subsystems.
Just a thought.. :)
D.
2008/6/12 devdoer bird <devdoer2@REDACTED>:
> thanks but it also doesn't support log filtering.
> Here is the explanation of filtering from python manual.
> "
>
> Filters can be used by Handlers and Loggers for more sophisticated filtering
> than is provided by levels. The base filter class only allows events which
> are below a certain point in the logger hierarchy. For example, a filter
> initialized with "A.B" will allow events logged by loggers "A.B", "A.B.C",
> "A.B.C.D", "A.B.D" etc. but not "A.BB", "B.A.B" etc. If initialized with the
> empty string, all events are passed.
>
> class Filter( [name])
> Returns an instance of the Filter class. If name is specified, it names a
> logger which, together with its children, will have its events allowed
> through the filter. If no name is specified, allows every event.
>
> filter( record)
> Is the specified record to be logged? Returns zero for no, nonzero for yes.
> If deemed appropriate, the record may be modified in-place by this method.
>
> "
> I think I need write one by myself.
> Thank you .
>
>
> 2008/6/12, Ulf Wiger (TN/EAB) <ulf.wiger@REDACTED>:
>>
>> devdoer bird skrev:
>>>
>>> Thanks.
>>> I've seen the error logger,but I need code something to make It support
>>> ciritcal levelt setting(info/debug/warming/error) and filterting(which can
>>> define conditions control whether one specific log record should be printed
>>> )
>>> What I need is more like log4cpp or python's logging module.
>>> And I've stolen some logging code from couchdb and ejabbered ,but they
>>> only support critical level setting .
>>> Is any other logging package you guys know?
>>
>> You can take a look at how mnesia does it.
>> Basically, it's this code in mnesia_lib.erl.
>>
>> BR,
>> Ulf W
>>
>>
>> report_system_event({'EXIT', Reason}, Event) ->
>> Mod = mnesia_monitor:get_env(event_module),
>> case mnesia_sup:start_event() of
>> {ok, Pid} ->
>> link(Pid),
>> gen_event:call(mnesia_event, Mod, Event, infinity),
>> unlink(Pid),
>>
>> %% We get an exit signal if server dies
>> receive
>> {'EXIT', Pid, _Reason} ->
>> {error, {node_not_running, node()}}
>> after 0 ->
>> gen_event:stop(mnesia_event),
>> ok
>> end;
>>
>> Error ->
>> Msg = "Mnesia(~p): Cannot report event ~p: ~p (~p)~n",
>> error_logger:format(Msg, [node(), Event, Reason, Error])
>> end;
>> report_system_event(_Res, _Event) ->
>> ignore.
>>
>> %% important messages are reported regardless of debug level
>> important(Format, Args) ->
>> save({Format, Args}),
>> report_system_event({mnesia_info, Format, Args}).
>>
>> %% Warning messages are reported regardless of debug level
>> warning(Format, Args) ->
>> save({Format, Args}),
>> report_system_event({mnesia_warning, Format, Args}).
>>
>> %% error messages are reported regardless of debug level
>> error(Format, Args) ->
>> save({Format, Args}),
>> report_system_event({mnesia_error, Format, Args}).
>>
>> %% verbose messages are reported if debug level == debug or verbose
>> verbose(Format, Args) ->
>> case mnesia_monitor:get_env(debug) of
>> none -> save({Format, Args});
>> verbose -> important(Format, Args);
>> debug -> important(Format, Args);
>> trace -> important(Format, Args)
>> end.
>>
>> %% debug message are display if debug level == 2
>> dbg_out(Format, Args) ->
>> case mnesia_monitor:get_env(debug) of
>> none -> ignore;
>> verbose -> save({Format, Args});
>> _ -> report_system_event({mnesia_info, Format, Args})
>> end.
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>
More information about the erlang-questions
mailing list