web-dev-qa-db-fra.com

Connexion à deux fichiers avec des paramètres différents

J'utilise déjà une configuration de journalisation de base où tous les messages de tous les modules sont stockés dans un seul fichier. Cependant, j'ai besoin d'une solution plus complexe maintenant:

  • Deux fichiers: le premier reste le même.
  • Le deuxième fichier doit avoir un format personnalisé.

J'ai lu les documents du module, mais ils sont très complexes pour moi en ce moment. Enregistreurs, gestionnaires ...

Donc, en bref:

Comment se connecter à deux fichiers en Python 3, c'est-à-dire:

import logging
# ...
logging.file1.info('Write this to file 1')
logging.file2.info('Write this to file 2')
58
marw

Vous pouvez faire quelque chose comme ça:

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


def setup_logger(name, log_file, level=logging.INFO):
    """Function 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')
99
eos87
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')
14
Gank