| # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| import logging |
| import logging.handlers |
| import os |
| import socket |
| import time |
| |
| from config import rpm_config |
| |
| LOGGING_FORMAT = rpm_config.get('GENERAL', 'logging_format') |
| SUBJECT_LINE_FORMAT = rpm_config.get('GENERAL', 'email_subject_line_format') |
| |
| |
| def set_up_logging(log_filename_format): |
| """ |
| Correctly set up logging to have the correct format/level, log to a file, |
| and send out email notifications in case of error level messages. |
| """ |
| log_filename = os.path.abspath(time.strftime(log_filename_format)) |
| log_dir = os.path.dirname(log_filename) |
| if not os.path.isdir(log_dir): |
| os.makedirs(log_dir) |
| logging.basicConfig(filename=log_filename, level=logging.INFO, |
| format=LOGGING_FORMAT) |
| if rpm_config.getboolean('GENERAL', 'debug'): |
| logging.getLogger().setLevel(logging.DEBUG) |
| receivers = rpm_config.get('RPM_INFRASTRUCTURE', |
| 'email_notification_recipients').split(',') |
| subject_line = SUBJECT_LINE_FORMAT % socket.gethostname() |
| email_handler = logging.handlers.SMTPHandler('localhost', 'rpm@google.com', |
| receivers, subject_line, None) |
| email_handler.setLevel(logging.ERROR) |
| email_handler.setFormatter(logging.Formatter(LOGGING_FORMAT)) |
| logging.getLogger('').addHandler(email_handler) |