1+ import pytz
12import logging
3+ from flask import Flask
4+ from datetime import datetime
25
6+ def configure_logging (app : Flask ):
7+ # Set the logging level
8+ logging .basicConfig (level = logging .DEBUG )
39
4- def configure_logging (app ):
5- del app .logger .handlers [:]
10+ # Create a logger instance
11+ logger = logging .getLogger (app .name )
12+
13+ # Set the timezone to Vietnam
14+ vietnam_timezone = pytz .timezone ('Asia/Ho_Chi_Minh' )
615
7- loggers = [ app . logger , ]
8- handlers = []
16+ # Configure logging with the Vietnam timezone
17+ logging . Formatter . converter = lambda * args : pytz . utc . localize ( datetime . utcnow ()). astimezone ( vietnam_timezone ). timetuple ()
918
10- console_handler = logging .StreamHandler ()
11- console_handler .setFormatter (verbose_formatter (app ))
12- if (app .config ['APP_ENV' ] == app .config ['APP_ENV_TESTING' ]) or (
13- app .config ['APP_ENV' ] == app .config ['APP_ENV_DEVELOP' ]):
14- console_handler .setLevel (logging .DEBUG )
15- elif (app .config ['APP_ENV' ] == app .config ['APP_ENV_LOCAL' ]) or (
16- app .config ['APP_ENV' ] == app .config ['APP_ENV_PRODUCTION' ]):
17- console_handler .setLevel (logging .INFO )
18- handlers .append (console_handler )
19-
20- if (app .config ['APP_ENV' ] == app .config ['APP_ENV_TESTING' ]) or (
21- app .config ['APP_ENV' ] == app .config ['APP_ENV_DEVELOP' ]):
22- file_handler = logging .FileHandler (app .config ['LOG_FILE_API' ], encoding = "utf-8" )
23- file_handler .setFormatter (verbose_formatter (app ))
24- file_handler .setLevel (logging .DEBUG )
25- handlers .append (file_handler )
26- elif (app .config ['APP_ENV' ] == app .config ['APP_ENV_LOCAL' ]) or (
27- app .config ['APP_ENV' ] == app .config ['APP_ENV_PRODUCTION' ]):
28- file_handler = logging .FileHandler (app .config ['LOG_FILE_API' ], encoding = "utf-8" )
29- file_handler .setFormatter (verbose_formatter (app ))
30- file_handler .setLevel (logging .INFO )
31- handlers .append (file_handler )
32-
33- for logger in loggers :
34- for handler in handlers :
35- logger .addHandler (handler )
36- logger .propagate = False
37- logger .setLevel (logging .DEBUG )
19+ # Define the log format
20+ console_log_format = '%(asctime)s - %(levelname)s - %(message)s'
21+ file_log_format = '%(asctime)s - %(levelname)s - %(message)s - (%(filename)s:%(lineno)d)'
3822
39-
40- def verbose_formatter (app ):
41- return logging .Formatter (app .config ['FTM' ], datefmt = app .config ['DATE_FMT' ])
23+ # Create a console handler
24+ console_handler = logging .StreamHandler ()
25+ console_handler .setLevel (logging .DEBUG )
26+ console_handler .setFormatter (logging .Formatter (console_log_format , datefmt = app .config ['DATE_FMT' ]))
27+ logger .addHandler (console_handler )
28+
29+ # Create a file handler
30+ file_handler = logging .FileHandler (filename = app .config ['LOG_FILE_API' ], encoding = "utf-8" )
31+ file_handler .setLevel (logging .DEBUG )
32+ file_handler .setFormatter (logging .Formatter (file_log_format , datefmt = app .config ['DATE_FMT' ]))
33+ logger .addHandler (file_handler )
34+
35+ # Disable the INFO log messages from werkzeug
36+ # werkzeug_logger = logging.getLogger('werkzeug')
37+ # werkzeug_logger.setLevel(logging.ERROR) # Set the level to ERROR to turn off INFO messages
0 commit comments