We've added this function as `log-max-level'. (Also, I tried to fix the instructions in "schminc.h".)
At Thu, 16 Feb 2012 14:53:33 +0100, Tobias Hammer wrote: > Hi, > > i have to synchronize the log levels of a racket logger and an external > logging > system. Therefore i need the information what the highest logging level of > a > logger is to already discard any messages in the external system that have > no > receiver. > Because there is, as far as i know, no possibility to get a notification > whenever > the internal accepted level changes i have to synchronize pretty often. > This is > currently only possible by cycling through all levels and check via > log-level? > which is cumbersome and, at least for my needs, too slow. > Would it be possible to add a function that returns the current maximum > level of > a logger? The needed information is already stored in > Scheme_Logger::want_level > but there is no accessor. The following addition (excl. function > registration) > to error.c would do the job: > > static Scheme_Object * > max_log_level(int argc, Scheme_Object *argv[]) > { > Scheme_Logger *logger; > Scheme_Object *result; > > if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_logger_type)) > scheme_wrong_type("max-log-level", "logger", 0, argc, argv); > logger = (Scheme_Logger *)argv[0]; > > if (logger->local_timestamp < *logger->timestamp) > update_want_level(logger); > > switch (logger->want_level) > { > case SCHEME_LOG_FATAL: result = fatal_symbol; break; > case SCHEME_LOG_ERROR: result = error_symbol; break; > case SCHEME_LOG_WARNING: result = warning_symbol; break; > case SCHEME_LOG_INFO: result = info_symbol; break; > case SCHEME_LOG_DEBUG: result = debug_symbol; break; > default: result = scheme_false; > } > > return result; > } > > (No patch because i completely messed up with compiled startup and > expected primitive > count, even after following instructions in schminc.h :( ) > > Tobias _________________________ Racket Developers list: http://lists.racket-lang.org/dev