The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

HTTP::LoadGen::Logger - a Coro based logger

SYNOPSIS

 use HTTP::LoadGen::Logger;

 # get a logger
 $logger=HTTP::LoadGen::Logger::get $filehandle_or_name, $formatter;

 # use it
 $logger->(@data);

 # close it
 $logger->();

DESCRIPTION

This module implements a Coro-aware logger. A logger here is a function reference. When called it passes its arguments to the formatter function and pushs the resulting string into a queue. This queue is then processed by a separate Coro thread that runs with the lowest possible priority. The thread prints each line to the $filehandle that was given when the logger was created.

This logger tries to stay out of the way of normal processing as much as possible. The drawback is that when your program has always something other to do all logging output is buffered in RAM.

Functions

$logger=HTTP::LoadGen::Logger::get $filehandle_or_name, $formatter

creates a logger that writes to $filehandle.

If a file name is passed it is opened to append. On open failure an execption is thrown.

The logger is then used as:

 $logger->(@parameters);

$formatter is expected to be a function reference that returns a string. It is called in scalar context as:

 $formatter->(@parameters);

where @parameters are the parameters passed to the logger.

Both $filehandle and $formatter are optional. If omitted STDOUT is used as output stream and

 join("\t, @parameters)."\n"

as formatter.

If the logger is called without arguments as:

 $logger->();

it is signaled that logging is done. This call waits for the writer thread to write out all remaining data. It returns only after the writer thread is done. Note, the file handle is not closed by this call.

EXPORT

None.

SEE ALSO

HTTP::LoadGen

AUTHOR

Torsten Förtsch, <torsten.foertsch@gmx.net>

COPYRIGHT AND LICENSE

Copyright (C) 2010 by Torsten Förtsch

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.