Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Considerably speed up logging so it's not a bottleneck (for now at le…
…ast)
  • Loading branch information
Geoffrey Broadwell committed Jan 16, 2014
1 parent 8f8e477 commit 1543ec9
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions lib/Net/IRC/Logger.pm
Expand Up @@ -14,6 +14,9 @@ enum LogLevel is export <
EMERGENCY
>;

my %level-icon = map { $_ => $_ === EMERGENCY ?? '!' !! $_.Str.substr(0, 1) },
LogLevel.^enum_value_list;

class Net::IRC::Logger {
has LogLevel $.min-level;
has IO::Path $.path;
Expand Down Expand Up @@ -45,6 +48,7 @@ class Net::IRC::Logger {
$self;
}

# XXXX: This is currently too slow (easily dominating logging performance)
method timestamp($time = now) {
my $dt = DateTime.new($time);
sprintf('%4d-%02d-%02d %02d:%02d:%02d.%03d',
Expand All @@ -54,13 +58,12 @@ class Net::IRC::Logger {
}

method log(LogLevel $level, $message) {
return if !self || $level < $.min-level;

my $icon = $level ~~ EMERGENCY ?? '!' !! $level.Str.substr(0, 1);
my $loads = $*SCHEDULER.loads.join: ',';
my $prefix = "$icon $loads $.timestamp: ";

$!channel.send: $prefix ~ $message;
if self && $level >= $!min-level {
my $icon = %level-icon{$level};
my $loads = $*SCHEDULER.loads.join: ',';
my $time = (nqp::time_n).fmt('%.3f');
$!channel.send: "$icon $loads $time: $message";
}
}

method debug($message) { self.log(DEBUG, $message) }
Expand Down

0 comments on commit 1543ec9

Please sign in to comment.