Deviations from stdlib logging

Updated Nov 11, 2025
  • No shorthand methods (info, debug, warning, …) or LoggerAdapter.
  • log() returns the formatted string instead of None, and there is no Logger.isEnabledFor() helper.
  • Records lack extra, exc_info, stack_info, and stack introspection.
  • Handlers expect handle(logger, level, message) rather than emit(LogRecord) and run on dedicated worker threads, so Python logging.Handler subclasses cannot be reused.
  • The dictConfig schema lacks incremental updates, filters, handler levels, and formatter attachment. fileConfig is likewise cut down.
  • Queue capacity is capped (1 024 per logger/handler). The stdlib blocks the emitting thread; femtologging drops records and emits warnings instead.
  • Formatting styles (%, {}, $) are not implemented. Provide the final string yourself, or supply a callable formatter per handler.
  • The logging manager is separate from logging’s global state. Mixing both systems in the same process is unsupported.