summaryrefslogtreecommitdiff
path: root/showlog
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2006-10-27 22:02:22 +0000
committerJonas Smedegaard <dr@jones.dk>2006-10-27 22:02:22 +0000
commitfe4f87c93c7298770b56778f840e3f9f3eab3a34 (patch)
tree080a7aa9d1e70293bd89b7199c9fa7187e948c31 /showlog
parent4c05ccf86b4c76e167cacfe41fed766ae006472f (diff)
Rewrite to use egrep regex, and order entries sanely.
Diffstat (limited to 'showlog')
-rwxr-xr-xshowlog40
1 files changed, 21 insertions, 19 deletions
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 <dr@jones.dk>
#
-# $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