Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- #
- # saku-log.pl - saku log colorizer.
- #
- #usage.
- # tail -f logfile | saku-log.pl
- #
- # grep foobar logfile | saku-log.pl | less
- #
- use strict;
- use warnings;
- BEGIN { $| = 1 } #stdout flush
- my $GREEN = "\e[36m";
- my $RESET = "\e[0m";
- my $IP = "\e[32m";
- my $WARN = "\e[33;1m";
- my $ERRNO = "\e[31;1m";
- my $INFO = "\e[35;1m";
- my $UA = "\e[96;1m";
- my $BASE = $GREEN;
- my $ip_pattern = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{0,6})?';
- while (my $line = <>) {
- chomp $line;
- $line = $BASE . $line . $RESET . "\n";
- $line =~ s|<>|$RESET<>$BASE|g;
- $line =~ s|($ip_pattern)|$RESET$IP$1$BASE|g;
- $line =~ s|(<>\Q${BASE}\Etalk: http://)([^\d].+?)/|$1$RESET$IP$2$RESET$BASE/|;
- #info
- $line =~ s|<>\Q${BASE}\E(shingetsu.+(started\|finished))|<>$INFO$1|;
- $line =~ s|(client timeout)|$RESET$INFO$1$RESET|;
- $line =~ s|<>\Q${BASE}\E(direct).+?m<>|<>\e[35m$1$RESET<>|;
- #warning
- $line =~ s|Warning: |${WARN}Warning:$RESET |;
- $line =~ s|(: records not found\.)|\e[33m$1$RESET|;
- $line =~ s|(: too large or spam record.)|\e[33m$1$RESET|;
- $line =~ s|(<urlopen error .+)|\e[31m$1|;
- $line =~ s|<>\Q${BASE}\EIOError|<>IOError|;
- $line =~ s|(\[Errno \d+\])|$ERRNO$1$RESET|;
- $line =~ s|(: error)|\e[31m$1$RESET|;
- $line =~ s|<>\Q${BASE}\E(binascii.Error:)( .+)|<>\e[31m$1$RESET$2|;
- $line =~ s|: (HTTP Error \d+:.+)|: $RESET\e[31m$1|;
- $line =~ s|<>\Q${BASE}\E(code \d+.+?)\(|<>\e[33m$1$RESET\(|;
- $line =~ s|<>\Q${BASE}\E(-+)|<>$1|;
- $line =~ s|<>\Q${BASE}\E( *File "/usr/.+/python3\..+)|<>$1|;
- $line =~ s|<>\Q${BASE}\E(Exception\|Traceback\|AttributeError)(.+)|<>$1$2|;
- $line =~ s|^\Q${BASE}\E([^\d]+?.*)|$1|;
- #UA
- $line =~ s|<>\Q${BASE}\E(shinGETsu.+?)(\(.+?\)).+?m$|<>\e[35m$1$RESET$2|;
- $line =~ s|(\(.+?\))$|\e[34m$1$RESET|;
- $line =~ s|<>\Q${BASE}\E(Mozilla/5.0 \(.+\|ia_archiver\|Hatena::Fetcher/.+\|Python-urllib/.+\|CCBot/.+\|ltx71.+)|<>$UA$1|;
- print $line;
- }
- print "$RESET";
- __END__
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement