CHANGELOG ---------------------- [2015-08-18] [2015-07-21] * perltidy * Perltidy [2015-06-17] * Remove 'NOT REACHED' comments [2014-11-30] [2014-11-07] * Reformat using new perltidy settings [2014-06-04] * Ignore files generated by tagging programs * Allow wait-time for emails to be configurable * Improve array iteration performance [2014-01-18] * Regen * Update email address [2014-01-15] * Set return value as appropriate in validation routines * Document what BEGIN block does [2013-12-21] * Document Email Address Validation * Comment methods with early return of control [2013-12-20] * Close out CAVEAT task * Minor punctuation nit * Add CAVEATS section about Email Validation modules * Be sure to clear out $@ in BEGIN loop * Update TODO items to reflect Email work * Add support for Email::Valid * Remove Mail::RFC822::Address checks * Give validation methods object oriented goodness * Dynamically load Mail::RFC822::Address module * Add TODO item for flexible usage of Mail::RFC822::Address [2013-09-19] * Bump version to 0.64 [2013-09-17] [2013-09-16] * Correct potential race condition when closing file handle * Close out leftover file task * Add TODO about file spewage [2013-09-12] * Optimize fileHandle() method [2013-04-30] * Clean up some commentary [2013-04-16] * Close temporary filehandle before checking for assoc. file * Close out TEMP environment variable task * Use the TEMP environmental variable to get temporary file path * Add TODO to use TEMP Environmental variable * Bump version to 0.63 [2013-04-15] [2013-04-12] * Properly call mail(1) when using Debian GNU/Linux * Properly call mail(1) when using OpenBSD [2013-02-10] * Remove redundant ABSTRACT_FROM * Correct bullet in item line [2013-02-09] * Use preferred representation for mail body time stamp * Log::Fine now requires Perl v5.8.3 * Minor verbiage to avoid potential confusion [2013-02-08] * Use File::Temp::mkstemp() to create temporary file [2013-01-13] * Use File::Temp::mkstemp() to create temporary file * Switch to using tmpnam() from File::Temp [2013-01-03] * Bump version to 0.62 * Remove Revision ID Information * Revert "Remove Sys::Syslog as a requirement" [2012-12-29] * Bump version to 0.61 * Make tests compatible with Email::Sender version >= 0.120000 * Remove Try::Tiny from recommendations * Use try_to_sendmail() method for Email delivery [2012-10-17] [2012-08-25] * Switch from using "~" to delimit fixed-width text to "=" * Initial revision of quick-n-dirty ChangeLog generation script [2012-07-16] * Close out tasks [2012-07-04] [2012-07-03] * Do not forget to bump copyright year in necessary files * Document {err_callback} * Add unit tests for {err_callback} functionality [2012-06-29] * Add callback functionality for _error() * Call _error() if we are unable to close the file handle * Code and comment clean-ups * Close out Sys::Syslog and MIME::Lite tasks * Capture potentially fatal errors * Add the following TODO items: * Do not call Sys::Syslog::closelog() on destruction * Be consistent with file handle validation * Make sure Log() has a valid logging object * Make testing messages consistent * Reference Sys::Syslog macros explicitly * Cancel internal logging method * Remove Sys::Syslog as a requirement * Reference VALTOLVL_MAP values from LVLTOVAL_MAP * Update misleading DESCRIPTION * Add and close null handle creation task * Cancel enable/disable task * Initial entry of Null Handle * Correct bug reporting email address * _error() if we are unable to close file handle * Close out TODO items * Add additional sanity checks * registerHandle() can now accept array refs * Add new method _error() * Remove requirement for Test::Output * Update TODO list for LOGFINE-0-61 * Remove older closed TODO items * Brainstorm ideas for v0.61 * Use the mailx(1) command for grabbing headers under solaris * Recommend Try::Tiny v0.11 * Set object's {_err_str} when _fatal() is called * Clean up msgWrite() logic * Add blib and pm_to_blib to list of ignored items * {header_to} option can now be either a string or an array ref * Add new subclassing TODO item [2011-12-24] [2011-12-15] * Bump version * Only save STDERR on newer versions of perl [2011-12-08] * Update skip message to reflect reality * getgrgid() works under cygwin * Correct instance of vivification * Save and restore original STDERR * Make sure the Log::Fine::Handle::File filehandle is closed [2011-12-02] * Use $ENV{GID} and $ENV{EGID} under cygwin * Check for absolute path under MSWin32 * Reduce spewage by checking $ENV{EGID} and $ENV{GID} * Oversight * Bump version * Regen [2011-12-01] * Sync documentation w/ reality * Replace croak with confess when calling ->_fatal() * Close out template tasks * Clean up function, variable names * Redirect stderr to the bitbucket for bad custom template unit test * Add rename method task * Update custom placeholder tasks * Check for duplicate custom placeholders * Add another TODO item for storing placeholder keys * Add key collision TODO [2011-11-28] * Just use {file} if {dir} is not defined [2011-11-22] * Bump copyright * Log::Fine::Handle::File can now accept a file name with absolute path * perltidy * Stress test custom placeholder functionality * Correct copyright * Be more consistent with variable names [2011-11-16] * Close out custom template TODO * Update documentation * s/custom_templates/custom_placeholders/ * Add support for custom placeholders * Function refs must be set sans () * Lose redundant code block [2011-11-03] * Fill out details * Brainstorm custom template macros * Post-pend function names with () [2011-11-02] * Bump Copyright [2011-10-31] [2011-10-30] * Bump version * Regen [2011-10-28] * Make note that envelope is optional * Note perl 5.8.3 requirement [2011-10-25] * Make sure Handle object supports bitmaskListEnabled() * Update log mask TODO item * Add new method, Log::Fine::Handle->bitmaskListEnabled() * Add TODO item about bitmaskListEnabled() * Bump copyright * Complete Timestamp TODO * Log::Fine::Handle::File::Timestamp now properly rotates files * Add TODO item about timestamped files [2011-10-24] * Bump version * Skip tests if run under MSWin32 or Cygwin * Skip tests if run under MSWin32 or Cygwin * Skip tests if run under MSWin32 or Cygwin * Recommend Throwable * Add new handle, Log::Fine::Handle::Email * Sync SYNOPSIS with reality * Move isLoggable() regression tests to Log::Fine::Level::* tests [2011-10-19] * Add RCS-style keyword [2011-09-29] [2011-08-04] * Optimize methods for speed [2011-07-22] * Bump version * Bump version [2011-07-12] * When getting the group IDs, be sure to use the FIRST value returned * Grammar [2011-07-06] [2011-05-18] * Use ref to determine object type [2011-03-28] * Bump version * Auditing for documentation correctness * Update tasks * perltidy * Switch to Test::More [2011-03-19] * Add POD readme branch TODO * Add TODO for unit tests * Provide name() example usage * Initial entry of README.pod [2011-03-18] * Bump version * Add unit tests for non-default syslog facilities * Cancel todo * Log::Fine::_fatal() will croak if called directly * Close out name() task * Test $obj->name() * Add more unit tests * perltidy * Update with LOG-UTIL-LOGTRACKING changes * Remove GetLogName() * Implement Log::Fine::Utils::CurrentLogger() * Add {no_croak} option to list of parameters accepted by OpenLog() [2011-03-11] * Store pointer to current logger * Further brainstorming * Implement Log::Fine->name() * Brainstorming * Documentation consistency nit * Elaborate GetLogName() TODO * Add TODO for GetLogName() * Properly match date string when LC_TIME is set to de_DE.utf8 [2011-02-25] * Document GetLogName() * Add tests for GetLogName() * Add new function, GetLogName() * Comment out unused Data::Dumper module [2011-02-08] [2011-02-07] * Bump version * Log::Fine::Utils now supports multiple loggers * Bump version [2011-02-06] * Expand RCS keywords in Makefile.PL [2011-02-05] [2011-02-02] * Just require Sys::Syslog 0.13 * No longer need META.yml since it's auto-generated for us * Let Makefile.PL generate an appropriate META.yml file [2011-01-30] * Regen * Add installation instructions [2011-01-11] * Minor formatting tweaks [2011-01-10] * Bump version * Close out multi-logger task [2011-01-09] * Update * Regen * perltidy * Code optimizations [2011-01-08] * Document new multi-logger functionality * Make POD documentation more consistent with perlmodstyle(1) * Clean up code * Store copy of Log::Fine object [2011-01-07] * Make sure filehandle is open * Update TODO with Utils task information * Initial stab at having Utils support multiple loggers [2011-01-06] * Add support for listing defined logger objects * Brainstorm additional ideas * Ignore files generated by perltidy and 'make clean' * Add support for variable-precision high-resolution timestamps * Properly handle space at beginning of line caused by certain locales * Bump Version * Bump Version [2011-01-03] * Bump Version [2011-01-02] * Happy New Years! Bump copyright year as appropriate * Correct invocation to _fatal() * Add some thoughts on extending Utils * Clarify _fatal() documentation [2010-12-31] * Spacing * Use _fatal() for croaking [2010-12-28] * Bump version * Decided against switching to Module::Build so cancel TODO * Close out Formatter template class TODO * Optimize how $skip is set * Do not call $self->_placeHolders($tmpl) unless we need to * perltidy * s/{_used_placeholders}/{_placeholders}/g * Relocate placeholder generation to separate getter/setter [2010-12-21] [2010-12-16] * Minor: consistency nit * Merge branches 'master' and 'master' of https://github.com/cfuhrman/log-fine [2010-12-15] * Refresh * Stop the unit test from lying to syslog [2010-12-12] [2010-12-11] * Bump version * Correct instance where incorrect stack frame was logged * Correct instance where incorrect stack frame was logged * When subroutine name cannot be determined, assume main() * Add additional tests * Add debuggery in case I need it * When subroutine name cannot be determined, assume main() * Add additional tests * Correct incorrect stack frame logging issue * Correct incorrect stack frame logging issue [2010-12-07] * Comment verbiage * Further Optimizations [2010-12-04] [2010-12-03] * First attempt to optimize Template.pm * Update [2010-12-02] * Bump version * Close out stress test script TODO [2010-12-01] * Add note about support for log format templates * Ship stresslog.pl * Expand *.pl files * Initial entry * Add format() example [2010-11-28] * Add MICROSOFT WINDOWS CAVEATS section * Closed out formatter tests TODO * Place L::F::F::Template tests into separate file * Add TODO about breaking up 04-formatter.t tests * Overcome MSWin32 strftime(3) deficiencies * MSWin32 does not support getgrgid() or getpwuid() [2010-11-27] * Update * Match documentation w/ reality * Verbiage * Bump version [2010-11-26] * Regen * Final TODO item about speed * Add note about speed * %%millis%% placeholder is now case-insensitive * s/_fullhost/_fullHost/ [2010-11-25] * Reference getter/setters as methods * Close out some TODO elements * Update with TODO items * Test combination string and lower-case placeholders * More notes * Make POD documentation more assertive * Brainstorming * Correct SYNOPSIS * Oops! Add support for filename and line number * Update POD documentation * Update with new Template class * Update * Initial entry [2010-11-24] [2010-11-23] * Regen * Add Login and Group * Initial ideas for template options * Update TODO entries * Switch TODO file to use org-mode * Add $VERSION * Add CONTRIBUTING section * Add note about template class * Bump version * perltidy * Make sure user can define one and _only_ one L::F::H::S object * Revert "Do not call closelog() if this is perl 5.8.9" * Revert "Add CAVEATS" * Revert "Clarify CAVEATS" * Bump version * Clarify CAVEATS * Add CAVEATS * Do not call closelog() if this is perl 5.8.9 * Use different ident when testing multiple handles [2010-11-21] * Bump version * Lose RCS-style keywords * Log failed line * Revert "Add rcs-keyword attribute to TODO" * Add rcs-keyword attribute to TODO * Initial entry * Remind myself to tell the world about git * Bump version [2010-11-17] * Use a facility that is supported by older versions of perl [2010-10-02] * Bump version * Correct typo * Add README * regen * Revert "Remove Revision Information" * Revert "Remove Revision Information" * Initial entry * Commenting & Documentation clean-up [2010-09-21] [2010-08-30] * Add missing perl modules to test * Add missing Log::Fine modules * Remove redundant check * Add some anti-test-report logic * Tell Emacs what to do with itself * Explicitly require Sys::Syslog 0.13 [2010-08-29] [2010-08-28] * _fatal() has been documented [2010-07-05] * Refresh * Remove Revision Information * Remove Revision Information * Bump version [2010-05-10] * Clean up comments where appropriate [2010-05-09] * Optimize code where appropriate * Mollify Perl::Critic [2010-05-08] * perltidy * Add support for {autoclose} * Document constructor arguments * Explicitly set {autoflush} to 0 unless it is already defined. * Sync * More verbiage * Verbiage * Minor cleanups [2010-04-19] * Document _fatal() [2010-04-09] * Improve documentation where applicable [2010-04-05] * use, don't require Log::Fine::Logger * Commenting * Replace getter/setter functions with single function * Set svn:ignore on sub-directories [2010-03-15] [2010-03-12] * Bump version [2010-03-10] * Revert -r221 * Test multiple locales [2010-03-06] * Modify regex to handle non-English month representations found in other locales. This commit addresses the following CPAN Reports: * Initial shot at supporting Chinese * Branch to address the following: [2010-03-03] * Remind myself to tag new release based on $Log::Fine::VERSION * Bump version and update Changes [2010-01-03] * Add new formatter, Syslog * Refer to LOG_TIMESTAMP_FORMAT* via object [2010-01-01] * Add README for changes found in v0.30 * Style changes * _formatTime() replaces _getFmtTime() * Update documentation to match reality * Add 0.30 Changes * Regen based on r200 of Fine.pm * Happy New Years! Bump copyright year as appropriate * Bump version * Add support for configurable levelmaps when using Utils.pm * Use a single private getter/setter, _logger * perltidy before merge to trunk * Revert -r150:148 [2009-12-31] * Make sure methods are declared in alphabetical order. * Update * Use bullet points as appropriate * Update documentation * Replace getSkip() with skip() * Replace getFileHandle() with fileHandle() * Replace setFormatter() with formatter() * Replace setTimestamp() and getTimestamp() with timeStamp(). [2009-12-30] * Add support for java.util.logging levels * Add Levels classes and associated unit tests to manifest * perltidy * Add some negative tests * Add some fine-grained validity checking to Logger. Also, clean up error message in Formatter.pm * We skip 2 tests, not 3 if Test::Output isn't installed * Test Error handling * Add secret option "no_croak". I need to document this. * Use Test::Output for trapping error messages * Elaborate on error messages * Add new method, Log::Fine::_fatal() for handling error situations. Note that this can be overridden. [2009-12-15] * Optimize logLevels() * logMasks() now returns masks in ascending order by mask value * Branch for development of better error handling * Fix Utils.pm which now passes unit tests. While here, do some other touch-ups. * perltidy * Port comprehensive testing from ^/branches/LOGCONFIG branch [2009-09-29] [2009-09-28] * Switch to new API (s/getLogger/logger/g) * Make Log::Fine::Levels compatible. [2009-09-22] * Add support for new Log::Fine::Levels to Log::Fine::Handle. While here: [2009-09-17] * Add new method, bitmaskAll() for returning a mask with all possible values enabled * Make the following changes to Log::Fine: * Add Log::Fine::Levels* to tests [2009-09-16] * Remove support for clone, which isn't really needed * Mention that this class is the default for Log::Fine::Levels * Possible TODO: Tutorial for extending Levels class * Fill in SYNOPSIS and DESCRIPTION of pod documentation [2009-09-09] [2009-09-08] * Fill in POD documentation for Syslog module [2009-09-03] * Log::Fine::Levels::Syslog will now export log levels and log masks via Exporter/AutoLoader * Fix tyop * Set levels when initializing any Log::Fine based class. Use new Levels class where applicable. Add new API, getLevels, for getting the stored Levels object [2009-08-17] * Correctly match revision number. Also fix spacing * Use subversion revision for version number * Initial entry of Levels class and associated Syslog class Also added unit test * Directory for holding level definitions * Branch for development of configurable log levels [2009-02-06] * Add ideas about levels and callback. [2009-02-05] * Add 10-hires test to manifest. * Optmize high-resolution time calculation [2009-02-04] * Minor formatting change * Remind myself to regenerate README when making a release. * Update to latest wish list * regen * Bump version and copyright date in Fine.pm * Bump copyright date * Update documentation to include information about high-resolution timestamps. [2008-12-13] * perltidy * Add support for fine-grained logging via the Time::HiRes module. Also add associated test to make sure things work okay. [2008-12-12] * Update date * Oops. Forgot to include Carp! * Add error checking to Log() and OpenLog(). Also include CAVEATS section. [2008-12-09] [2008-12-08] * Mention Log::Fine::Utils. [2008-08-26] * Fix tyop * Bump version to 0.21 * perltidy * Add new module, Log::Fine::Utils which provides a functional interface to Log::Fine. Also add associated test file and update manifest. [2008-07-23] * Don't forget to test Log::Fine::Handle::File::Timestamp. Reorder testing of modules while we're here. * Add item for loadable log levels [2008-07-05] * Avoid redundant testing * Be more intelligent about testing mask combinations. Not completely comprehesive, but getting there. [2008-07-04] * Maybe switch to Module::Build? * We can just use Test::Simple for handle tests * Bump version * Make sure we only use Sys::Syslog when we need to * Updated to include bitmask testing * Welcome to 0.20 * Implemented * Add test to make sure we don't log when we're not supposed to. This brings the total number of tests for this file to 132. * Handles do not need {level} attribute anymore. Remove from tests while we're at it. * Properly test mask combinations [2008-07-02] * Update for version 0.15 * Welcome to version 0.15 * Add TODO and include in Manifest * Do bitmasking properly. [2008-06-30] [2008-06-07] * Optimize how we grab the class name in _init() [2008-06-06] * Update changelog [2008-06-03] * regen * Welcome to 0.14 * Set continuation indentation to 4 per http://www.openbsd.org/cgi-bin/man.cgi?query=style&apropos=0&sektion=0&manpath=OpenBSD+4.3&arch=i386&format=html * Grammar fix ;) [2008-05-27] [2008-05-26] * Welcome to 0.13! * Addition of Checklist for when I make commits * Bump version to reflect minor fixes * Version 0.12 * Bump version * Require version 0.13 of Sys::Syslog. Apparently older versions did not export tags we need. [2008-05-25] * Update META information to match reality. Also bump version * Final perltidy before release * Make sure Chris Josephs is also mentioned. * Bump version before release [2008-05-24] * Effective immediately, Log::Fine is distributed under the 2-clause BSD license. [2008-05-23] * Link clean-up * Clean up POD for HTML format [2008-05-22] * Welcome to 0.05 * regen * Proof-read POD documentation. Clean-ups and elaborations where necessary. * regen * Audit POD documentation [2008-05-21] * regen * We are now at version 0.04 * Add API for adjusting the timestamp within log messages. Also add a sanity check for Formatter->format(). * Give inspirational credit as appropriate. Also update documentation here and there. * Lose redundant logger test * Reference file handle directly in test to avoid confusion. * Fix context leak ;) [2008-05-20] * Skip tests if Test::Output isn't installed * Use Test::Output to validate printing to STDERR & STDOUT * Lose some redundant POD documentation that slipped in. * Fix small case of context leaking ;) * Replace lib/Log/Fine/Handle/Test.pm with ../String.pm and update references as appropriate * Make sure that a logger object's name doesn't include any funky characters * Elaborate on cloning [2008-05-16] * Add cloning capabilities. * Oops. s/output/console/ * Bump version * Add two new shorthand masks: LOGMASK_ALL (for all log masks) and LOGMASK_ERROR (for LOGMASK_ERR and below). * Per suggestion from Dan, rename Output.pm to Console.pm and update references accordingly. * Add api for adjusting log skip. Also renamed {skip} to {_skip} indicating that it's a value that shouldn't be touched. [2008-05-15] * Make sure we store any new Logger object that's created. Various pod and code clean-ups while I'm here. [2008-05-10] [2008-05-09] * Add some tests for both log levels and masks. [2008-05-08] * Bump version * All good boys clean up after themselves! * Blank meta file so 'make dist' works * Initial entry of Log::Fine::Handle::File::Timestamp and associated unit test. [2008-05-07] * Lose $VERSION. Also add SEE ALSO section * Revert -r12. Test.pm needed to pass 'make test' * Log::Fine::Handle::Test is no longer necessary. Removing. * Lose $VERSION which is only necessary in Fine.pm * Clean up POD documentation * new objects now take a regular hash rather than a hash ref. * Replace all instances of BSDLog with Fine as appropriate. * Move BSDLog.pm and friends to Fine to reflect the name of this module: Log::Fine * The great massive perltidy into KNF! * Set svn:keywords as appropriate * Initial import of Log::BSDLog * New repository setup