def __init__(self, kind = 'text', fileName = '', rule = NEVER, loggees = None, **kw):
        if 'preface' not in kw:
            kw['preface'] = 'Log'

        super(Log,self).__init__(**kw) #store and name inited here

        self.stamp = None #time stamp last logged, None means never logged

        self.kind = kind
        if fileName:
            self.fileName = fileName #file name only
        else:
            self.fileName = self.name
        self.path = '' #full dir path name of file
        self.file = None #file where log is written

        self.rule = rule #log rule when to log
        self.action = None #which method to use when logging
        self.assignRuleAction() #assign log action function

        self.header = ''
        self.formats = odict() #ordered dictionary of log format strings by tag
        self.loggees = odict() #ordered dict of shares to be logged (loggees) by tag
        self.lasts = odict()   #ordered dict of last values for loggees by tag

        if loggees:
            if '_time' in loggees:
                raise excepting.ResolveError("Bad loggee tag '_time'", self.name, loggee['_time'].name)
            self.loggees.update(loggees)
Given a list of changed files for a project at a given revision,
dataset/ETHPy150Open ioflo/ioflo/ioflo/base/logging.py/Log.__init__--crossover with--dataset/ETHPy150Open dropbox/changes/changes/utils/project_trigger.py/files_changed_should_trigger_project