improve logging in sendmail command

This commit is contained in:
Benjamin Dauvergne 2012-05-10 11:34:25 +02:00
parent ca57f02ee5
commit f4c08cc22c
1 changed files with 13 additions and 9 deletions

View File

@ -32,11 +32,13 @@ In case of failure the following return value is returned:
option_list = BaseCommand.option_list + (
make_option("--sender"),
make_option("--base-url", default="http://localhost:8000"))
make_option("--base-url", default="http://localhost:8000"),
make_option("--ip", default=''))
def handle(self, *args, **options):
mail_sender = None
logger = logging.getLogger('docbow')
self.logger = logging.LoggerAdapter(logging.getLogger('docbow'), {
'ip': options['ip'], 'user': 'Anonymous' })
if options.get('sender'):
try:
mail_sender = auth_models.User.objects.get(username=options['sender'])
@ -46,21 +48,23 @@ In case of failure the following return value is returned:
try:
mail = email.message_from_file(sys.stdin)
except email.errors.MessageParseError, e:
print >>sys.stderr, '7.7.1 Error parsing message', e
sys.exit(1)
self.error('7.7.1 Error parsing message', exite_code=1)
try:
self.handle_mail(mail, mail_sender, args, **options)
except Exception, e:
logger.exception('Unknown error encountered in docbow sendmail command')
print >>sys.stderr, '7.7.1 Uknown error when handling the mail'
sys.exit(5)
self.logger.exception('Unknown exception')
self.error('7.7.1 Uknown error when handling the mail', exit_code=5)
def error(self, msg, exit_code=None, *args):
if args:
print >>sys.stderr, msg % args
else:
print >>sys.stderr, msg
logger.error(('smtp interface: message %s refused, ' % self.message_id) + msg, *args)
if hasattr(self, 'message_id'):
msg = ('smtp interface: message %s refused, ' % self.message_id) + msg
else:
msg = 'smtp interface: message refused, ' + msg
self.logger.error(msg, *args)
if exit_code:
sys.exit(exit_code)
@ -156,4 +160,4 @@ In case of failure the following return value is returned:
else:
blob = document.timestamp_blob()
tst = timestamp.timestamp_json(blob)
logger.info('smtp interface: message %s accepted, sent %s, timestamp %s' % (self.message_id, document, tst))
self.logger.info('smtp interface: message %s accepted, sent %s, timestamp %s' % (self.message_id, document, tst))