
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:
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)
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.
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.