Ответ 1
Если вы посмотрите на источник класса BufferedLogger в ActiveSupport, вы увидите, что вторым аргументом является "progname". Это используется только тогда, когда первый аргумент равен nil, и вы либо не дали ему никакого блока, либо блок возвращали неверное значение.
По сути, вы не можете использовать второй параметр для вывода дополнительных материалов.
Что вы хотите сделать, это нечто более похожее на:
begin
raise
rescue => e
logger.error e.message
logger.error e.backtrace.join("\n")
end
В зависимости от того, как у вас установлена настройка ведения журнала, может быть лучше выполнить итерацию по каждой строке обратной линии и распечатать ее отдельно, поскольку определенные журналы не выводят символы новой строки, и в этом случае вы сделаете что-то вроде:
begin
raise
rescue => e
logger.error e.message
e.backtrace.each { |line| logger.error line }
end