1

I have usage and application logs. I want to write application logs to app.log file and usage logs to usage.log file.

Here is how I have tried to do this:

# Application Log:
logging.basicConfig(filename = "app.log", level = logging.DEBUG, format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Usage Log:
logging.basicConfig(filename = "usage.log", level = logging.DEBUG, format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s")

For some reason I don't see the second file created.

Please advise what am I missing here?

SteveS
  • 3,789
  • 5
  • 30
  • 64

2 Answers2

0

This is what solved my issue:

import logging
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')


def setup_logger(name, log_file, level=logging.INFO):
    """To setup as many loggers as you want"""

    handler = logging.FileHandler(log_file)        
    handler.setFormatter(formatter)

    logger = logging.getLogger(name)
    logger.setLevel(level)
    logger.addHandler(handler)

    return logger

# first file logger
logger = setup_logger('first_logger', 'first_logfile.log')
logger.info('This is just info message')

# second file logger
super_logger = setup_logger('second_logger', 'second_logfile.log')
super_logger.error('This is an error message')

def another_method():
   # using logger defined above also works here
   logger.info('Inside method')

Source

SteveS
  • 3,789
  • 5
  • 30
  • 64
0

add different Handlers to the default logger:

import logging

def init_logging():
    logger = logging.getLogger()
    file_handler = logging.FileHandler('info.log')
    error_handler = logging.FileHandler('error.log')
    console_handler = logging.StreamHandler()
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)
    error_handler.setFormatter(formatter)
    error_handler.setLevel(logging.ERROR)
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)
    logger.addHandler(error_handler)
    logger.setLevel(logging.DEBUG)

# use
init_logging()
LOGGER = logging.getLogger()
LOGGER.info('abc')
Keven Li
  • 524
  • 3
  • 8