time offset + current timezone
This commit is contained in:
parent
ccb6d4f3b0
commit
6b74b82558
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue