Python multiple logger for multiple modules
<p>I have two files namley main.py and my_modules.py. In main.py I have defined two loggers like this</p>

<pre><code>    #main.py
    URL_LOGS = "logs/urls.log"
    GEN_LOGS = 'logs/scrape.log'
    #Create two logger files    
    formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
    # first file logger
    url_info_logger = logging.getLogger('URL_Fetcher')
    hdlr_1 = logging.FileHandler(URL_LOGS)
    hdlr_1.setFormatter(formatter)
    url_info_logger.setLevel(logging.DEBUG)
    url_info_logger.addHandler(hdlr_1)

    #second Logger
    general_logger = logging.getLogger("GENERAL")
    hdlr_2 = logging.FileHandler(GEN_LOGS)
    hdlr_2.setFormatter(formatter)
    general_logger.setLevel(logging.DEBUG)
    general_logger.addHandler(hdlr_2)

   module1()
   do_something()
</code></pre>

<p>In my second file (my_modules.py) I have to use both loggers, Following is the sample code for my_modules.py</p>

<pre><code> #my_modules.py   
 import logging

    def module1():
        general_logger.info("Logger Module1")
        url_info_logger.info("New URL found")

    def do_something():
        general_logger.info("Logger Module2")
        url_info_logger.info("Url parsed")    
</code></pre>

<p>How do I implement loggers to be accessed in my_modules.py</p>

<p>if you transform the second module in a class, you can simply:</p>

<ul>
<li>declare the logger in the first modulue</li>
<li>create the new class passing the 2 logger as parameters</li>
<li>use the logger in the new class</li>
</ul>

<p>Example:</p>

<pre><code>import logging

class MyClassName:

    def __init__(self, general_logger, url_info_logger):
    self.general_logger = general_logger
    self.url_info_logger = url_info_logger

    def module1(self):
    self.general_logger.info("Logger Module1")
    self.url_info_logger.info("New URL found")

    def do_something(self):
    self.general_logger.info("Logger Module2")
    self.url_info_logger.info("Url parsed")
</code></pre>

<p>In the main </p>

<pre><code>#main.py
...
myobj = MyClassName(general_logger,url_info_logger)
myobj.do_something()
myobj.module1()
</code></pre>

python logging