From: Plamen Dimitrov Date: Mon, 9 Jul 2012 10:43:25 +0000 (+0200) Subject: Added main function exit code which is the number of warnings during script execution X-Git-Url: http://developer.intra2net.com/git/?p=imap-restore-mail;a=commitdiff_plain;h=5737b10e7ed2b3ce3ab6645ae60acdbbefeda865 Added main function exit code which is the number of warnings during script execution --- diff --git a/file_iterator.py b/file_iterator.py index b597928..f15888c 100644 --- a/file_iterator.py +++ b/file_iterator.py @@ -4,7 +4,7 @@ restore-mail-inject.py - Tool to inject mails via IMAP Copyright (c) 2012 Intra2net AG ''' -import sys, os +import os import re import logging diff --git a/restore_mail_inject.py b/restore_mail_inject.py index c67e6ed..11b9471 100644 --- a/restore_mail_inject.py +++ b/restore_mail_inject.py @@ -12,17 +12,19 @@ import logging import argparse from mail_iterator import MailIterator from file_iterator import FileIterator +from warnings_handler import WarningsHandler LOG_FILENAME = "restore_mail_inject.log" LOG_FILE_LEVEL = logging.DEBUG LOG_SHELL_LEVEL = logging.INFO +LOG_UNCLEAN_EXIT_LEVEL = logging.WARNING def main(): """Main function.""" # prepare configuration args = configure_args() - prepare_logger() + warnings_handler = prepare_logger() logging.info("The module restore_mail_inject.py started with user %s, folder %s and source %s." % (args.user, args.folder, args.srcdir)) @@ -61,8 +63,8 @@ def main(): for acl_mailbox in storage.acl_mailboxes: session.add_acls(acl_mailbox, mailbox_list, args.ouser, args.user) - logging.info("Finished injecting mails. Exiting.") - return + logging.info("Finished injecting mails. Exiting with code %s." % warnings_handler.detected_problems) + return warnings_handler.detected_problems def configure_args(): """Configure arguments and return them.""" @@ -102,12 +104,18 @@ def prepare_logger(): level=LOG_FILE_LEVEL) # add a handler for a console output + default_logger = logging.getLogger('') console = logging.StreamHandler() console.setLevel(LOG_SHELL_LEVEL) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console.setFormatter(formatter) - logging.getLogger('').addHandler(console) - return + default_logger.addHandler(console) + + # add a handler for warnings counting + warnings_handler = WarningsHandler() + warnings_handler.setLevel(LOG_UNCLEAN_EXIT_LEVEL) + default_logger.addHandler(warnings_handler) + return warnings_handler if __name__ == "__main__": main() diff --git a/warnings_handler.py b/warnings_handler.py new file mode 100644 index 0000000..bc6af31 --- /dev/null +++ b/warnings_handler.py @@ -0,0 +1,22 @@ +''' +restore-mail-inject.py - Tool to inject mails via IMAP + +Copyright (c) 2012 Intra2net AG +''' +import logging + +class WarningsHandler(logging.Handler): + """This class iterates through the e-mail files.""" + + # class attributes + detected_problems = None + + def __init__(self): + """Initialize a handler to count number of warnings.""" + logging.Handler.__init__(self) + self.detected_problems = 0 + + def emit(self, record): + """Increase number of warnings found""" + self.detected_problems += 1 + \ No newline at end of file