From fe4f87c93c7298770b56778f840e3f9f3eab3a34 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Fri, 27 Oct 2006 22:02:22 +0000 Subject: Rewrite to use egrep regex, and order entries sanely. --- showlog | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'showlog') diff --git a/showlog b/showlog index 2ab11fc..aeceb94 100755 --- a/showlog +++ b/showlog @@ -3,7 +3,7 @@ # /usr/local/sbin/showlog # Copyright 2002-2006 Jonas Smedegaard # -# $Id: showlog,v 1.9 2006-10-27 12:35:11 jonas Exp $ +# $Id: showlog,v 1.10 2006-10-27 22:02:22 jonas Exp $ # # Show topic-specific log entries # @@ -22,21 +22,24 @@ exit1() { } cat_logs() { - rootdir=$1 - shift - patterns=$@ + rootdir="$1" + pattern="$2" + howmany="${3:-2}" - for pattern in $patterns; do - for file in `find $rootdir -mindepth 1 -maxdepth 1 -name "$pattern" -type f -follow | sort`; do - case $pattern in - *.gz) - zcat $file;; - *.bz2) - bzcat $file;; - *) - cat $file;; - esac - done + if [ "$howmany" != "all" ]; then + files="$(find $rootdir -mindepth 1 -maxdepth 1 -regextype posix-egrep -regex "$pattern" -type f -follow | sort -nr | tail -n "$howmany")" + else + files="$(find $rootdir -mindepth 1 -maxdepth 1 -regextype posix-egrep -regex "$pattern" -type f -follow | sort -nr)" + fi + for file in $files; do + case $file in + *.gz) + zcat $file;; + *.bz2) + bzcat $file;; + *) + cat $file;; + esac done } @@ -85,8 +88,7 @@ case "$target" in esac case "$target" in ftp|web|weberror|weberrors|websuexec|mail|system) - logpatterns="$log.? $log" -# logpatterns="$log.??.gz $log.?.gz $log.? $log" + logpattern="$(printf '.*/%s(\.[[:digit:]]+(\.gz)?)?\n' "$log")" ;; *) exit1 "Undefined logpattern for \"$target\"" @@ -98,9 +100,9 @@ if [ $# -gt 0 ]; then for keyword in $@; do grep_opts="$opts -e $keyword" done - cat_logs $logroot $logpatterns | grep -i $grep_opts | tail -n $tail_history + cat_logs "$logroot" "$logpattern" | grep -i $grep_opts | tail -n $tail_history # [ -f $logroot/$log ] && tail -n 0 -F $logroot/$log | grep -i $grep_opts else - cat_logs $logroot $logpatterns | tail -n $tail_history + cat_logs "$logroot" "$logpattern" | tail -n $tail_history # [ -f $logroot/$log ] && tail -n 0 -F $logroot/$log fi -- cgit v1.2.3