NAME
HeliosX::Logger::HiRes - HeliosX::Logger subclass providing high resolution logging for Helios
SYNOPSIS
#in your service class
package MyService;
use base qw(HeliosX::ExtLoggerService);
# in helios.ini, disable internal logging
# and enable HeliosX::Logger::HiRes
internal_logger=off
loggers=HeliosX::Logger::HiRes
DESCRIPTION
Unlike some other HeliosX::Logger subclasses, HeliosX::Logger::HiRes intends not to link Helios with external logging systems, but to enhance Helios's own internal logging system by providing much more precise timestamping of log messages via the Time::HiRes module.
The Helios base system's logging subsystem only has resolution to a second, which keeps it consistent with the underlying TheSchwartz queueing system. But if your collective runs many short-lived (sub-second runtime) jobs, the ordering of log messages can easily get confused, with some log entries appearing after other messages that clearly came before. In order prevent this, HeliosX::Logger::HiRes uses the Perl Time::HiRes module to capture a much more precise measure of an entry's log time, and stores that time in a slightly modified Helios database schema that can handle the subsecond precision of the new time.
HELIOS DATABASE SCHEMA CHANGES
In order to handle the more precise timing information, HeliosX::Logger::HiRes requires minor changes to the Helios database schema. These changes will not alter the functionality of Helios::Panoptes or other utilities or Helios services not utilizing HeliosX::Logger::HiRes. To alter the database schema, connect to your MySQL Helios database and execute the commands in the sql/helios_hires.sql file. This will only affect the HELIOS_LOG_TB. Job history (HELIOS_JOB_HISTORY_TB) and service uptime monitoring (HELIOS_WORKER_REGISTRY_TB) will be unaffected.
IMPLEMENTED METHODS
init()
...is empty.
logMsg($job, $level, $msg)
This method effectively does the same thing as the original Helios logging code, but makes sure the log times recorded are subsecond times.
OTHER METHODS
getDriver()
Returns a Data::ObjectDriver object that can be used to write to the HELIOS_LOG_TB in the Helios database.
SEE ALSO
HeliosX::ExtLoggerService, HeliosX::Logger, Time::HiRes
AUTHOR
Andrew Johnson, <lajandy at cpan dotorg>
COPYRIGHT AND LICENSE
Copyright (C) 2009 by Andrew Johnson
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.0 or, at your option, any later version of Perl 5 you may have available.