Avoid `logger=logging.getLogger(__name__)` without loosing way to filter logs

2024/11/16 3:26:34

I am lazy and want to avoid this line in every python file which uses logging:

logger = logging.getLogger(__name__)

In january I asked how this could be done, and found an answer: Avoid `logger=logging.getLogger(__name__)`

Unfortunately the answer there has the drawback, that you loose the ability to filter.

I really want to avoid this useless and redundant line.

Example:

import loggingdef my_method(foo):logging.info() 

Unfortunately I think it is impossible do logger = logging.getLogger(__name__) implicitly if logging.info() gets called for the first time in this file.

Is there anybody out there who knows how to do impossible stuff?

Update

I like Don't Repeat Yourself. If most files contain the same line at the top, I think this is a repetition. It looks like WET. The python interpreter in my head needs to skip this line every time I look there. My subjective feeling: this line is useless bloat. The line should be the implicit default.

Answer

Think well if you really want to do this.

Create a Module e.g. magiclog.py like this:

import logging
import inspectdef L():# FIXME: catch indexing errorscallerframe = inspect.stack()[1][0]name = callerframe.f_globals["__name__"]# avoid cyclic ref, see https://docs.python.org/2/library/inspect.html#the-interpreter-stackdel callerframereturn logging.getLogger(name)

Then you can do:

from magiclog import L
L().info("it works!")
https://en.xdnf.cn/q/120372.html

Related Q&A

Find all directories and files of your laptop [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.Want to improve this question? Update the question so it focuses on one problem only by editing this post.Closed 8…

How to format and write excel using pandas

Lets assume that we have nested python dictionaries which should be written in single excel sheet file. Following are sample dictionaries which can be used. Car = [{"carbmodel": "Model A…

Openpyxl is unable to read after modifying

Requirement : 1.create a gui using Tkinter 2.Update the excel by fetching values from Tkinter entry widget 3.Read another sheet of the same workbook 4.plot graph using inside the Tkinter window.Prob…

Rounding datetime based on time of day

I have a pandas dataframe with timestamps shown below:6/30/2019 3:45:00 PMI would like to round the date based on time. Anything before 6AM will be counted as the day before. 6/30/2019 5:45:00 AM -&g…

Scraping Project Euler site with scrapy [closed]

Closed. This question needs debugging details. It is not currently accepting answers.Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to repro…

Python date function bugs

I am trying to create a function in python which will display the date. So I can see the program run, I have set one day to five seconds, so every five seconds it will become the next day and it will p…

Retreiving data from a website [duplicate]

This question already has answers here:How to determine the IP address of the server after connecting with urllib2?(4 answers)Closed 9 years ago.Im terribly sorry if this is unacceptable or answered e…

How to comma separate an array of integers in python? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.Want to improve this question? Add details and clarify the problem by editing this post.Closed 5 years ago.Improve…

Python 2.7.5 - Where is it installed on Windows Vista? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.This question does not appear to be about a specific programming problem, a software algorithm, or s…

Python list of lists specific path combinations or permutations

I have a list of lists and am looking for something similar to combinations or permutations, but there are conditions that may result in good "Path" or "Dead_End". If "Dead_En…