Skip to content

Commit 1e1617e

Browse files
committed
add option to sort log files by file name field
1 parent 681b185 commit 1e1617e

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

scripts/storyteller

+10-4
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ def build_options(after=0, before=0, context=0):
4444
return ' '.join(x for x in options)
4545

4646

47-
def find_log(logpath, log, regex, after=0, before=0, context=0):
47+
def find_log(logpath, log, regex, after=0, before=0, context=0, field=0):
4848
options = build_options(after, before, context)
49-
cmd = 'find -L {}/{}* -newer {} | xargs ls -rt | xargs zgrep -a {} "{}"'.format(logpath, log, reference_file, options, regex)
49+
if field <= 0:
50+
cmd = 'find -L {}/{}* -newer {} | xargs ls -rt | xargs zgrep -a {} "{}"'.format(logpath, log, reference_file, options, regex)
51+
else:
52+
cmd = 'find -L {0}/{1}* -newer {2} | sort -rn -t . -k {3},{3} | xargs zgrep -a {4} "{5}"'.format(logpath, log, reference_file, field, options, regex)
53+
5054
_, out, _ = exec_cmd(cmd)
5155
'''
5256
Opportunity to improve:
@@ -92,8 +96,10 @@ def main():
9296
type=int, required=False, default=0)
9397
parser.add_argument('-C', '--context', help='Show N lines before and after match',
9498
type=int, required=False, default=0)
95-
parser.add_argument('-S', '--since', help='Filter logs since the given date',
99+
parser.add_argument('-s', '--since', help='Filter logs since the given date',
96100
type=str, required=False, default="@0")
101+
parser.add_argument('-f', '--sortfield', help='Use Nth field separted by "." in file name to sort. e.g. syslog.1.gz: -f 2, swss.rec.2.gz: -f 3, default 0: sort by timestamp',
102+
type=int, required=False, default=0)
97103

98104
args = parser.parse_args()
99105

@@ -106,7 +112,7 @@ def main():
106112
reg = build_regex(category)
107113
configure_time_filter(since)
108114

109-
find_log(log_path, log, reg, args.after, args.before, args.context)
115+
find_log(log_path, log, reg, args.after, args.before, args.context, args.sortfield)
110116

111117

112118
if __name__ == '__main__':

0 commit comments

Comments
 (0)