Solaris::DevLog - Read from a Solaris Syslog stream
use Solaris::DevLog; my $devlog = new Solaris::DevLog(); while (1) ( # block until a message is available $devlog->select(undef); # get the message my ($status, $ctl, $msg) = $devlog->getmsg(); print "Message priority $ctl->{pri}: $msg\n" unless $status; }
Solaris::DevLog facilitates the reading of syslog messages via Solaris streams, and supports the syslog door mechanism.
See example.pl for a working example.
The DevLog class has the following attributes. See the section below on getting/setting these attributes.
use DevLog; my $path = '/dev/log'; my $door = '/etc/.syslog_door'; my $devlog = new DevLog ($path, $door);
The constructor takes the path to the log device and the path the door file. If these are omitted, the values shown above are used.
my ($status, $ctl, $msg) = $devlog->getmsg(); print "log message was $msg\n"; print "priority was $ctl->{pri}\n";
Gets the next available message on the log stream. Returns:
status integer as returned by the system call getmsg
ctl hash reference containing the fields of the log_ctl structure:
mid ID number of the module or driver submitting the message
sid ID number for a particular minor device
level Tracing level for selective screening
flags Message disposition. See strlog
ltime Time in machine ticks since boot
ttime Time in seconds since 1970
seq_no Sequence number
pri Priority = (facility|level)
msg string containing the log message
my $timeout = undef; my ($nfound) = $devlog->select($timeout);
This method works like the select system call on the log stream. The timeout argument works as described for select; set it to undef to block, or give it a timeout in seconds to poll.
undef
The following flag values from stdlog.h are available, and can be imported with the 'flags' tag:
use Solaris::DevLog qw(:flags); SL_FATAL # 0x01 indicates fatal error SL_NOTIFY # 0x02 logger must notify administrator SL_ERROR # 0x04 include on the error log SL_TRACE # 0x08 include on the trace log SL_CONSOLE # 0x10 include on the console log SL_WARN # 0x20 warning message SL_NOTE # 0x40 notice message
my $flags = {Create->1, Trace->1}; Solaris::DevLog::debug($flags); -or- $devlog->debug($flags);
The debug method may be called as a class or instance method; calling it as a class method will affect all objects created after the call. It takes a hash ref which defines the state of debugging flags. The currently defined debugging flags are:
Trace: prints warnings when calling methods Create: prints warnings when creating/destroying instances
$value = $devlog-><attribute_name>(); -or- $newvalue = $devlog-><attribute_name>($newvalue);
Attributes of objects of this class and subclasses can be accessed via a generic autoloaded accessor method. To get the value of an attribute, call the method with the same name. To set an attribute, or create a new one, supply the value as an argument.
Note: attributes are stored in a subhash of the object named "Data", to avoid potential collisions with required and utility methods.
use DevLog; my @initial_values = ("some value"); my $object = new DevLog (@initial_values); print $object->attribute_1('a new value');
Greg Bossert <bossert@fuaim.com>, <greg@netzwert.ag>
Special thanks to Netzwert AG <http://www.netzwert.ag> for supporting the development of this module.
getmsg (Solaris).
strlog (Solaris).
Copyright (c) 2002 Greg Bossert
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Solaris::DevLog, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Solaris::DevLog
CPAN shell
perl -MCPAN -e shell install Solaris::DevLog
For more information on module installation, please visit the detailed CPAN module installation guide.