[erlang-questions] Line numbers for logging/errors.

Eider Silva de Oliveira eider.oliveira@REDACTED
Wed Mar 12 19:09:59 CET 2008


I've found it in the mnesia example code! You'd find a lot of hints in  
the original source code.


On 12/03/2008, at 14:44, Richard Kelsall wrote:

> Thank you. That looks good. I'll experiment with it.
>
> Eider Silva de Oliveira wrote:
>> I use this:
>> -define(d(Format, Args),
>>        io:format("~s" ++ Format,  
>> [string:left(lists:flatten(io_lib:format("~p~p(~p):", [self(),? 
>> MODULE, ?LINE])), 35, $ ) | Args])).
>> On 12/03/2008, at 12:08, Richard Kelsall wrote:
>>> Nohl Attila Rajmund wrote:
>>>> Yes, erlang has excellent trace facilities, it shows me that the  
>>>> 'rfmm'
>>>> function was called - unfortunately it doesn't show that which of  
>>>> the 10
>>>> rfmm functions was called.
>>>
>>> Breaking a small subject off the main thread. I haven't written much
>>> Erlang yet so maybe I'm just missing something, but I get the  
>>> impression
>>> Erlang won't tell me the line number when something goes wrong. I  
>>> feel
>>> it would be useful to know this and very in keeping with the Erlang
>>> approach of making bugs nice and visible. So my vote while we're all
>>> requesting changes to Erlang :) is for more line number visibility.
>>>
>>> On a related subject I've played around with the LINE macro to tag
>>> my own logging/error messages with line numbers and the best I could
>>> produce was something like this :
>>>
>>>  -define(log(Line, Message, Var), log_message(?MODULE, Line,  
>>> Message,
>>>          ??Var, Var)).  % LINE macro always gives '1' if I put it  
>>> here.
>>>
>>>  log_message(Module, Line, Message, VarName, Var) ->
>>>     io:format("log: {~p, ~p} ~s ~s = ~p~n", [Module, Line, Message,
>>>               VarName, Var]).
>>>
>>> and then in my code I can do things like
>>>
>>>    ?log(?LINE, "Unexpected post", Other),
>>>
>>> This works fine, but it would be nice to just write
>>>
>>>    ?log("Unexpected post", Other),
>>>
>>> and get the line number somehow. Can this be done?
>>>
>




More information about the erlang-questions mailing list