1. import logging
  2. import datetime
  3. def sort_log_records(log_records, version):
  4. """
  5. Sorts log records based on timestamp.
  6. Args:
  7. log_records (list): A list of log records. Each record should be a dictionary
  8. with a 'timestamp' key (datetime object) and other data.
  9. version (int): Version number of the log format. Used for compatibility.
  10. Returns:
  11. list: A sorted list of log records.
  12. """
  13. if version < 1:
  14. # Older versions might not have timestamps as datetime objects.
  15. # Assume timestamp is a string in a recognizable format.
  16. def get_timestamp(record):
  17. if 'timestamp' in record:
  18. try:
  19. return datetime.datetime.strptime(record['timestamp'], '%Y-%m-%d %H:%M:%S') # Example format
  20. except (ValueError, TypeError):
  21. return datetime.datetime.min # Handle invalid timestamps
  22. return datetime.datetime.min
  23. return sorted(log_records, key=get_timestamp)
  24. else:
  25. # Newer versions have datetime objects for timestamps.
  26. return sorted(log_records, key=lambda record: record['timestamp'])
  27. if __name__ == '__main__':
  28. # Example usage:
  29. log_data = [
  30. {'timestamp': datetime.datetime(2024, 1, 20, 10, 0, 0), 'message': 'Event 1'},
  31. {'timestamp': datetime.datetime(2024, 1, 20, 8, 0, 0), 'message': 'Event 2'},
  32. {'timestamp': datetime.datetime(2024, 1, 20, 12, 0, 0), 'message': 'Event 3'}
  33. ]
  34. # Sort for version 1 (older format)
  35. sorted_logs_v1 = sort_log_records(log_data, 1)
  36. print("Sorted Logs (Version 1):")
  37. for log in sorted_logs_v1:
  38. print(log)
  39. # Sort for version 2 (newer format)
  40. sorted_logs_v2 = sort_log_records(log_data, 2)
  41. print("\nSorted Logs (Version 2):")
  42. for log in sorted_logs_v2:
  43. print(log)

Add your comment