Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.stsci.edu/spst/UnixTransition/doc/spss_logging_util.py
Дата изменения: Fri Apr 8 12:46:13 2016
Дата индексирования: Mon Apr 11 04:52:46 2016
Кодировка:

Поисковые слова: http astrokuban.info astrokuban
#
# MODULE spss_logging_util
#
#***********************************************************************
"""

**PURPOSE** --
Our customized logging utility.

**DEVELOPER** --
Don Chance

**MODIFICATION HISTORY** --

o Initial implementaion 08/17/15
"""
#***********************************************************************
import spss_sys_util
import logging
import os
from paramiko import util as Putil
from mailinglogger.SummarisingLogger import SummarisingLogger as SL
from six import string_types

__version__ = '15.08.17'


class JWSTLogFormatFilter(logging.Filter):
"""
"""
def filter(self, record):
record.seqnum = spss_sys_util.global_counter(record.name)
return True
_jfilter = JWSTLogFormatFilter()


class Logger(object):
"""A base class that sets up logging.
"""
def __init__(self, logfile=None, logging_level=logging.INFO, dist=None):
self.dist = dist
self.tolist = []
if dist:
# Construct the email recipients list
# If it is a plain string, then make it into a list.
if (isinstance(dist, string_types)):
email_addr_list = dist.strip().replace(' ', '').split(',')
else:
email_addr_list = list(dist)

for email_addr in email_addr_list:
# See if this is just an email address
if (dist.find('@') != -1):
self.tolist.append(dist)
else:
# See if this is a file
if os.path.isfile(dist):
self.tolist.extend([x.strip() for x in open(dist).readlines()])
else:
raise IOError(101, "Distribution list does not exist.", dist)

# Set up logging...
self.debugging = logging_level
self.log = logging.getLogger(__name__)
if len(self.log.handlers) == 0:
#f = JWSTLogFormatFilter()
self.log.addFilter(_jfilter)
self.log.addFilter(Putil._pfilter)
self.log.setLevel(self.debugging)
if tolist:
mail_lh = SL(os.environ['USER'] + "@stsci.edu", tolist)
mail_lh.setLevel(logging.ERROR)
if logfile:
lh = logging.FileHandler(logfile)
else:
# logging goes to the screen
lh = logging.StreamHandler()

fmt = logging.Formatter('%(name)s_%(_threadid)s/%(seqnum)i: %(levelname)-.4s [%(asctime)s.%(msecs)03d]: %(message)s',
'%Y-%m-%dT%H:%M:%S')
lh.setFormatter(fmt)
self.log.addHandler(lh)
if tolist:
mail_lh.setFormatter(fmt)
self.log.addHandler(mail_lh)