예제 #1
0
파일: __init__.py 프로젝트: wojas/pomni
def initialise_logging():
    global upload_thread
    from mnemosyne.libmnemosyne.log_uploader import LogUploader
    log().archive_old_log()
    log().start_logging()
    log().program_started()
    if config()["upload_logs"]:
        upload_thread = LogUploader()
        upload_thread.start()
예제 #2
0
 def activate(self):
     self._timestamp = None
     self.upload_thread = None
     self.archive_old_log()
     self.start_logging()
     if self.config()["upload_science_logs"]:
         from mnemosyne.libmnemosyne.log_uploader import LogUploader
         self.upload_thread = LogUploader(self.component_manager)
         self.upload_thread.start()
     self.active = True
예제 #3
0
파일: logger.py 프로젝트: umax/pomni
 def activate(self):
     self.upload_thread = None
     self.archive_old_log()
     self.start_logging()
     if self.config()["upload_logs"] and \
            not self.config().resource_limited:
         from mnemosyne.libmnemosyne.log_uploader import LogUploader
         self.upload_thread = LogUploader(self.component_manager)
         self.upload_thread.start()
예제 #4
0
파일: logger.py 프로젝트: bartosh/pomni
    def activate(self):
        self._timestamp = None
        self.upload_thread = None
        self.archive_old_log()
        self.start_logging()
        if self.config()["upload_science_logs"]:
            from mnemosyne.libmnemosyne.log_uploader import LogUploader

            self.upload_thread = LogUploader(self.component_manager)
            self.upload_thread.start()
예제 #5
0
class Logger(Component):

    component_type = "log"

    def __init__(self, component_manager):
        self.active = False
        Component.__init__(self, component_manager)

    def activate(self):
        self._timestamp = None
        self.upload_thread = None
        self.archive_old_log()
        self.start_logging()
        if self.config()["upload_science_logs"]:
            from mnemosyne.libmnemosyne.log_uploader import LogUploader
            self.upload_thread = LogUploader(self.component_manager)
            self.upload_thread.start()
        self.active = True

    def get_timestamp(self):

        """If self._timestamp == None (the default), then the timestamp will
        be the current time. It is useful to be able to override this, e.g.
        during database import or syncing, when you need to add log entries
        to the database that happened in the past.

        """

        if self._timestamp == None:
            return time.time()
        else:
            return self._timestamp

    def set_timestamp(self, timestamp):
        self._timestamp = timestamp

    timestamp = property(get_timestamp, set_timestamp)

    def start_logging(self):
        pass

    def started_program(self, version_string=None):
        pass

    def stopped_program(self):
        pass

    def started_scheduler(self, scheduler_name=None):
        pass

    def loaded_database(self, machine_id=None, scheduled_count=None,
        non_memorised_count=None, active_count=None):
        pass

    def saved_database(self, machine_id=None, scheduled_count=None,
        non_memorised_count=None, active_count=None):
        pass

    def added_card(self, card):
        pass

    def edited_card(self, card):
        pass

    def deleted_card(self, card):
        pass

    def repetition(self, card, scheduled_interval, actual_interval,
        thinking_time):
        pass

    def added_tag(self, tag):
        pass

    def edited_tag(self, tag):
        pass

    def deleted_tag(self, tag):
        pass

    def added_media_file(self, filename):
        pass

    def edited_media_file(self, filename):
        pass

    def deleted_media_file(self, filename):
        pass

    def added_fact(self, fact):
        pass

    def edited_fact(self, fact):
        pass

    def deleted_fact(self, fact):
        pass

    def added_fact_view(self, fact_view):
        pass

    def edited_fact_view(self, fact_view):
        pass

    def deleted_fact_view(self, fact_view):
        pass

    def added_card_type(self, card_type):
        pass

    def edited_card_type(self, card_type):
        pass

    def deleted_card_type(self, card_type):
        pass

    def added_criterion(self, criterion):
        pass

    def edited_criterion(self, criterion):
        pass

    def deleted_criterion(self, criterion):
        pass

    def edited_setting(self, key):
        pass

    def dump_to_science_log(self):
        pass

    def log_index_of_last_upload(self):

        """We don't store this info in the configuration, but determine it on
        the fly, so that users can copy configuration files between their
        machines.

        1.x log names have the format userid_index.bz2.
        2.x log names have the format userid_machineid_index.bz2

        Obviously, we should only consider the logs from our own machine.

        """

        _dir = os.listdir(os.path.join(self.config().data_dir, "history"))
        history_files = [x for x in _dir if x[-4:] == ".bz2"]
        max_log_index = 0
        this_machine_id = self.config().machine_id()
        for history_file in history_files:
            user_and_machine, log_index_and_suffix = history_file.rsplit("_", 1)
            if "_" in user_and_machine:
                user, machine = user_and_machine.split("_")
                if machine != this_machine_id:
                    continue
            log_index = int(log_index_and_suffix.split(".")[0])
            if log_index > max_log_index:
                max_log_index = log_index
        return max_log_index

    def archive_old_log(self):

        """Archive log to history folder if it's large enough."""

        if not self.config()["upload_science_logs"]:
            return
        data_dir = self.config().data_dir
        log_name = os.path.join(data_dir, "log.txt")
        try:
            log_size = os.stat(log_name).st_size
        except:
            log_size = 0
        if log_size > self.config()["max_log_size_before_upload"]:
            user = self.config()["user_id"]
            machine = self.config().machine_id()
            index = self.log_index_of_last_upload() + 1
            archive_name = "%s_%s_%05d.bz2" % (user, machine, index)
            import bz2  # Not all platforms have bz.
            f = bz2.open(os.path.join(data_dir, "history",
                archive_name), "w")
            for l in open(log_name):
                f.write(l.encode("utf-8"))
            f.close()
            os.remove(log_name)

    def deactivate(self):
        if self.upload_thread:
            from mnemosyne.libmnemosyne.translator import _
            print((_("Waiting for uploader thread to stop...").encode("utf-8")))
            self.upload_thread.join()
            print((_("Done!").encode("utf-8")))
