AnilJ
AnilJ

Reputation: 2121

Python logger not picking up the configure time format.

I am facing little strange issue where, the logger is not picking up the configured time stamp format (ascii) in the log message for the first time it is initialized. It by default prints the log time format in UTC, not sure why.

Below snip is from the /proj/req_proc.py python code, which uwsgi starts, initialize the logger. The log_config.yaml contains a formatter definition to print timestamp in ascii format.

def setup_logging(default_path='=log_config.yaml',
                  default_level=logging.INFO):

    path = default_path
    if os.path.exists(path):
        with open(path, 'rt') as f:
        config = yaml.load(f.read())
        logging.config.dictConfig(config)

Below is the snip from my launch script which starts the uwsgi process.

uwsgi -M --processes 1 --threads 2 -s /tmp/uwsgi.sock --wsgi-file=/proj/req_proc.py --daemonize /dev/null

Is there any specific behavior either to python logger or to uwsgi, which picks up the UTC time format by default? When I restart my uwsgi process, it picks the correct/expected time stamp configured in the log_config.yaml

Upvotes: 2

Views: 1740

Answers (1)

Bastian Venthur
Bastian Venthur

Reputation: 16570

I have the assumption that the uwsgi module is somehow hijacking Python's logging module. Setting the loglevel, logger name and logging itself works, but trying to modify the format even with something basic like:

logging.basicConfig(level=logging.NOTSET, format='[%(process)-5d:%(threadName)-10s] %(name)-25s: %(levelname)-8s %(message)s')
logger = logging.getLogger(__name__)

has no effect.

Update: Here's a way to overwrite uWSGI's default logger:

# remove uUWSGI's default logging configuration, this can be removed in
# more recent versions of uWSGI
root = logging.getLogger()
map(root.removeHandler, root.handlers[:])
map(root.removeFilter, root.filters[:])

logger = logging.getLogger(__name__)
logging.basicConfig(
    level=logging.INFO,
    format='%(levelname)-8s %(asctime)-15s %(process)4d:%(threadName)-11s %(name)s %(message)s'
)

Upvotes: 3

Related Questions