Using Recall for logging in Ruby
BrainzLab::Recall.info("User signed up") BrainzLab::Recall.debug("Cache hit", key: "user:123") BrainzLab::Recall.warn("Rate limit approaching", current: 95) BrainzLab::Recall.error("Payment failed", error: e.message) BrainzLab::Recall.fatal("Database connection lost")
BrainzLab::Recall.info("Order placed", order: { id: order.id, total: order.total, items: order.items.count }, user: { id: user.id, plan: user.plan }, metadata: { source: "web", version: "v2" } )
BrainzLab.set_context( deployment: "v2.3.1", region: "us-east-1" )
BrainzLab.set_user( id: user.id, email: user.email, name: user.name )
BrainzLab.with_context(order_id: order.id) do BrainzLab::Recall.info("Processing order") BrainzLab::Recall.info("Charging card") BrainzLab::Recall.info("Order complete") end
BrainzLab.set_tags( feature: "checkout", experiment: "new_flow" )
class PaymentService def initialize @logger = BrainzLab::Recall.logger("payments") end def charge(order) @logger.info("Charging order", order_id: order.id) end end
BrainzLab::Recall.time("external_api_call") do response = ExternalAPI.fetch_data end # Logs: external_api_call (245.3ms)
BrainzLab.configure do |config| config.recall_buffer_size = 50 # Flush after 50 logs config.recall_flush_interval = 5 # Or every 5 seconds end
BrainzLab::Recall.flush
BrainzLab.configure do |config| config.scrub_fields = [:password, :credit_card, /token/i] end
# config/environments/test.rb BrainzLab.configure do |config| config.recall_enabled = false end
RSpec.describe UserService do it "logs user creation" do expect(BrainzLab::Recall).to receive(:info) .with("User created", hash_including(user_id: 123)) UserService.create(id: 123) end end