Я бы хотел использовать регистратор Руби в приложениях командной строки; это бьет puts
и имеет хорошую гибкость для регистрации вещей.
Единственное, что мне хотелось бы, - это иметь возможность, чтобы сообщения об ошибках / фатальных ошибках переходили к стандартной ошибке (как обычно) в дополнение туда, где сконфигурированы сообщения регистратора.
logger = Logger.new(some_file)
logger.debug("This goes to some_file, if debug is set")
logger.info("This goes to some_file, if info is set")
logger.error("This goes to some_file, AND stderr")
Один из способов сделать это - взломать formatter
:
logger.formatter = Proc.new do |severity,time,progname,msg|
message = format_message(severity,time,progname,msg)
if severity == ERROR
$stderr.puts message
end
message
end
Это кажется хакерским. Другим способом может быть создание Logger
, который передает свои вызовы основному реальному регистратору, но перехватывая сообщения об ошибках.
Кто-нибудь делал это, и, может быть, что-то уже делает это?