class SemanticLogger::Base
def backtrace(thread: Thread.current,
def backtrace(thread: Thread.current, level: :warn, message: "Backtrace:", payload: nil, metric: nil, metric_amount: nil) log = Log.new(name, level) return false unless meets_log_level?(log) backtrace = if thread == Thread.current Utils.extract_backtrace(caller) else log.thread_name = thread.name log.tags = (thread[:semantic_logger_tags] || []).clone log.named_tags = (thread[:semantic_logger_named_tags] || {}).clone thread.backtrace end # TODO: Keep backtrace instead of transforming into a text message at this point # Maybe log_backtrace: true if backtrace message += "\n" message << backtrace.join("\n") end if log.assign(message: message, backtrace: backtrace, payload: payload, metric: metric, metric_amount: metric_amount) && !filtered?(log) self.log(log) else false end end