Acme-Ghost
view release on metacpan or search on metacpan
lib/Acme/Ghost.pm view on Meta::CPAN
=head2 ident
ident => 'myDaemon',
This attribute sets ident string for system log (syslog)
=head2 logfile
logfile => '/var/log/myDaemon.log',
This attribute sets log file path. By default all log entries will be printed to syslog
See L<Acme::Ghost::Log/file>
=head2 logger
logger => Mojo::Log->new,
This attribute perfoms to set predefined logger, eg. Mojo::Log.
If you set this attribute, the specified logger will be used as the preferred logger
=head2 loghandle
Log filehandle, defaults to opening "file" or uses syslog if file not specified
See L<Acme::Ghost::Log/handle>
=head2 loglevel
loglevel => 'debug',
This attribute sets the log level
See L<Acme::Ghost::Log/level>
lib/Acme/Ghost.pm view on Meta::CPAN
=head2 filepid
my $filepid = $g->filepid;
This method returns L<Acme::Ghost::FilePid> object
=head2 flush
$self = $self->flush;
This internal method flush (resets) process counters to defaults. Please do not use this method in your inherits
=head2 is_daemonized
$g->is_daemonized or die "Your ghost process really is not a daemon"
This method returns status of daemon:
True - the process is an daemon;
False - the process is not daemon;
lib/Acme/Ghost.pm view on Meta::CPAN
# start, stop, restart, reload, status
Daemon Control Dispatcher with using USR2 to reloading
exit $g->ctrl( shift @ARGV, 0 );
This example shows how to forced suppress reloading (disable send users signals to daemon)
=head2 reload
$exit_code = $g->reload; # SIGHUP (by default)
$exit_code = $g->reload('USR2'); # SIGUSR2
$exit_code = $g->reload(12); # SIGUSR2 too
say "Reloading ". $g->pid;
This method performs sending signal to Your daemon and return C<0> as exit code.
This method is primarily intended to perform a daemon reload
=head2 restart
$exit_code = $g->restart;
lib/Acme/Ghost.pm view on Meta::CPAN
$self->log->debug("Start AnyEvent");
$quit->recv; # Run!
$self->log->debug("Finish AnyEvent");
}
1;
=item ghost_nobody.pl
This example shows how to start daemons over nobody user and logging to syslog (default)
my $g = MyGhost->new(
pidfile => '/tmp/daemon.pid',
user => 'nobody',
group => 'nogroup',
);
exit $g->ctrl(shift(@ARGV) // 'start', 0); # start, stop, restart, status
1;
lib/Acme/Ghost/Log.pm view on Meta::CPAN
=head2 new
my $log = Acme::Ghost::Log->new(
logopt => 'ndelay,pid',
facility => 'user',
level => 'debug',
ident => 'test.pl',
);
With default attributes
use Mojo::Log;
my $log = Acme::Ghost::Log->new( logger => Mojo::Log->new );
$log->error("Test error message");
This is example with external loggers
=head1 ATTRIBUTES
This class implements the following attributes
lib/Acme/Ghost/Log.pm view on Meta::CPAN
Default: C<user> (Sys::Syslog::LOG_USER)
See also L<Sys::Syslog/Facilities>
=head2 file
Log file path used by "handle"
=head2 handle
Log filehandle, defaults to opening "file" or uses syslog if file not specified
=head2 ident
The B<ident> is prepended to every message
Default: script name C<basename($0)>
=head2 level
There are six predefined log levels: C<fatal>, C<error>, C<warn>, C<info>, C<debug>, and C<trace> (in descending priority).
lib/Acme/Ghost/Log.pm view on Meta::CPAN
$log->info('You are bad, but you prolly know already');
$log->info('Ok', 'then');
Log C<info> message
=head2 level
my $level = $log->level;
$log = $log->level('debug');
Active log level, defaults to debug.
Available log levels are C<trace>, C<debug>, C<info>, C<notice>, C<warn>, C<error>,
C<fatal> (C<crit>), C<alert> and C<emerg>, in that order
=head2 logger
my $logger = $log->logger;
This method returns the logger object or undef if not exists
=head2 notice
lib/Acme/Ghost/Prefork.pm view on Meta::CPAN
B<Note that> this value should usually be a little larger than the maximum
amount of time you expect any one request to take
Defaults to C<120>
=head2 heartbeat_interval
heartbeat_interval => 5
Heartbeat interval in seconds, defaults to C<5>
=head2 heartbeat_timeout
heartbeat_timeout => 50
Maximum amount of time in seconds before a spirit without a heartbeat will be stopped gracefully
B<Note that> this value should usually be a little larger than the maximum
amount of time you expect any one operation to block the event loop
t/03-filepid.t view on Meta::CPAN
#
#########################################################################
use strict;
use Test::More;
use_ok qw/Acme::Ghost::FilePid/;
# Regular mode
{
my $fp = Acme::Ghost::FilePid->new(file => "test03.pid");
is $fp->pid, $$, 'current process by default';
ok $fp->save, 'writing file';
is $fp->running, $$, 'we are running';
ok $fp->remove, 'deleted file';
#note explain $fp;
}
# Autoremove mode
{
my $fp = Acme::Ghost::FilePid->new(file => "test03.tmp", autoremove => 1);
ok $fp->save, 'writing file';
( run in 0.633 second using v1.01-cache-2.11-cpan-0a6323c29d9 )