예제 #6
0
파일: logger.py 프로젝트: umax/pomni
class Logger(Component):

    component_type = "log"

    def activate(self):
        self.upload_thread = None
        self.archive_old_log()
        self.start_logging()
        if self.config()["upload_logs"] and \
               not self.config().resource_limited:
            from mnemosyne.libmnemosyne.log_uploader import LogUploader
            self.upload_thread = LogUploader(self.component_manager)
            self.upload_thread.start()
    
    def start_logging(self):
        pass
    
    def started_program(self):
        pass
        
    def stopped_program(self):
        pass
    
    def started_scheduler(self):
        pass

    def loaded_database(self):
        pass
        
    def saved_database(self):
        pass

    def added_tag(self, tag):
        pass

    def updated_tag(self, tag):
        pass
    
    def deleted_tag(self, tag):
        pass
    
    def added_fact(self, fact):
        pass

    def updated_fact(self, fact):
        pass
    
    def deleted_fact(self, fact):
        pass
    
    def added_card(self, card):
        pass

    def updated_card(self, card):
        pass
    
    def deleted_card(self, card):
        pass
    
    def added_card_type(self, card_type):
        pass

    def updated_card_type(self, card_type):
        pass
    
    def deleted_card_type(self, card_type):
        pass
    
    def repetition(self, card, scheduled_interval, actual_interval,
                   new_interval, thinking_time):
        pass

    def added_media(self, filename, fact):
        pass

    def deleted_media(self, filename, fact):
        pass

    def synchronize(self):
        pass

    def dump_to_txt_log(self):

        """If we're not logging to a standard text file, we need to dump the
        collected logs to such a file from time to time for uploading.

        """
        
        pass
        
    def archive_old_log(self):
        
        """Archive log to history folder if it's large enough."""
        
        basedir = self.config().basedir
        log_name = os.path.join(basedir, "log.txt")
        try:
            log_size = os.stat(log_name).st_size
        except:
            log_size = 0
        if log_size > 64000:
            user = self.config()["user_id"]
            index = self.config()["log_index"]
            archive_name = "%s_%05d.bz2" % (user, index)
            if not self.config().resource_limited:
                import bz2
                f = bz2.BZ2File(os.path.join(basedir, "history",
                                             archive_name), 'w')
            else:
                f = file(os.path.join(basedir, "history", archive_name), 'w')
            for l in file(log_name):
                f.write(l)
            f.close()
            os.remove(log_name)
            self.config()["log_index"] = index + 1

    def deactivate(self):
        if self.upload_thread:
            from mnemosyne.libmnemosyne.translator import _
            print _("Waiting for uploader thread to stop...")
            self.upload_thread.join()
            print _("Done!")
