How do you log in your projects?
Martin Di Paola
martinp.dipaola at gmail.com
Wed Feb 9 14:38:23 EST 2022
>> - On a line per line basis? on a function/method basis?
In general I prefer logging line by line instead per function.
It is easy to add a bunch of decorators to the functions and get the
logs of all the program but I most of the time I end up with very
confusing logs.
There are exceptions, yes, but I prefer the line by line where the log
should explain what is doing the code.
>> - Which kind of variable contents do you write into your logfiles?
>> - How do you decide, which kind of log message goes into which level?
>> - How do you prevent logging cluttering your actual code?
These three comes to the same answer: I think on whom is going to read
the logs.
If the logs are meant to be read by my users I log high level messages,
specially before parts that can take a while (like the classic
"Loading...").
If I log variables, those must be the ones set by the users so he/she
can understand how he/she is controlling the behaviour of the program.
For exceptions I print the message but not the traceback. Across the
code tag some important functions to put an extra message that will
enhance the final message printed to the user.
https://github.com/byexamples/byexample/blob/master/byexample/common.py#L192-L238
For example:
for example in examples:
with enhance_exceptions(example, ...):
foo()
So if an exception is raised by foo(), enhance_exceptions() will attach
to it useful information for the user from the example variable.
In the main, then I do the pretty print
https://github.com/byexamples/byexample/blob/master/byexample/byexample.py#L17-L22
If the user of the logs is me or any other developer I write more debugging stuff.
My approach is to not log anything and when I have to debug something
I use a debugger + some prints. When the issue is fixed I review which
prints would be super useful and I turn them into logs and the rest is
deleted.
On Tue, Feb 08, 2022 at 09:40:07PM +0100, Marco Sulla wrote:
>These are a lot of questions. I hope we're not off topic.
>I don't know if mine are best practices. I can tell what I try to do.
>
>On Tue, 8 Feb 2022 at 15:15, Lars Liedtke <liedtke at punkt.de> wrote:
>> - On a line per line basis? on a function/method basis?
>
>I usually log the start and end of functions. I could also log inside
>a branch or in other parts of the function/method.
>
>> - Do you use decorators to mark beginnings and ends of methods/functions
>> in log files?
>
>No, since I put the function parameters in the first log. But I think
>that such a decorator it's not bad.
>
>> - Which kind of variable contents do you write into your logfiles? Of
>> course you shouldn't leak secrets...
>
>Well, all the data that is useful to understand what the code is
>doing. It's better to repeat the essential data to identify a specific
>call in all the logs of the function, so if it is called
>simultaneously by more clients you can distinguish them
>
>> - How do you decide, which kind of log message goes into which level?
>
>It depends on the importance, the verbosity and the occurrences of the logs.
>
>> - How do you prevent logging cluttering your actual code?
>
>I have the opposite problem, I should log more. So I can't answer your question.
>--
>https://mail.python.org/mailman/listinfo/python-list
More information about the Python-list
mailing list