Exemplo n.º 1
0
    def test_collate_and_slicing_multi(self):

        LinuxCLI().rm('./logs-all')
        LinuxCLI().rm('./logs')
        LinuxCLI().rm('./logs2')
        LinuxCLI().rm('./logs3')
        LinuxCLI().rm('./logs4')
        LinuxCLI().rm('./sliced-logs')

        LinuxCLI(priv=False).mkdir('./logs2')
        LinuxCLI(priv=False).mkdir('./logs3')
        LinuxCLI(priv=False).mkdir('./logs4')

        try:
            now = datetime.datetime.now()
            LinuxCLI(priv=False).write_to_file('./logs2/test2', now.strftime('%Y-%m-%d %H:%M:%S,%f') + ' start\n')
            LinuxCLI(priv=False).write_to_file('./logs3/test3', now.strftime('%Y-%m-%d %H:%M:%S,%f') + ' start\n')
            LinuxCLI(priv=False).write_to_file('./logs4/test3', now.strftime('%Y-%m-%d %H:%M:%S,%f') + ' start\n')

            lm = LogManager('./logs')

            lm.set_default_log_level(logging.DEBUG)
            LOG1 = lm.add_file_logger('test-log')
            LOG2 = lm.add_file_logger('test-log2')
            lm.add_external_log_file(FileLocation('./logs2/test2'), '')
            lm.add_external_log_file(FileLocation('./logs3/test3'), '0')
            lm.add_external_log_file(FileLocation('./logs4/test3'), '1')

            now1 = datetime.datetime.now() + datetime.timedelta(seconds=6)
            for i in range(0, 5):
                LOG1.info('test-log-line: ' + str(i))
                LOG2.info('test-log2-line: ' + str(i))
                LinuxCLI(priv=False).write_to_file('./logs4/test3',
                                                   datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S,%f') +
                                                        ' test-log4\n',
                                                   append=True)
                time.sleep(2)
            LOG1.info('test-log-line: ' + str(5))
            LOG2.info('test-log2-line: ' + str(5))
            now2 = datetime.datetime.now() - datetime.timedelta(seconds=6)

            lm.collate_logs('./logs-all')

            lm.slice_log_files_by_time('./sliced-logs',
                                       start_time=now1,
                                       stop_time=now2,
                                       leeway=3,
                                       collated_only=True)

            self.assertAlmostEquals(2, LinuxCLI().wc('./sliced-logs/test3.1.slice')['lines'], delta=1)
            self.assertAlmostEquals(2, LinuxCLI().wc('./sliced-logs/test-log.slice')['lines'], delta=1)
            self.assertAlmostEquals(2, LinuxCLI().wc('./sliced-logs/test-log2.slice')['lines'], delta=1)

        finally:
            LinuxCLI().rm('./logs')
            LinuxCLI().rm('./sliced-logs')
            LinuxCLI().rm('./logs-all')
            LinuxCLI().rm('./logs2')
            LinuxCLI().rm('./logs3')
            LinuxCLI().rm('./logs4')
Exemplo n.º 2
0
    def test_slicing_multi(self):
        LinuxCLI().rm('./logs')
        LinuxCLI().rm('./sliced-logs')

        try:
            lm = LogManager('./logs')
            lm.set_default_log_level(logging.DEBUG)
            LOG = lm.add_file_logger('test-log')
            LOG2 = lm.add_file_logger('test-log2')

            now1 = datetime.datetime.now() + datetime.timedelta(seconds=6)
            for i in range(0, 5):
                LOG.info('test-log-line: ' + str(i))
                LOG2.info('test-log2-line: ' + str(i))
                time.sleep(2)
            LOG.info('test-log-line: ' + str(5))
            LOG2.info('test-log2-line: ' + str(5))
            now2 = datetime.datetime.now() - datetime.timedelta(seconds=6)

            lm.slice_log_files_by_time('./sliced-logs',
                                       start_time=now1,
                                       stop_time=now2,
                                       leeway=3,
                                       collated_only=False)

            self.assertAlmostEquals(2, LinuxCLI().wc('./sliced-logs/test-log.slice')['lines'], delta=1)
            self.assertAlmostEquals(2, LinuxCLI().wc('./sliced-logs/test-log2.slice')['lines'], delta=1)

        finally:
            LinuxCLI().rm('./logs')
            LinuxCLI().rm('./sliced-logs')
            pass
Exemplo n.º 3
0
    def test_collate(self):
        LinuxCLI().rm('./logs-all')
        LinuxCLI().rm('./logs')
        LinuxCLI().rm('./logs2')
        LinuxCLI().rm('./logs3')
        LinuxCLI().rm('./logs4')

        LinuxCLI(priv=False).mkdir('./logs2')
        LinuxCLI(priv=False).mkdir('./logs3')
        LinuxCLI(priv=False).mkdir('./logs4')

        try:
            LinuxCLI(priv=False).write_to_file('./logs2/test2.log', 'data')
            LinuxCLI(priv=False).write_to_file('./logs3/test3.log', 'data2')
            LinuxCLI(priv=False).write_to_file('./logs4/test3.log', 'data3')

            lm = LogManager('./logs')

            lm.set_default_log_level(logging.DEBUG)
            LOG1 = lm.add_file_logger('test-log.log')
            LOG2 = lm.add_file_logger('test-log2.log')
            lm.add_external_log_file(FileLocation('./logs2/test2.log'), '')
            lm.add_external_log_file(FileLocation('./logs3/test3.log'), '0')
            lm.add_external_log_file(FileLocation('./logs4/test3.log'), '1')

            LOG1.info('test')
            LOG2.info('test2')

            lm.collate_logs('./logs-all')

            self.assertTrue(LinuxCLI().exists('./logs-all/test-log.log'))
            self.assertTrue(LinuxCLI().exists('./logs-all/test-log2.log'))
            self.assertTrue(LinuxCLI().exists('./logs-all/test2.log'))
            self.assertTrue(LinuxCLI().exists('./logs-all/test3.log.0'))
            self.assertTrue(LinuxCLI().exists('./logs-all/test3.log.1'))
        finally:
            LinuxCLI().rm('./logs-all')
            LinuxCLI().rm('./logs')
            LinuxCLI().rm('./logs2')
            LinuxCLI().rm('./logs3')
            LinuxCLI().rm('./logs4')
