time offset + current timezone

This commit is contained in:
kitzman 2022-02-06 23:41:17 +02:00
parent ccb6d4f3b0
commit 6b74b82558
1 changed files with 20 additions and 4 deletions

View File

@ -3,7 +3,7 @@
from dataclasses import dataclass
from enum import IntEnum
from datetime import datetime
from datetime import datetime, timedelta
import socket
import logging
import re
@ -31,7 +31,7 @@ class ParsingException(Exception):
class NetworkException(Exception):
pass
RFC5425_DATEFMT = "%Y-%m-%dT%H:%M:%S.%fZ"
RFC5425_DATEFMT = "%Y-%m-%dT%H:%M:%S.%f%z"
DEFAULT_HOSTNAME = "logcat2sys"
DEFAULT_SLEEP_MS = 50
@ -102,7 +102,9 @@ class LogRecord():
priority = "<%d>" % int(self.level)
version = 1
timestamp = self.timestamp.strftime(RFC5425_DATEFMT)
timestamp = timestamp[:-2] + ":" + timestamp[-2:]
hostname = DEFAULT_HOSTNAME
@ -133,10 +135,17 @@ class LogRecord():
# The Logcat decoder
#
class LogcatDecoder():
def __init__(self, logcat_format, logcat_date_format):
def __init__(self, logcat_format, logcat_date_format, time_offset=0):
self.logcat_format = logcat_format
self.logcat_date_format = logcat_date_format
now = datetime.now()
local_now = now.astimezone()
local_tz = local_now.tzinfo
self.local_tz = local_tz
self.time_offset = time_offset
def decode(self, raw_line):
matched_line = re.search(self.logcat_format, raw_line)
@ -159,6 +168,11 @@ class LogcatDecoder():
if parsed_date.year == 1900:
parsed_date = parsed_date.replace(year=2022)
if not parsed_date.tzinfo:
parsed_date = parsed_date.replace(tzinfo=self.local_tz)
parsed_date = parsed_date + timedelta(minutes=self.time_offset)
except AttributeError:
raise ParsingException("no match for line")
@ -250,6 +264,8 @@ if __name__ == "__main__":
help="sleep between logs")
parser.add_argument('--log-id', dest='log_id', type=str,
default="dummy", help="logcat2sys log id")
parser.add_argument('--time-offset', dest="time_offset", type=int,
default=0, help="time offset in minutes")
parser.add_argument('--debug', dest='debug',
action='store_true', default=False, help='enable debugging')
@ -275,7 +291,7 @@ if __name__ == "__main__":
logger.addHandler(lh)
# Actual run
decoder = LogcatDecoder(default_logcat_format, default_logcat_date_format)
decoder = LogcatDecoder(default_logcat_format, default_logcat_date_format, args.time_offset)
syslog_handler = SyslogWriter(args.hostname, args.port, args.log_id, prog_proto)
log_input = sys.stdin