The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
$Header: /var/cvs/sources/Funlog/README,v 1.16 2005/01/25 22:33:14 gab Exp $
vim600: set textwidth=80:

Log::Funlog - Log with fun!

Gab
korsani free fr

 ,+---------------------------------- -  -   -    -     -
( | Description
 `+---------------------------------- -  -   -    -     -

Easy to use and funny log module :P

I tried to make it fast and convenient. That mean that there is as few as
possible mandatory option when initializing the module (actually, there is only
one :) and it is REALLY easy to use.
No headache to choose wether or not put this option, and you don't screw your
brain trying to understand what this bloody option do. All is simple (I hope :P)

 ,+---------------------------------- -  -   -    -     -
( | Features:
 `+---------------------------------- -  -   -    -     -

- Log level (verbosity, as much as you want)
- Logging to stderr or file (as you want)
- Print stack of calling subs (first 'n' calls, last 'n' calls, all calls) (if
  you want)
- (Quite) customizable prefix
- Quite fast
- Fun included (if you want! )

Feel free to modify this module to your convenience.


 ,+---------------------------------- -  -   -    -     -
( | Install
 `+---------------------------------- -  -   -    -     -

perl Makefile.PL
make
(make test)
sudo make install

Note: you can perl Makefile.PL INSTALLDIRS=vendor if you want to make the module
not dependant of your perl version.
I made a 'vendor' install by default, but it seems that not all perl distros can
install as 'vendor'...

 ,+---------------------------------- -  -   -    -     -
( | Use
 `+---------------------------------- -  -   -    -     -
   , Simple way:
    `------------------------------
No header, log to stderr, no fun, just log :)
If you have just one thing to remember, it is this form.

	use Log::Funlog;
	*Log=Log::Funlog->new(
		verbose => '3/5'	#verbose 3 out of 5	
	);
	Log(1,"plop level 1");			#this will be printed	
	Log(2,"plop level 2");			#this too
	Log(3,"plop level 3");			#this again
	Log(4,"plop level 4");			#but not that, as 4 > 3
	Log(5,"plop level 5");			#neither that
	Log(6,"plop level 6");			#neither that, even if 6 > 5

will output:
	plop level 1
	plop level 2
	plop level 3

As you can see, defaults are sensible!


   , Complicated way (example):
    `------------------------------

	use Log::Funlog qw( error );
	*Log=Log::Funlog->new(
		file => "zou.log",			#name of the file
		verbose => '3/5',			#verbose 3 out of 5
		daemon => 1,				#I am a daemon, so log to the file ("zou.log")
		header => "%dd %pp %l[]l %s{}s ",		#header format
		cosmetic => 'x', 					#crosses for the level
		fun => 10,						#10% of fun (que je passe autour de moi)
		colors => '1',						#Colors, default ones
		error_header => 'Groumpf... ',		#Header for true errors
		caller => '1');				#and I want the name of the sub that is logging

	sub sub_plop {
		$i=shift;
		Log($i%5,"plop",$i);
	}
	for(my $i=1;$i<100;$i++) {
		sub_plop($i);
	}
	error("Oops!");

Will output something like that to zou.log:

Wed Dec 29 16:51:58 2004 plop.pl [x    ]  plop1
Wed Dec 29 16:51:58 2004 plop.pl [xx   ]  plop2
Wed Dec 29 16:51:58 2004 plop.pl [xxx  ]  plop3
Wed Dec 29 16:51:58 2004 plop.pl [x    ]  plop6
Wed Dec 29 16:51:58 2004 plop.pl [xx   ]  plop7
Wed Dec 29 16:51:58 2004 plop.pl [xxx  ]  plop8
Wed Dec 29 16:51:58 2004 plop.pl [x    ]  plop11
Wed Dec 29 16:51:58 2004 plop.pl [xx   ]  plop12
Wed Dec 29 16:51:58 2004 plop.pl [xxx  ]  plop13
Wed Dec 29 16:51:58 2004 plop.pl [x    ]  plop16
Wed Dec 29 16:51:58 2004 plop.pl [xx   ]  plop17
Wed Dec 29 16:51:58 2004 plop.pl [xxx  ]  plop18
Wed Dec 29 16:51:58 2004 plop.pl [x    ]  plop21
Wed Dec 29 16:51:58 2004 plop.pl [xx   ]  plop22
Wed Dec 29 16:51:58 2004 plop.pl [xxx  ]  plop23
Wed Dec 29 16:51:58 2004 plop.pl [x    ]  plop26
Wed Dec 29 16:51:58 2004 plop.pl [xx   ]  plop27
Fait froid, dans ce process, non?
Wed Dec 29 16:51:58 2004 plop.pl [xxx  ]  plop28
Wed Dec 29 16:51:58 2004 plop.pl [x    ]  plop31
------------------ (snip) -------------------------

------------------ (snip) -------------------------
Wed Dec 29 16:51:58 2004 plop.pl [xx   ]  plop97
Wed Dec 29 16:51:58 2004 plop.pl [xxx  ]  plop98
Wed Dec 29 16:51:58 2004 plop.pl [x    ]  Groumpf... Oops!