anacondaのspyder4.1.5にてlogger出力する下記プログラムを実行したところ、
出力が2回されてしまいます。
参考にしたサイト
https://gologius.hatenadiary.com/entry/2018/06/06/214541
python
1from logging import getLogger, Formatter, FileHandler,StreamHandler, DEBUG, shutdown 2from logging.handlers import RotatingFileHandler 3loggers = {} 4def setup_logger(moduleName): 5 if moduleName is None: 6 moduleName = __name__ 7 if loggers.get(moduleName): 8 return loggers.get(moduleName) 9 formatter = Formatter('[%(asctime)s | ' 10 '%(name)s | ' 11 '%(levelname)s] ' 12 '%(message)s') 13 streamHandler = StreamHandler() 14 streamHandler.setFormatter(formatter) 15 streamHandler.setLevel(DEBUG) 16 fileHandler = RotatingFileHandler("download.log", maxBytes=5000, backupCount=3, mode='w') 17 fileHandler.setFormatter(formatter) 18 fileHandler.setLevel(DEBUG) 19 logger = getLogger(moduleName) 20 logger.setLevel(DEBUG) 21 logger.addHandler(streamHandler) 22 logger.addHandler(fileHandler) 23 logger.propagate = False 24 loggers[moduleName] = logger 25 return logger 26def killLoggers(): 27 for l in loggers: 28 logger = loggers.get(l) 29 for h in logger.handlers: 30 logger.removeHandler(h) 31 shutdown() 32 return 33 34# # ログの初期設定を行う 35logger = setup_logger("aaa") 36# # ログを出力(debugレベル) 37logger.debug("test") 38killLoggers()
出力結果は
1回目
[2021-12-18 12:44:28,329 | aaa | DEBUG] test
2回目
[2021-12-18 12:44:45,057 | aaa | DEBUG] test
3回目
[2021-12-18 12:45:00,658 | aaa | DEBUG] test
[2021-12-18 12:45:00,658 | aaa | DEBUG] test
4回目
[2021-12-18 12:45:19,908 | aaa | DEBUG] test
[2021-12-18 12:45:19,908 | aaa | DEBUG] test
以降、二回出力のまま。Spyderを再起動すると1回目に戻ります。
あなたの回答
tips
プレビュー