class Daemons::Application
def exception_log
(if it is connected) and to a log file in the pid-file directory.
This function searches for all exceptions in memory and outputs them to STDERR
thread.
one cannot catch exceptions that are thrown in threads other than the main
it may be difficult to find out where the exception came from because
In case a multi-threaded ruby script exits due to an uncaught exception
This is a nice little function for debugging purposes:
def exception_log return unless logfile require 'logger' l_file = Logger.new(logfile) # the code below finds the last exception e = nil ObjectSpace.each_object {|o| if ::Exception === o e = o end } l_file.info "*** below you find the most recent exception thrown, this will be likely (but not certainly) the exception that made the application exit abnormally ***" l_file.error e l_file.info "*** below you find all exception objects found in memory, some of them may have been thrown in your application, others may just be in memory because they are standard exceptions ***" # this code logs every exception found in memory ObjectSpace.each_object {|o| if ::Exception === o l_file.error o end } l_file.close end