From 5cafcf16f010f59ceeaaaa6fbfdd5f06961c311e Mon Sep 17 00:00:00 2001 From: Ircama Date: Sat, 20 Jun 2020 13:06:48 +0200 Subject: [PATCH] Add localtime option Add localtime option to use local time zone and format instead of UTC time in timestamps. --- README.rst | 1 + awslogs/bin.py | 6 ++++++ awslogs/core.py | 21 +++++++++++++++++---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 99ccb2e..fb1a198 100644 --- a/README.rst +++ b/README.rst @@ -51,6 +51,7 @@ Features - ``--timestamp`` Prints the creation timestamp of each event. - ``--ingestion-time`` Prints the ingestion time of each event. + - ``--localtime`` (or ``-l``) Use local time instead of UTC time when printing timestamps. Example diff --git a/awslogs/bin.py b/awslogs/bin.py index 87d2286..5c52f69 100644 --- a/awslogs/bin.py +++ b/awslogs/bin.py @@ -123,6 +123,12 @@ def add_date_range_arguments(parser, default_start='5m'): dest='output_timestamp_enabled', help="Add creation timestamp to the output") + get_parser.add_argument("-l", + "--localtime", + action='store_true', + dest='output_localtime_enabled', + help="Use local time zone and format instead of UTC time in timestamps") + get_parser.add_argument("--ingestion-time", action='store_true', dest='output_ingestion_time_enabled', diff --git a/awslogs/core.py b/awslogs/core.py index 8af6a0e..a05a289 100644 --- a/awslogs/core.py +++ b/awslogs/core.py @@ -4,6 +4,8 @@ import time import errno from datetime import datetime, timedelta +import locale +import pytz from collections import deque import boto3 @@ -14,7 +16,7 @@ from termcolor import colored from dateutil.parser import parse -from dateutil.tz import tzutc +from dateutil.tz import tzutc, tzlocal from . import exceptions @@ -26,7 +28,13 @@ } -def milis2iso(milis): +def milis2iso(milis, localtime): + if localtime: + return ( + pytz.utc.localize(datetime.utcfromtimestamp(milis/1000.0)) + .astimezone(tzlocal()) + .strftime("%x %X:%f")[:-3] + ) res = datetime.utcfromtimestamp(milis/1000.0).isoformat() return (res + ".000")[:23] + 'Z' @@ -73,6 +81,9 @@ def __init__(self, **kwargs): self.output_stream_enabled = kwargs.get('output_stream_enabled') self.output_group_enabled = kwargs.get('output_group_enabled') self.output_timestamp_enabled = kwargs.get('output_timestamp_enabled') + self.output_localtime_enabled = kwargs.get('output_localtime_enabled') + if self.output_localtime_enabled: + locale.setlocale(locale.LC_TIME,'') self.output_ingestion_time_enabled = kwargs.get( 'output_ingestion_time_enabled') self.start = self.parse_datetime(kwargs.get('start')) @@ -189,14 +200,16 @@ def consumer(): if self.output_timestamp_enabled: output.append( self.color( - milis2iso(event['timestamp']), + milis2iso(event['timestamp'], + self.output_localtime_enabled), 'yellow' ) ) if self.output_ingestion_time_enabled: output.append( self.color( - milis2iso(event['ingestionTime']), + milis2iso(event['ingestionTime'], + self.output_localtime_enabled), 'blue' ) )