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')
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
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')
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')