1

I use logging to write log.But sometimes the log file's content is repeated. Likes this:

2018-04-20 13:41:19,164 INFO line:20 test
2018-04-20 13:41:19,164 INFO line:20 test
2018-04-20 13:41:19,164 INFO line:20 test
2018-04-20 13:41:19,164 INFO line:20 test

My code:

import logging
import os
import datetime

def write_log():
    logger = logging.getLogger()
    now_date = datetime.datetime.now().strftime('%Y%m%d')
    log_file = now_date + ".log" 
    if not os.path.exists("log"):
        os.makedirs("log")
    formatter = logging.Formatter('%(asctime)s %(levelname)s line:%(lineno)s %(message)s')
    file_handler = logging.FileHandler("log" + os.sep + log_file, mode='a', encoding='utf-8')
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)
    logger.setLevel(logging.INFO)
    return logger

mylog = write_log()
mylog.info("test")

How to remove the repeated log?

1 Answers1

0

As stated here, you can use a specific name for a logger. This way, you can avoid a duplicated creation, testing if it already exists...

# Set up a specific logger with our desired output level
my_logger = logging.getLogger(name)
if not my_logger.handlers:
     # Here I created handler, formatter, loglevel etc..
return my_logger
Dalton Cézane
  • 3,672
  • 2
  • 35
  • 60