NAME
App::Sysadmin::Log::Simple - application class for managing a simple
sysadmin log
VERSION
version 0.001
SYNOPSIS
require App::Sysadmin::Log::Simple;
App::Sysadmin::Log::Simple->new(logdir => '/var/log/sysadmin')->run();
DESCRIPTION
"App::Sysadmin::Log::Simple" provides an easy way to maintain a simple
single-host system administration log.
The log is single-host in the sense that it does not log anything about
the host. While you can obviously state what host you're talking about
in your log entry, there is nothing done automatically to differentiate
such log entries, and there is no built-in way to log from one host to
another.
The logs themselves are also simple - you get a single line of plain
text to say what you have to say. That line gets logged in a fashion
that is easy to read with this script, with cat, or it can be parsed
with Text::Markdown (or Text::MultiMarkdown, which is a more modern
drop-in replacement) and served on the web.
If you need more than a single line of text, you may wish to use that
line to point to a pastebin - you can easily create and retrieve them
from the command line with App::Pastebin::sprunge.
There is also no way to audit that the logs are correct. It can be
incorrect in a number of ways:
* SUDO_USER or USER can be spoofed
* The files can be edited at any time, they are chmod 644 and owned by
an unprivileged user
* The timestamp depends on the system clock
* ...etc
Nonetheless, this is a simple, easy, and fast way to get a useful script
for managing a simple sysadmin log. We believe the 80/20 rule applies:
You can get 80% of the functionality with only 20% of a "real" solution.
In the future, each log entry might be committed to a git repository for
additional tracking.
METHODS
new
Obviously, the constructor returns an "App::Sysadmin::Log::Simple"
object. It takes a hash of options which specify:
logdir
The directory where to find the sysadmin log. Defaults to
/var/log/sysadmin.
user
The user who owns the sysadmin log. Should be unprivileged, but could be
anything. Defaults to the current user.
date
The date to use instead of today.
udp
A hashref of data regarding UDP usage. If you don't want to send a UDP
datagram, omit this. Otherwise, it has the following structure:
my %udp_data = (
irc => 1, # Whether to insert IRC colour codes
host => 'localhost',# What hostname to send to
port => 9002, # What port to send to
);
index_preamble
The text to prepend to the index page. Can be anything - by default, it
is a short explanation of the rationale for using this system of
logging, which probably won't make sense for your context.
view_preamble
A string which gets prepended to the log being viewed (ie. at the top of
the log file).
read_from
An opened filehandle reference to read from to get the log entry.
Defaults to "STDIN".
run
This runs the application in the specified mode: view or log (default).
AVAILABILITY
The latest version of this module is available from the Comprehensive
Perl Archive Network (CPAN). Visit to find a
CPAN site near you, or see
.
The development version lives at
and may be cloned
from . Instead of
sending patches, please fork this project using the standard git and
github infrastructure.
SOURCE
The development version is on github at
and may be cloned
from
BUGS AND LIMITATIONS
No bugs have been reported.
Please report any bugs or feature requests through the web interface at
.
AUTHOR
Mike Doherty
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Mike Doherty.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.