date-goggles
Our work involves lots of numeric timestamps in JSON. This leads to a lot of log output like:
[2020-04-01 18:32:22 TrackedEntityActivityRecordAPI] INFO calling historian.putData: { '_org/5/Employees/148':
{ t: [ 1585777672134, 1585778400000 ],
v: [ 'Stuffing', null ],
beginTime: 1585777672134,
Which can be tedious to debug because numeric timestamps are inscrutable. date-goggles
helps by searching for numbers that
seem to be timestamps and converting them to Dates
:
[2020-04-01 18:32:22 TrackedEntityActivityRecordAPI] INFO calling historian.putData: { '_org/5/Employees/148':
{ t: [ 4/1/2020, 4:47:52 PM, 4/1/2020, 5:00:00 PM ],
v: [ 'Stuffing', null ],
beginTime: 4/1/2020, 4:47:52 PM,
Table of Contents
Node.js API
dateGoggles(input, options)
Transforms the output with format(parse(input, options), options)
.
See parse
and format
for options
documentation.
parse(input, options)
Parses input text.
Arguments
input: string
(required)
The input to parse.
options.unit
('milliseconds' | 'seconds'
, optional)
The timestamp unit. If omitted, tries to guess based upon the input or numeric options.min
/options.max
.
options.min
(number | Date | null | undefined
, optional)
Numbers found in the input less than this will not be considered timestamps.
If you pass null
, no lower bound is used. If undefined
or omitted, defaults to 10 years ago.
options.max
(number | Date | null | undefined
, optional)
Numbers found in the input greater than this will not be considered timestamps.
If you pass null
, there's no upper bound. If undefined
or omitted, defaults to 5 years into the future.
Array<string | Date>
Returns: The input split up in to substrings in which no timestamps were found, and timestamps
converted to Date
s.
format(ast, options)
Formats a parsed AST.
Arguments
ast: Array<string | Date>
(required)
The AST output of parse
.
options.formatDate
((date: Date) => string
, optional)
Customizes how Date
s are formatted.
string
Returns: The formatted output.
CLI
The CLI is pretty basic and doesn't have any options to customize output right now,
it just parses file arguments or stdin and outputs using date.toLocaleString()
:
date-goggles app1.log app2.log
OR
some-command | date-goggles