Certain logging environments require customized formatting of the timestamp. Nokia provides a timestamp conversion method in the alu.syslog Python module to convert a timestamp from the format YYYY/MM/DD hh:mm:ss into a UNIX-based timestamp format (seconds from Jan 01 1970 – UTC).
For example, an operator can use the following Python method to convert a timestamp from the YYYY/MM/DD hh:mm:ss.ss or YYYY/MM/DD hh:mm:ss (no centiseconds) format into either the UNIX timestamp format or the MMM DD hh:mm:ss format.
from alc import event
from alc import syslog
from alc import system
#input format: YYYY/MM/DD hh:mm:ss.ss or YYYY/MM/DD hh:mm:ss
#output format 1: MMM DD hh:mm:ss
#output format 2: unixTimestamp (TBD)
def timeFormatConversion(timestamp,format):
if format not in range(1,2):
raise NameError('Unexpected format, expected:' \
'0<format<3 got: '+str(format))
try:
dat,tim=timestamp.split(' ')
except:
raise NameError('Unexpected timestamp format, expected:' \
'YYYY/MM/DD hh:mm:ss got: '+timestamp)
try:
YYYY,MM,DD=dat.split('/')
except:
raise NameError('Unexpected timestamp format, expected:' \
'YYYY/MM/DD hh:mm:ss got: '+timestamp)
try:
hh,mm,ss=tim.split(':')
ss=ss.split('.')[0] #just in case that the time format is hh:mm:ss.ss
except:
raise NameError('Unexpected timestamp format, expected:' \
'YYYY/MM/DD hh:mm:ss got: '+timestamp)
if not (1970<=int(YYYY)<2100 and
1<=int(MM)<=12 and
1<=int(DD)<=31 and
0<=int(hh)<=24 and
0<=int(mm)<=60 and
0<=int(ss)<=60):
raise NameError('Unexpected timestamp format, or values out of the range' \
'Expected: YYYY/MM/DD hh:mm:ss got: '+timestamp)
if format == 1:
MMM={1:'Jan',
2:'Feb',
3:'Mar',
4:'Apr',
5:'May',
6:'Jun',
7:'Jul',
8:'Aug',
9:'Sep',
10:'Oct',
11:'Nov',
12:'Dec'}[int(MM)]
timestamp=MMM+' '+DD+' '+hh+':'+mm+':'+ss
if format == 2:
timestamp=syslog.timestampToUnix(timestamp)
return timestamp
The timeFormatConversion method can accept the event.timestamp value in the format:
YYYY/MM/DD HH:MM:SS.SS
and return a new timestamp in the format determined by the format parameter:
1 MMM DD HH:MM:SS
2 Unix based time format
This method accepts the input format in either of the two forms YYYY/MM/DD HH:MM:SS.SS or YYYY/MM/DD HH:MM:SS and simply ignores the centisecond part in the former form.