How do you log in your projects?

alister alister.ware at ntlworld.com
Fri Feb 11 16:11:27 EST 2022


On Wed, 9 Feb 2022 19:38:23 +0000, Martin Di Paola wrote:

>>> - 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
In my current project I use the loggin module & write to a file
I log at info level for the entry & exit of each function/method
& scatter debug level logs for arease where I need to check data is as 
expected
I have also found Ansi colour codes usefull when skiming through the 
output





-- 
If an experiment works, something has gone wrong.


More information about the Python-list mailing list