Я пытаюсь получить запись в журнал файлов, а также в консоль на основе предоставленного аргумента.
Код для этой части выглядит следующим образом:
logFormatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s")
_logger = logging.getLogger(__name__)
fileHandler = logging.FileHandler("{0}/{1}.log".format(logPath, fileName), mode='a')
fileHandler.setLevel(logging.DEBUG)
fileHandler.setFormatter(logFormatter)
_logger.addHandler(fileHandler)
def parse_args(args):
parser = argparse.ArgumentParser(
description="My Script")
parser.add_argument(
"-v",
"--verbose",
dest="loglevel",
help="set loglevel to INFO",
action="store_const",
const=logging.INFO)
parser.add_argument(
"-vv",
"--very-verbose",
dest="loglevel",
help="set loglevel to DEBUG",
action="store_const",
const=logging.DEBUG)
return parser.parse_args(args)
def setup_logging(loglevel):
logformat = "%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s"
logging.basicConfig(level=loglevel, stream=sys.stdout, format=logformat, datefmt="%Y-%m-%d %H:%M:%S")
def main(args):
args = parse_args(args)
setup_logging(args.loglevel)
_logger.info("Script starts here")
"""main code"""
_logger.info("Script ends here")
def run():
"""Entry point for console_scripts
"""
main(sys.argv[1:])
if __name__ == "__main__":
run()
будет работать нормальнокогда я запускаю скрипт с аргументом -v
или -vv
, но когда это не так, файл журнала провайдера также не создается, когда я ожидаю, что все журналы будут сохранены там в любое время.
Как я могу указать, чтофайл журнала будет создаваться каждый раз и stdout
только по подробному запросу?
PS. Я переместил некоторый код в
def setup_logging(loglevel):
logFormatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s")
if loglevel is not None:
logformat = "%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s"
logging.basicConfig(level=loglevel, stream=sys.stdout, format=logformat, datefmt="%Y-%m-%d %H:%M:%S")
_logger.setLevel(logging.DEBUG)
fileHandler = logging.handlers.TimedRotatingFileHandler("{0}/{1}.log".format(logPath, logFileName), when="midnight")
fileHandler.setFormatter(logFormatter)
_logger.addHandler(fileHandler)
, который будет все время регистрироваться в файле журнала, а затем выводиться на нем, но в файле журнала сохраняется только выходной журнал, установленный как INFO
, и ничего, что получается как DEBUG
как видно при беге как многословный -vv