Exemplo n.º 4
0
    def test_rollover(self):

        LinuxCLI().rm('./logs')
        LinuxCLI().rm('./logbak')

        lm = LogManager('./logs')
        lm.set_default_log_level(logging.DEBUG)

        LinuxCLI(priv=False).write_to_file('./logs/test.log', 'data')
        LinuxCLI(priv=False).write_to_file('./logs/test2.log', 'data2')

        # Run fresh rollover function before loggers are defined
        lm.rollover_logs_fresh(date_pattern='%Y', zip_file=False)
        try:
            current_year = str(datetime.datetime.now().year)
            self.assertFalse(LinuxCLI().exists('./logs/test.log'))
            self.assertFalse(LinuxCLI().exists('./logs/test2.log'))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak'))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak/test.log.' + current_year))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak/test2.log.' + current_year))
            self.assertNotEqual(0, os.path.getsize('./logs/log_bak/test.log.' + current_year))
            self.assertNotEqual(0, os.path.getsize('./logs/log_bak/test2.log.' + current_year))
        finally:
            LinuxCLI().rm('./logs/log_bak')

        l1 = lm.add_file_logger(name='main', file_name='test.log', file_overwrite=True)
        l2 = lm.add_file_logger(name='sub', file_name='test.log', file_overwrite=False)
        l3 = lm.add_file_logger(name='main2', file_name='test2.log', file_overwrite=True)

        self.assertIn(FileLocation('./logs/test.log'), lm.open_log_files)
        self.assertIn(FileLocation('./logs/test2.log'), lm.open_log_files)
        self.assertEqual(2, len(lm.open_log_files))

        # Running rollover before log files have data should be a no-op,
        # So the empty files should remain
        lm.rollover_logs_by_date()
        try:
            self.assertTrue(LinuxCLI().exists('./logs/test.log'))
            self.assertTrue(LinuxCLI().exists('./logs/test2.log'))
            self.assertEqual(0, os.path.getsize('./logs/test.log'))
            self.assertEqual(0, os.path.getsize('./logs/test2.log'))
            self.assertFalse(LinuxCLI().exists('./logs/log_bak'))
        finally:
            LinuxCLI().rm('./logs/log_bak')

        l1.info('test1')
        l2.info('test2')
        l3.info('test3')

        # Now run a standard rollover with no params, default log dir should be created
        # and regular log files should be moved and zipped
        lm.rollover_logs_by_date()
        try:
            self.assertTrue(LinuxCLI().exists('./logs/test.log'))
            self.assertTrue(LinuxCLI().exists('./logs/test2.log'))
            self.assertEqual(0, os.path.getsize('./logs/test.log'))
            self.assertEqual(0, os.path.getsize('./logs/test2.log'))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak'))
        finally:
            LinuxCLI().rm('./logs/log_bak')

        l1.info('test1')
        l2.info('test2')
        l3.info('test3')

        self.assertNotEqual(0, os.path.getsize('./logs/test.log'))
        self.assertNotEqual(0, os.path.getsize('./logs/test2.log'))

        # Same as no-params, just with a specified backup dir
        lm.rollover_logs_by_date(backup_dir='./logbak')
        try:
            self.assertTrue(LinuxCLI().exists('./logs/test.log'))
            self.assertTrue(LinuxCLI().exists('./logs/test2.log'))
            self.assertEqual(0, os.path.getsize('./logs/test.log'))
            self.assertEqual(0, os.path.getsize('./logs/test2.log'))
            self.assertTrue(LinuxCLI().exists('./logbak'))
        finally:
            LinuxCLI().rm('./logbak')

        l1.info('test1')
        l2.info('test2')
        l3.info('test3')

        # Now use a specific pattern, making it easy to test for
        # the files' existence
        new_file = lm.rollover_logs_by_date(date_pattern='%Y')
        try:
            current_year = str(datetime.datetime.now().year)
            self.assertTrue(LinuxCLI().exists('./logs/test.log'))
            self.assertTrue(LinuxCLI().exists('./logs/test2.log'))
            self.assertEqual(0, os.path.getsize('./logs/test.log'))
            self.assertEqual(0, os.path.getsize('./logs/test2.log'))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak'))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak/test.log.' + current_year + '.gz'))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak/test2.log.' + current_year + '.gz'))
        finally:
            LinuxCLI().rm('./logs/log_bak')

        l1.info('test1')
        l2.info('test2')
        l3.info('test3')

        new_file = lm.rollover_logs_by_date(date_pattern='%Y', zip_file=False)
        try:
            current_year = str(datetime.datetime.now().year)
            self.assertTrue(LinuxCLI().exists('./logs/test.log'))
            self.assertTrue(LinuxCLI().exists('./logs/test2.log'))
            self.assertEqual(0, os.path.getsize('./logs/test.log'))
            self.assertEqual(0, os.path.getsize('./logs/test2.log'))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak'))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak/test.log.' + current_year))
            self.assertTrue(LinuxCLI().exists('./logs/log_bak/test2.log.' + current_year))
        finally:
            LinuxCLI().rm('./logs')