예제 #7
0
파일: logger.py 프로젝트: bartosh/pomni
class Logger(Component):

    component_type = "log"

    def activate(self):
        self._timestamp = None
        self.upload_thread = None
        self.archive_old_log()
        self.start_logging()
        if self.config()["upload_science_logs"]:
            from mnemosyne.libmnemosyne.log_uploader import LogUploader

            self.upload_thread = LogUploader(self.component_manager)
            self.upload_thread.start()

    def get_timestamp(self):

        """If self._timestamp == None (the default), then the timestamp will
        be the current time. It is useful to be able to override this, e.g.
        during database import or syncing, when you need to add log entries
        to the database that happened in the past.

        """

        if self._timestamp == None:
            return time.time()
        else:
            return self._timestamp

    def set_timestamp(self, timestamp):
        self._timestamp = timestamp

    timestamp = property(get_timestamp, set_timestamp)

    def start_logging(self):
        pass

    def started_program(self, version_string=None):
        pass

    def stopped_program(self):
        pass

    def started_scheduler(self, scheduler_name=None):
        pass

    def loaded_database(self, scheduled_count=None, non_memorised_count=None, active_count=None):
        pass

    def saved_database(self, scheduled_count=None, non_memorised_count=None, active_count=None):
        pass

    def added_card(self, card):
        pass

    def updated_card(self, card):
        pass

    def deleted_card(self, card):
        pass

    def repetition(self, card, scheduled_interval, actual_interval, new_interval, thinking_time):
        pass

    def added_tag(self, tag):
        pass

    def updated_tag(self, tag):
        pass

    def deleted_tag(self, tag):
        pass

    def added_media(self, filename):
        pass

    def updated_media(self, filename):
        pass

    def deleted_media(self, filename):
        pass

    def added_fact(self, fact):
        pass

    def updated_fact(self, fact):
        pass

    def deleted_fact(self, fact):
        pass

    def added_fact_view(self, fact_view):
        pass

    def updated_fact_view(self, fact_view):
        pass

    def deleted_fact_view(self, fact_view):
        pass

    def added_card_type(self, card_type):
        pass

    def updated_card_type(self, card_type):
        pass

    def deleted_card_type(self, card_type):
        pass

    def added_activity_criterion(self, activity_criterion):
        pass

    def updated_activity_criterion(self, activity_criterion):
        pass

    def deleted_activity_criterion(self, activity_criterion):
        pass

    def dump_to_science_log(self):
        pass

    def archive_old_log(self):

        """Archive log to history folder if it's large enough."""

        if not self.config()["upload_science_logs"]:
            return
        basedir = self.config().basedir
        log_name = os.path.join(basedir, "log.txt")
        try:
            log_size = os.stat(log_name).st_size
        except:
            log_size = 0
        if log_size > 64000:
            user = self.config()["user_id"]
            machine = self.config().machine_id()
            index = self.config()["log_index"]
            archive_name = "%s_%s_%05d.bz2" % (user, machine, index)
            if not self.config().resource_limited:
                import bz2

                f = bz2.BZ2File(os.path.join(basedir, "history", archive_name), "w")
            else:
                f = file(os.path.join(basedir, "history", archive_name), "w")
            for l in file(log_name):
                f.write(l)
            f.close()
            os.remove(log_name)
            self.config()["log_index"] = index + 1

    def deactivate(self):
        if self.upload_thread:
            from mnemosyne.libmnemosyne.translator import _

            print _("Waiting for uploader thread to stop...")
            self.upload_thread.join()
            print _("Done!")