tmud-3.0.0/benchmark/
tmud-3.0.0/cmd/
tmud-3.0.0/cmd/objects/
tmud-3.0.0/cmd/tiny/
tmud-3.0.0/doc/SQLite/
tmud-3.0.0/doc/SQLite3/
tmud-3.0.0/doc/TernaryTrie/
tmud-3.0.0/farts/
tmud-3.0.0/lib/
tmud-3.0.0/lib/engine/
tmud-3.0.0/lib/farts/
tmud-3.0.0/logs/
#
# file::    log.rb
# author::  Jon A. Lambert
# version:: 2.8.0
# date::    01/19/2006
#
# This source code copyright (C) 2005, 2006 by Jon A. Lambert
# All rights reserved.
#
# Released under the terms of the TeensyMUD Public License
# See LICENSE file for additional information.
#
$:.unshift "lib" if !$:.include? "lib"
$:.unshift "vendor" if !$:.include? "vendor"

require 'singleton'
require 'log4r'
require 'utility/configuration'

# The Log class is a singleton that handles logging at the class level
#
class Log
  include Singleton
  include Log4r
  configuration

  # Load logger configuration
  def initialize
    Logger['global'].level = DEBUG
    fmt = PatternFormatter.new(:pattern => "%d [%5l] (%c) %M",
                               :date_pattern => "%y-%m-%d %H:%M:%S")
    StderrOutputter.new('stderr', :level => INFO, :formatter => fmt)
    FileOutputter.new('server', :level => DEBUG, :formatter => fmt,
         :filename => options['logfile'] || 'logs/server.log' ,
         :trunc => 'false')
  end

  # Access a logger class
  # [+logname+]  The name of the logger
  # [+loglevel+] the level of logging to do
  def loginit(logname, loglevel, logto)
    Logger.new(logname, Log4r.const_get(loglevel)).outputters = logto
    Logger[logname]
  end

end

class Module

# logger defines a named log and log method for the class
#
# [+loglevel+] the level of logging to do
  def logger(loglevel='DEBUG', logto=['stderr','server'])
    class_eval <<-EOD
      @log = Log.instance.loginit(self.name, "#{loglevel}", #{logto.inspect})
      def log
        self.class.instance_variable_get :@log
      end
    EOD
  end
end