Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Tie::Syslog(3)	      User Contributed Perl Documentation	Tie::Syslog(3)

       Tie::Syslog - Tie a filehandle to Syslog.


       v2.00 is	a complete rewrite of Tie::Syslog. If you used v1.x and
       something broke after upgrade, please report the	problem	back and I'll
       try to fix it asap. Thanks.

	   use Tie::Syslog;

	   $Tie::Syslog::ident	= "my logging tag";
	   $Tie::Syslog::logopt	= "pid,ndelay";

	   # Tie STDOUT	to Syslog, so that every print()ed message will	be logged
	   tie *STDOUT,	'Tie::Syslog', {
	       facility	=> 'LOG_LOCAL0',
	       priority	=> 'LOG_INFO',

	   # Now tie STDERR also, getting parameters from the tied STDOUT
	   tie *STDERR,	{ tied *STDOUT };

	   # ...or...

	   # tie STDERR	with defaults from tied	STDOUT,	but override priority:
	   tie *STDERR,	{ tied *STDOUT }, {
	       priority	=> 'LOG_ERR',

	   # Compatibility with	old configuration style:

	   tie *STDOUT,	'Tie::Syslog',
	       'local0.error',	       # facility.loglevel
	       'myname',	       # identity
	       'pid,ndelay',	       # Other Sys::Syslog options, comma-separated
	       'unix';		       # setlogsock socket type: unix or inet

	   tie *STDERR,	'Tie::Syslog',
	       'local0.warning',       # facility.loglevel
	       'myname',	       # USE THE SAME AS ABOVE!
	       'pid,ndelay',	       # USE THE SAME AS ABOVE!
	       'unix';		       # USE THE SAME AS ABOVE!

	   # Tying by copying from another tied	handle is not supported	in
	   # old-compatibility-mode

	   # old-compatibility-mode defaults to	'local0.error'

	   # socket type is IGNORED

       This module lets	you tie	a filehandle to	Sys::Syslog, providing an easy
       way to redirect messages	to system logs.

	   $Tie::Syslog::ident	= 'DEBUG :: myprocess';
	   $Tie::Syslog::logopt	= 'pid,ndelay';

	   tie *DEBUG, 'Tie::Syslog', {
	       facility	=> 'LOG_LOCAL0',
	       priority	=> 'LOG_DEBUG',

	   print DEBUG "This is	a debug	message	- won't	probably get to	system logs.";

       By tying	STDOUT and/or STDERR you can easily redirect all messages to
       system logs, including those of warn() and die().

       Tipically, you'll want to tie STDOUT with a lower priority than STDERR.

       Identity	set for	logging. This is a global option, and will be valid
       from the	moment you set it onward. The default value is the last	field
       of $0 split on '/'.

       Logging options.	These are standard Sys::Syslog logopts.	See
       Sys::Syslog man page for	details. This is a global option, default is

       One of the default Sys::Syslog facilities available on your system. See
       Sys::Syslog man page for	details. You can have different	facilities for
       different filehandles, but this is not recommended, and will prevent
       Tie::Syslog from	calling	closelog() (see	"CAVEATS" for details).

       You can redefine	a the facility for a given filehandle on the fly:

	   my $fho = tied *MYFH;

	   # better:

	   (tied *MYFH)->facility('LOG_MAIL');

	   # better yet: don't do it

       but please note that this is against Sys::Syslog	rule:

       o   "The	Fourth Rule of Sys::Syslog is: One facility, one priority."
	   (from Sys::Syslog man page).

       One of the default Sys::Syslog priorities available on your system. See
       Sys::Syslog man page for	details. You can have different	priorities for
       different filehandles.

       You can redefine	the priority for a given filehandle on the fly:

	   my $fho = tied *MYFH;

	   # better:

	   (tied *MYFH)->priority('LOG_CRIT');

       o   We set the most permissive mask for log levels, so that nothing
	   should be filtered by Sys::Syslog itself, but some messages may
	   still be filtered, according	to your	syslog daemon configuration.
	   Consult your	local syslog daemon documentation.

       o   We do not call closelog() in	case multiple facilities are in	use

	   In general, openlog() is called automatically whenever syslog() is
	   called on a new facility (although we call it explicitly on tie()).
	   Since closelog() would work just once and on	the last opened
	   connetion to	syslog,	it could close a connection completely
	   unrelated to	the filehandle currently being
	   closed/untied/destroyed. In case you	tied multiple filehandles over
	   multiple faiclities (you shouldn't, see Sys::Syslog for details),
	   closelog() won't be called at all.

       o   "ident" and/or "logopt" should be set once, before tying handles.

	   If change these variables after tying handles, the behavior is
	   undetermined. At best, nothing should change; or settings could
	   change if another openlog() is called afterwards, but don't rely on
	   this. Also, if settings change, they	will affect all	tied
	   filehandles.	For these reasons, either:

	   o   Set them	once at	the beginning, or

	   o   if you're tying two or more handles using old-style syntax, use
	       the same	values for all of them.

       o   Old method "ExtendedSTDERR()" is no-op by default.

	   It is still supported for backward compatibility, but warn()	and
	   die() print by default to STDERR so there should be no need to
	   change them directly.

       o   We do not call setlogsock()

       Log priorities, facilities and valid values for "logopt"	are listed in
       Sys::Syslog man page.

       Read syslog(3) for details on syslog.

       Broc Seib, "bseib at"	- up to	1.07

       Giacomo Montagner, "<kromg at>" - from 2.00 onward.

       Please report any bugs or feature requests to "bug-tie-syslog at", or	through	the web	interface at
       <>.  I'will be
       notified, and then you'll automatically be notified of progress on your
       bug as I	make changes.

       You can find documentation for this module with the perldoc command.

	   perldoc Tie::Syslog

       You can also look for information at:

       o   RT: CPAN's request tracker (report bugs here)


       o   AnnoCPAN: Annotated CPAN documentation


       o   CPAN	Ratings


       o   Search CPAN


       Many thanks to Broc Seib, who wrote this	module back in 1999.

       Copyright (C) 1999-2001 Broc Seib

       Copyright (C) 2012 Giacomo Montagner.

       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

       See for more information.

perl v5.32.0			  2014-04-30			Tie::Syslog(3)


Want to link to this manual page? Use this URL:

home | help