Logging to two files with different settings

前端 未结 2 671
无人共我
无人共我 2020-11-28 20:32

I am already using a basic logging config where all messages across all modules are stored in a single file. However, I need a more complex solution now:

  • Two f
相关标签:
2条回答
  • 2020-11-28 21:14

    You can do something like this:

    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')
    
    0 讨论(0)
  • 2020-11-28 21:28
    def setup_logger(logger_name, log_file, level=logging.INFO):
        l = logging.getLogger(logger_name)
        formatter = logging.Formatter('%(message)s')
        fileHandler = logging.FileHandler(log_file, mode='w')
        fileHandler.setFormatter(formatter)
        streamHandler = logging.StreamHandler()
        streamHandler.setFormatter(formatter)
    
        l.setLevel(level)
        l.addHandler(fileHandler)
        l.addHandler(streamHandler)    
    
    
    setup_logger('log1', txtName+"txt")
    setup_logger('log2', txtName+"small.txt")
    logger_1 = logging.getLogger('log1')
    logger_2 = logging.getLogger('log2')
    
    
    
    
    logger_1.info('111messasage 1')
    logger_2.info('222ersaror foo')
    
    0 讨论(0)
提交回复
热议问题