CoralMUD-0.15/
CoralMUD-0.15/core/
CoralMUD-0.15/data/
CoralMUD-0.15/data/areas/
CoralMUD-0.15/data/help/
CoralMUD-0.15/data/players/
CoralMUD-0.15/lib/automap/
CoralMUD-0.15/lib/items/
DEBUG_MODE = true 


def get_time
  Time.now.ctime[4..15]
end

### adds an outputter to your definitions.
FileOutputter.new('logs_directory', {:filename=>("log/%8.8s.log" % get_time).gsub(/ /, '_')})

Logger.new('LOG').level = INFO
Logger.new 'CONSOLE' 

Logger['LOG'].outputters = Outputter['logs_directory'] ### This is everything but debug messages.  This should go to logs and imm channel.
Logger['CONSOLE'].outputters = Outputter['stdout'] ### only output to standard output.  Definitely not logs_directory.


# method to log strings.
# log(:info, "%s", "str to interpolate")
# log(:info, "string")
# log(:debug, "string")
def log(sym, str)
  msg = "#{get_time.gsub(/ /, '_')}: #{str}"
  # dump the message to all loggers.
  Logger['CONSOLE'].send(sym, msg) 
  Logger['LOG'].send(sym, msg)
  if sym == :info && $dplayer_list
    $dplayer_list.each do |ch|
      if ch.level >= LEVEL_IMM
        ch.text_to_player msg +  ENDL
      end
    end
  end
end



# logs exceptions and backtrace.
def log_exception(e, sym=:error)
  ar = [e.message]  
  ar = ar + e.backtrace
  ar.each do |element|
    Logger['LOG'].send(sym, element)
    Logger['CONSOLE'].send(sym, element)
  end
  if sym == :info && $dplayer_list
    $dplayer_list.each do |ch|
      if ch.level >= LEVEL_IMM
        ar.each do |element|
          ch.text_to_player element + ENDL
        end
      end
    end
  end
end

if DEBUG_MODE == true
  log(:debug, "Debugging is turned on.  Debug logs are NOT saved. They only appear here. (In STDOUT.)")
end