🔊 Add a `--logfile` option

Log to a file, not console.
--verbose & --debug behavior is kept

relate to forga/process/fr/embarquement#6
This commit is contained in:
freezed 2021-04-22 00:52:19 +02:00
parent 3d254ada50
commit 473b21b430
1 changed files with 32 additions and 11 deletions

View File

@ -17,6 +17,9 @@ import sys
# MESSAGES # MESSAGES
FUNCTION_CALL = "Function `%s` is called" FUNCTION_CALL = "Function `%s` is called"
LOG_CONSOLE_FORMAT = "[%(name)s] %(levelname)s\t%(message)s"
LOG_FILE_PATH = f"/tmp/{__file__}.log"
LOG_FILE_FORMAT = "[%(asctime)s] " + LOG_CONSOLE_FORMAT
RESULT = "Result : `%s`" RESULT = "Result : `%s`"
SUBSTRACTION_MADE = "Substraction made : %s - %s" SUBSTRACTION_MADE = "Substraction made : %s - %s"
WRONG_INPUT_ORDER = "Revert input order (`%s < %s`)" WRONG_INPUT_ORDER = "Revert input order (`%s < %s`)"
@ -34,9 +37,7 @@ def argparse_setup():
) )
parser.add_argument("INPUT_A", help="The greater integer", type=int) parser.add_argument("INPUT_A", help="The greater integer", type=int)
parser.add_argument("INPUT_B", help="The lower integer", type=int) parser.add_argument("INPUT_B", help="The lower integer", type=int)
parser.add_argument( parser.add_argument("-v", "--verbose", help="A verbose answer", action="store_true")
"-v", "--verbose", help="A near mathematics answer", action="store_true"
)
parser.add_argument( parser.add_argument(
"-d", "-d",
"--debug", "--debug",
@ -44,25 +45,41 @@ def argparse_setup():
help="Set logging level to DEBUG", help="Set logging level to DEBUG",
action="store_true", action="store_true",
) )
parser.add_argument(
"-l",
"--logfile",
default=False,
help="Log into a file, not in console",
action="store_true",
)
return parser.parse_args() return parser.parse_args()
def logging_setup(args): def logging_setup(args):
"""Setting up `logging` : console handler & optional DEBUG level""" """
Setting up `logging` :
- console or file handler
- optional DEBUG level
"""
root_logger = logging.getLogger("")
loglevel = logging.WARNING loglevel = logging.WARNING
if args.debug: if args.debug:
loglevel = logging.DEBUG loglevel = logging.DEBUG
LOGGER.setLevel(loglevel) LOGGER.setLevel(loglevel)
console_hdlr = logging.StreamHandler() # Add File Handler
console_hdlr.setFormatter( if args.logfile:
logging.Formatter("[%(name)s] %(levelname)s\t%(message)s") file_hdlr = logging.FileHandler(LOG_FILE_PATH)
) file_hdlr.setFormatter(logging.Formatter(LOG_FILE_FORMAT))
root_logger.addHandler(file_hdlr)
root = logging.getLogger("") # Add Console Handler
root.addHandler(console_hdlr) else:
console_hdlr = logging.StreamHandler()
console_hdlr.setFormatter(logging.Formatter(LOG_CONSOLE_FORMAT))
root_logger.addHandler(console_hdlr)
def pgcd(input_a, input_b): def pgcd(input_a, input_b):
@ -95,6 +112,10 @@ def pgcd(input_a, input_b):
if __name__ == "__main__": if __name__ == "__main__":
"""
Module's execution management
I did not test module's import
"""
# TESTS # TESTS
import doctest import doctest