I don't get why people think Log::Log4perl is a module is to "conditionally appending a single line of text to a file". If you think so, you completely miss the point of Log::Log4perl. What about having fatal errors sent to your email? Log something to SNMP or Windows Event Log? Configure your few-hundred-module project logging using just one file? Log::Log4perl can easily handle all that stuff. Your precious "open && print && close"? I doubt so. And yes, Log::Message cannot handle these things either.
Log4j was introduced to the world as a great example of how to over-engineer a very trivial problem. This module has brought that same level of needless complexity to perl. In a nutshell, this module uses 1.3MB of code to accomplish the most common usage scenario: conditionally appending a single line of text to a file. Additionally, the construction process can be needlessly complicated.
It's a very mature and an excellent logging framework. However, some of the common minor complaints are: 1) It's too complex. I agree: it should not be this hard to get started. 2) Configuration is too verbose. Agreed: but well, what can you do, most things from Java is a bit overengineered and verbose anyway. At least you can do almost anything with the configuration. 3) It's not very Perlish. Also agreed. 4) Performance. My note: speed is not an issue in majority of the cases and Log4perl's performance is adequate for most of the rest of the cases. For faster/leaner alternatives you might want to take a look at Log::Fast, but a lot of Log4perl's features are missing.
One of the main strengths of Log4perl is its sublogger/subcategory feature, which few other frameworks seem to have.
For other alternatives, also take a look at: Log::Handler, Log::Any. And of course Log::Message too.
Side rant: Cpanratings *really* needs a comments option.
Anyway, in relation to the previous review. I think the main point of Log::Log4perl is that it is similar to Log4j which many people are familiar with from Java.
In that respect it is different from Log::Message.
Also, the initial version of Log::Log4perl is from June 2002 which predates Log::Message by about a year.
And finally, Log::Message is only core since Perl 5.9.5, circa July 2007.
There is already Log-Message in core, it is actually pretty similar in scope and functionality to Log-Log4perl (no wheels reinvented here)
One of the best modules on CPAN! Very well-documented, easy to use, yet powerful and flexible. IMO, it should be included in future Perl distros as logging is simply a crucial part of any serious software application.
Powerful, extensible, well documented. Responsive maintainer. An indispensable piece in the perl toolbox.
little hard to figure out but once you do, logging becomes very standard/easy
Intuitive, simple to impliment, easy to override, hidden depths of power and flexability, wrapped up in a clear and well-documented object model.
You can get up and running in seconds, but know that because of the module's rich feature set and built-in extensibility, your application will probably not outgrow this module.
Logging to the screen, logging to a filehandle, logging to files, appending to files, in any number of formats: the built-in sprintf functionality of pattern layout means that log files become legible and almost pleasurable!
Logging can be performed at different levels (as in Apache logging), optionally with different actions set up for each level. Logging can be turned on, off or restricted to specific packages or to errors above or below a specific level, through adjustment of either a configuration file or Perl value. And wonders of wonders, it is simple to configure different logging levels for different Perl namespaces.
Plus logging to a simple callback for database inserts.
And what's more, the author is very helpful.
A rare 10/10: a module that makes me unusually proud to program in Perl.
Found this module very useful. Particularly like:
a) being able to put errors, warnings, debug etc in different files
b) ability to turn logging on and off without changing my code
This is an excellent package, BUT... it's a lot of work to set up the configuration for it. There's a fair bit of documentation to read to figure it out.
For a system of applications which use shared configuration information, this is worth using because a sysadmin can update logging information without touching source code--one can control what subsystems at a set level of granularity are logged (and to where).
But for most cases, I think using a simpler package such as Log::Dispatch will suffice. (It's the basis for Log::Log4perl anyway.) One can easily upgrade from Log::Dispatch to Log4perl if requirements become more complicated.
This module is a flexible framework that deserves the name: it does not unduly impose any particular style of use on you, and makes it very easy to do trivial things. The API scales easily and seamlessly from 10-liners to 100,000 LOC projects.
An indispensable tool.
Great logging solution for those times you need all the bells and whistles.
Excellent module. Perfect for any and all logging requirements when used in conjunction with Log::Dispatch. Great documentation.
An excellent, sophisticated logging package with a good pedigree, being based off the widely used Log4j java logging package. The only minor problem is the documentation, which is huge and can be slightly confusing. Nevertheless, an essential module for large scale application development.
1 hidden unhelpful review