1 import logging
2 from logging import Formatter
3 from logging.handlers import SMTPHandler, WatchedFileHandler
4
5 from coprs import app
6
7 mail_error_formatter = Formatter("""
8 Message type: %(levelname)s
9 Location: %(pathname)s:%(lineno)d
10 Module: %(module)s
11 Function: %(funcName)s
12 Time: %(asctime)s
13
14 Message:
15
16 %(message)s
17 """)
18
19
20 default_formatter = Formatter(
21 "%(asctime)s [%(levelname)s]"
22 "[%(pathname)s:%(lineno)d|%(module)s:%(funcName)s] %(message)s"
23 )
24
25
27 if not app.debug:
28
29 mail_handler = SMTPHandler(
30 "127.0.0.1",
31 "copr-fe-error@{0}".format(
32 app.config["SERVER_NAME"] or "fedorahosted.org"),
33 app.config.get("SEND_LOGS_TO"),
34 "Yay, error in copr frontend occured!")
35
36 mail_handler.setFormatter(mail_error_formatter)
37 mail_handler.setLevel(logging.CRITICAL)
38 app.logger.addHandler(mail_handler)
39
40
41 log_filename = app.config.get("LOG_FILENAME")
42 handler = WatchedFileHandler(log_filename)
43 handler.setFormatter(default_formatter)
44 log_level = app.config.get("LOGGING_LEVEL", logging.INFO)
45 handler.setLevel(log_level)
46 app.logger.addHandler(handler)
47
48 app.logger.info("logging configuration finished, config: {}".format(app.config))
49