# -*- mode: org -*-

#+TODO: TODO BLOCKED | DONE CANCELED

* TODO [#C] Switch to Module::Build

  Unsure if I want to do this or not.  Still need to weigh the
  benefits to doing this

* TODO [#B] Have Utils handle more than one Logger

  Currently L::F::U can handle only one Logger.  Extend API to allow
  for multiple logging objects

* CANCELED [#C] Add tutorial for defining Level sub-classes
  CLOSED: [2010-11-24 Wed 11:54]
  - CLOSING NOTE [2010-11-24 Wed 11:55] \\
    In the rare instances where someone would want to define their own
    level classes, people should be able to figure out the API simply by
    looking at either Syslog or Java subclasses as examples.

* DONE [#A] Document git repository
  CLOSED: [2010-11-24 Wed 11:52]
  - CLOSING NOTE [2010-11-24 Wed 11:53] \\
    See [[https://github.com/cfuhrman/log-fine/commit/26dee0df99b40f315a1ad7ba336e913391b9724e][log-fine/26dee0f]]

  Add note about the new git repository

* TODO [#B] Add Formatter Template class

  Add a template class to allow the user to easily build log message
  templates.  Perhaps use message layout options from [[http://search.cpan.org/dist/Log-Handler/lib/Log/Handler.pm][Log::Handler]]?

** Available options

   | %%TIME%%      | Timestamp            |
   | %%LEVEL%%     | Log Level            |
   | %%MSG%%       | Log Message          |
   | %%PACKAGE%%   | Caller Package       |
   | %%FILENAME%%  | Caller filename      |
   | %%LINENO%%    | Caller line number   |
   | %%SUBROUT%%   | Caller Subroutine    |
   | %%HOSTSHORT%% | Short Hostname       |
   | %%HOSTLONG%%  | Long (FQDN) Hostname |
   | %%LOGIN%%     | User Login           |
   | %%GROUP%%     | User Group           |

*** DONE Document POD
    CLOSED: [2010-11-25 Thu 20:53]
    - CLOSING NOTE [2010-11-25 Thu 20:53] \\
      Documented

*** DONE Think about {use_real_user_id} name
    CLOSED: [2010-11-26 Fri 11:24]
    - CLOSING NOTE [2010-11-26 Fri 11:24] \\
      See [[https://github.com/cfuhrman/log-fine/commit/c101f8a62b032ed7bfae0f9f3ec39d72b435191a][log-fine/c101f8a]]

    This option might be confusing to the casual programmer.  Perhaps
    having a {use_effective_id} attribute would be better?

    Some ideas:

     - Do not cache user & group when {use_effective_id} is set?

     - Add {no_cache} option to constructor

     - Dynamically enable/disable Caching via API?

     - Use global static storage of user & group?

     - Use global static storage of filename and hostname?  These
       aren't as likely to change so global static storage might be a
       better idea

    [2010-11-26 Fri 11:23] Decided to keep attributes as hash keys.  I
    did switch to using {use_effective_id}.

*** DONE Create _filename method
    CLOSED: [2010-11-26 Fri 11:22]

    The name of the program isn't likely to change so cache it.  Maybe
    make this a global static?

*** DONE Make note that placeholders are case-insensitive
    CLOSED: [2010-11-26 Fri 11:22]
    - CLOSING NOTE [2010-11-26 Fri 11:22] \\
      See [[https://github.com/cfuhrman/log-fine/commit/c101f8a62b032ed7bfae0f9f3ec39d72b435191a][log-fine/c101f8a]]

*** TODO Optimize Template.pm

    Template.pm works although it may be a little on the slow side.
    Attempt to optimize.

    While I'm thinking about it, come up with some stress tests so I
    can get some hard figures

**** DONE Create stress test script
     CLOSED: [2010-12-02 Thu 22:37]
     - CLOSING NOTE [2010-12-02 Thu 22:38] \\
       See [[https://github.com/cfuhrman/log-fine/commit/1ed98bbfc896213aeda27ea2b1f14b33a13e92f1][log-fine/1ed98bbf]]

     Create stress script to get some hard figures on how fast
     Log::Fine can output messages.

* DONE Break up 04-formatter.t tests
  CLOSED: [2010-12-01 Wed 12:12]
  - CLOSING NOTE [2010-12-01 Wed 12:13] \\
    Done.  See [[https://github.com/cfuhrman/log-fine/commit/2c14f64d436513c8af2191a061bf571c93a02067][log-fine/2c14f64]]

  04-formatter.t has two skipped sections which probably doesn't jive
  well.  Break up 04-formatter.t tests into 2 separate test chunks.
  Perhaps an 0x-formatter-template.t file
