summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2017-12-12 09:26:02 +0200
committerSergey Poznyakoff <gray@gnu.org>2017-12-12 09:26:02 +0200
commit1a0640483dbf546f335e85fb7cca9a8d7bac7fe3 (patch)
tree6179f1abc34af338c065d75b85f76a49e0ad4dc9
downloadmojosyslog-1a0640483dbf546f335e85fb7cca9a8d7bac7fe3.tar.gz
mojosyslog-1a0640483dbf546f335e85fb7cca9a8d7bac7fe3.tar.bz2
Initial commit
-rw-r--r--.gitignore14
-rw-r--r--LICENSE201
-rw-r--r--MANIFEST.SKIP63
-rw-r--r--Makefile.PL27
-rw-r--r--lib/Mojo/Log/Syslog.pm146
5 files changed, 451 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8666cce
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*~
+\#*#
+.#*
+*.bak
+*.tar*
+.emacs.*
+/tmp/
+/debug.sh
+core
+/MANIFEST
+/MYMETA.*
+/Makefile
+/blib
+/pm_to_blib
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..a582bc5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+ The Artistic License 2.0
+
+ Copyright (c) 2000-2006, The Perl Foundation.
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+Preamble
+
+This license establishes the terms under which a given free software
+Package may be copied, modified, distributed, and/or redistributed.
+The intent is that the Copyright Holder maintains some artistic
+control over the development of that Package while still keeping the
+Package available as open source and free software.
+
+You are always permitted to make arrangements wholly outside of this
+license directly with the Copyright Holder of a given Package. If the
+terms of this license do not permit the full use that you propose to
+make of the Package, you should contact the Copyright Holder and seek
+a different licensing arrangement.
+
+Definitions
+
+ "Copyright Holder" means the individual(s) or organization(s)
+ named in the copyright notice for the entire Package.
+
+ "Contributor" means any party that has contributed code or other
+ material to the Package, in accordance with the Copyright Holder's
+ procedures.
+
+ "You" and "your" means any person who would like to copy,
+ distribute, or modify the Package.
+
+ "Package" means the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection and/or of
+ those files. A given Package may consist of either the Standard
+ Version, or a Modified Version.
+
+ "Distribute" means providing a copy of the Package or making it
+ accessible to anyone else, or in the case of a company or
+ organization, to others outside of your company or organization.
+
+ "Distributor Fee" means any fee that you charge for Distributing
+ this Package or providing support for this Package to another
+ party. It does not mean licensing fees.
+
+ "Standard Version" refers to the Package if it has not been
+ modified, or has been modified only in ways explicitly requested
+ by the Copyright Holder.
+
+ "Modified Version" means the Package, if it has been changed, and
+ such changes were not explicitly requested by the Copyright
+ Holder.
+
+ "Original License" means this Artistic License as Distributed with
+ the Standard Version of the Package, in its current version or as
+ it may be modified by The Perl Foundation in the future.
+
+ "Source" form means the source code, documentation source, and
+ configuration files for the Package.
+
+ "Compiled" form means the compiled bytecode, object code, binary,
+ or any other form resulting from mechanical transformation or
+ translation of the Source form.
+
+
+Permission for Use and Modification Without Distribution
+
+(1) You are permitted to use the Standard Version and create and use
+Modified Versions for any purpose without restriction, provided that
+you do not Distribute the Modified Version.
+
+
+Permissions for Redistribution of the Standard Version
+
+(2) You may Distribute verbatim copies of the Source form of the
+Standard Version of this Package in any medium without restriction,
+either gratis or for a Distributor Fee, provided that you duplicate
+all of the original copyright notices and associated disclaimers. At
+your discretion, such verbatim copies may or may not include a
+Compiled form of the Package.
+
+(3) You may apply any bug fixes, portability changes, and other
+modifications made available from the Copyright Holder. The resulting
+Package will still be considered the Standard Version, and as such
+will be subject to the Original License.
+
+
+Distribution of Modified Versions of the Package as Source
+
+(4) You may Distribute your Modified Version as Source (either gratis
+or for a Distributor Fee, and with or without a Compiled form of the
+Modified Version) provided that you clearly document how it differs
+from the Standard Version, including, but not limited to, documenting
+any non-standard features, executables, or modules, and provided that
+you do at least ONE of the following:
+
+ (a) make the Modified Version available to the Copyright Holder
+ of the Standard Version, under the Original License, so that the
+ Copyright Holder may include your modifications in the Standard
+ Version.
+
+ (b) ensure that installation of your Modified Version does not
+ prevent the user installing or running the Standard Version. In
+ addition, the Modified Version must bear a name that is different
+ from the name of the Standard Version.
+
+ (c) allow anyone who receives a copy of the Modified Version to
+ make the Source form of the Modified Version available to others
+ under
+
+ (i) the Original License or
+
+ (ii) a license that permits the licensee to freely copy,
+ modify and redistribute the Modified Version using the same
+ licensing terms that apply to the copy that the licensee
+ received, and requires that the Source form of the Modified
+ Version, and of any works derived from it, be made freely
+ available in that license fees are prohibited but Distributor
+ Fees are allowed.
+
+
+Distribution of Compiled Forms of the Standard Version
+or Modified Versions without the Source
+
+(5) You may Distribute Compiled forms of the Standard Version without
+the Source, provided that you include complete instructions on how to
+get the Source of the Standard Version. Such instructions must be
+valid at the time of your distribution. If these instructions, at any
+time while you are carrying out such distribution, become invalid, you
+must provide new instructions on demand or cease further distribution.
+If you provide valid instructions or cease distribution within thirty
+days after you become aware that the instructions are invalid, then
+you do not forfeit any of your rights under this license.
+
+(6) You may Distribute a Modified Version in Compiled form without
+the Source, provided that you comply with Section 4 with respect to
+the Source of the Modified Version.
+
+
+Aggregating or Linking the Package
+
+(7) You may aggregate the Package (either the Standard Version or
+Modified Version) with other packages and Distribute the resulting
+aggregation provided that you do not charge a licensing fee for the
+Package. Distributor Fees are permitted, and licensing fees for other
+components in the aggregation are permitted. The terms of this license
+apply to the use and Distribution of the Standard or Modified Versions
+as included in the aggregation.
+
+(8) You are permitted to link Modified and Standard Versions with
+other works, to embed the Package in a larger work of your own, or to
+build stand-alone binary or bytecode versions of applications that
+include the Package, and Distribute the result without restriction,
+provided the result does not expose a direct interface to the Package.
+
+
+Items That are Not Considered Part of a Modified Version
+
+(9) Works (including, but not limited to, modules and scripts) that
+merely extend or make use of the Package, do not, by themselves, cause
+the Package to be a Modified Version. In addition, such works are not
+considered parts of the Package itself, and are not subject to the
+terms of this license.
+
+
+General Provisions
+
+(10) Any use, modification, and distribution of the Standard or
+Modified Versions is governed by this Artistic License. By using,
+modifying or distributing the Package, you accept this license. Do not
+use, modify, or distribute the Package, if you do not accept this
+license.
+
+(11) If your Modified Version has been derived from a Modified
+Version made by someone other than you, you are nevertheless required
+to ensure that your Modified Version complies with the requirements of
+this license.
+
+(12) This license does not grant you the right to use any trademark,
+service mark, tradename, or logo of the Copyright Holder.
+
+(13) This license includes the non-exclusive, worldwide,
+free-of-charge patent license to make, have made, use, offer to sell,
+sell, import and otherwise transfer the Package with respect to any
+patent claims licensable by the Copyright Holder that are necessarily
+infringed by the Package. If you institute patent litigation
+(including a cross-claim or counterclaim) against any party alleging
+that the Package constitutes direct or contributory patent
+infringement, then this Artistic License to you shall terminate on the
+date that such litigation is filed.
+
+(14) Disclaimer of Warranty:
+THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
+IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
+LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP
new file mode 100644
index 0000000..58696be
--- /dev/null
+++ b/MANIFEST.SKIP
@@ -0,0 +1,63 @@
+# Avoid version control files.
+\bRCS\b
+\bCVS\b
+\bSCCS\b
+,v$
+\B\.svn\b
+\B\.git\b
+\B\.gitignore\b
+\b_darcs\b
+\B\.cvsignore$
+
+# Avoid VMS specific MakeMaker generated files
+\bDescrip.MMS$
+\bDESCRIP.MMS$
+\bdescrip.mms$
+
+# Avoid Makemaker generated and utility files.
+\bMANIFEST\.bak
+\bMakefile$
+\bblib/
+\bMakeMaker-\d
+\bpm_to_blib\.ts$
+\bpm_to_blib$
+\bblibdirs\.ts$ # 6.18 through 6.25 generated this
+
+# Avoid Module::Build generated and utility files.
+\bBuild$
+\b_build/
+\bBuild.bat$
+\bBuild.COM$
+\bBUILD.COM$
+\bbuild.com$
+
+# Avoid temp and backup files.
+~$
+\.old$
+\#$
+\b\.#
+\.bak$
+\.tmp$
+\.#
+\.rej$
+
+# Avoid OS-specific files/dirs
+# Mac OSX metadata
+\B\.DS_Store
+# Mac OSX SMB mount metadata files
+\B\._
+
+# Avoid Devel::Cover and Devel::CoverX::Covered files.
+\bcover_db\b
+\bcovered\b
+
+# Avoid MYMETA files
+^MYMETA\.
+
+^debug.sh
+^tmp
+^buildreq
+^\.emacs\.*
+
+\.tar$
+\.tar\.gz$
diff --git a/Makefile.PL b/Makefile.PL
new file mode 100644
index 0000000..8922c55
--- /dev/null
+++ b/Makefile.PL
@@ -0,0 +1,27 @@
+use 5.010001;
+
+use strict;
+use ExtUtils::MakeMaker;
+use Module::Metadata;
+
+WriteMakefile(
+ NAME => 'Mojo::Log::Syslog',
+ VERSION_FROM => 'lib/Mojo/Log/Syslog.pm',
+ ABSTRACT_FROM => 'lib/Mojo/Log/Syslog.pm',
+ AUTHOR => 'Sergey Poznyakoff <gray@gnu.org>',
+ LICENSE => 'artistic_2',
+ PREREQ_PM => {
+ 'Mojolicious' => '7.58',
+ 'Sys::Syslog' => 0
+ },
+ META_MERGE => {
+ 'meta-spec' => { version => 2 },
+ resources => {
+ repository => {
+ type => 'git',
+ url => 'git://git.gnu.org.ua/mojosyslog.git',
+ web => 'http://git.gnu.org.ua/cgit/mojosyslog.git/',
+ },
+ }
+ }
+);
diff --git a/lib/Mojo/Log/Syslog.pm b/lib/Mojo/Log/Syslog.pm
new file mode 100644
index 0000000..621301f
--- /dev/null
+++ b/lib/Mojo/Log/Syslog.pm
@@ -0,0 +1,146 @@
+package Mojo::Log::Syslog;
+use strict;
+use warnings;
+use Mojo::Base 'Mojo::Log';
+use File::Basename 'basename';
+use Sys::Syslog qw(:standard :macros);
+use Carp;
+
+our $VERSION = '1.0';
+
+sub new {
+ my $class = shift;
+ local %_ = @_;
+ my $ident = delete $_{ident} || basename($0);
+ my $facility = delete $_{facility} || LOG_USER;
+ my $level = delete $_{level} || 'debug';
+ my $logopt = delete $_{logopt} || 'ndelay,pid';
+ if (ref($logopt) eq 'ARRAY') {
+ $logopt = join(',', @$logopt);
+ }
+ croak "unrecognized arguments" if keys(%_);
+ openlog($ident, $logopt, $facility);
+ return $class->SUPER::new(level => $level);
+}
+
+sub debug { shift->_syslog(debug => LOG_DEBUG => @_) }
+sub warn { shift->_syslog(warn => LOG_WARN => @_) }
+sub info { shift->_syslog(info => LOG_INFO => @_) }
+sub error { shift->_syslog(error => LOG_ERROR => @_) }
+sub fatal { shift->_syslog(fatal => LOG_CRIT => @_) }
+
+sub _syslog {
+ my ($self, $level, $prio, @args) = @_;
+ $self->{_priority} = $prio;
+ $self->${\ "SUPER::$level"}(@args);
+}
+
+sub append {
+ my ($self, $msg) = @_;
+ syslog($self->{_priority}, "%s", $msg);
+}
+
+has format => sub { shift->short ? \&_fmt_short : \&_fmt_long };
+
+sub _fmt_short {
+ my (undef, undef, @lines) = @_;
+ return join("\n", @lines);
+}
+
+sub _fmt_long {
+ my (undef, $level, @lines) = @_;
+ return "[$level]: ".join("\n", @lines);
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Mojo::Log::Syslog - syslog for Mojo projects
+
+=head1 SYNOPSIS
+
+ use Mojo::Log::Syslog;
+
+ $logger = new Mojo::Log::Syslog(facility => 'user',
+ ident => 'myapp',
+ level => 'warn');
+
+ app->log($logger);
+
+=head1 DESCRIPTION
+
+Syslog-based logger for Mojo applications.
+
+=head1 CONSTRUCTOR
+
+The B<Mojo::Log::Syslog> constructor takes the following keyword arguments,
+all of which are optional:
+
+=over 4
+
+=item B<facility =E<gt>> I<FACILITY>
+
+Sets the syslog facility to use. Valid facility names are: C<auth>,
+C<authpriv>, C<cron>, C<daemon>, C<ftp>, C<kern>, C<local0> through
+C<local7>, C<lpr>, C<mail>, C<news>, C<user>, and C<uucp>. See also
+B<Sys::Syslog>(3), section B<Facilities>.
+
+The default is C<user>.
+
+=item B<ident =E<gt>> I<STRING>
+
+Syslog message identifier. Defaults to the base name from B<$0>.
+
+=item B<logopt =E<gt>> I<OPTLIST>
+
+Defines the list of options for B<openlog>. I<OPTLIST> is either a string
+with comma-separated option names or a list reference containing option
+names. The following two options are equivalent:
+
+ logopt => "ndelay,pid,nowait"
+
+ logopt => [qw(ndeay pid nowait)]
+
+See B<Sys::Syslog>(3) for a list of available option names.
+
+Defaults to C<ndelay,pid>.
+
+=item B<level E<gt>> I<NAME>
+
+Sets minimum logging level. See B<Mojo::Log>, for a list of levels.
+
+=back
+
+=head1 EXAMPLE
+
+=head2 Using with Mojolicious::Lite
+
+ use Mojolicious::Lite;
+ use Mojo::Log::Syslog;
+
+ my $logger = new Mojo::Log::Syslog(facility => 'local0',
+ level => warn);
+ app->log($logger);
+
+=head2 Using with Mojolicious
+
+ package MyApp;
+ use Mojo::Base 'Mojolicious';
+
+ sub startup {
+ my $self = shift;
+
+ my $logger = new Mojo::Log::Syslog(facility => 'local0',
+ level => warn);
+ $self->app->log($logger);
+ }
+
+=head1 SEE ALSO
+
+B<Mojo::Log>(3),
+L<Mojolicious>, L<Mojolicious::Guides>, L<http://mojolicious.org>,
+
+=cut
+

Return to:

Send suggestions and report system problems to the System administrator.