Apa Itu Context di Laravel 12? Propagasi Data ke Log dan Queued Jobs
Pernah debugging log produksi dan bingung karena entri log tidak punya info konteks — tidak tahu request mana, user mana, atau proses apa yang menghasilkannya? Laravel 12 punya solusi bawaan untuk ini: fitur Context.
Context di Laravel 12 bukan sekadar contextual binding di service container. Ini adalah fitur tersendiri yang memungkinkan Anda menyimpan data kontekstual yang otomatis disertakan di semua log dan dipropagasi ke queued jobs.
Apa Itu Context di Laravel 12?
Fitur Context (diperkenalkan di Laravel 11, tersedia di Laravel 12) adalah mekanisme penyimpanan data per-request yang:
- Otomatis disertakan di setiap entri log selama request berlangsung
- Dipropagasi ke queued jobs yang di-dispatch dalam request yang sama
- Bersifat isolasi per-request — tidak bocor ke request lain
Bayangkan Anda mau melacak semua aktivitas dari satu user dalam satu request. Dengan Context, cukup simpan sekali di awal, dan semua log selanjutnya otomatis menyertakan data itu.
Cara Menggunakan Context
Import facade-nya:
use Illuminate\Support\Facades\Context;
Simpan data ke context:
// Di middleware atau awal request
Context::add('user_id', auth()->id());
Context::add('request_id', (string) Str::uuid());
Context::add('ip', request()->ip());
Setelah ini, semua log yang dibuat selama request akan otomatis menyertakan data tersebut:
Log::info('Pengguna membuka halaman checkout');
// Output log:
// [2025-04-18 10:00:00] local.INFO: Pengguna membuka halaman checkout
// {"user_id":42,"request_id":"abc-123","ip":"192.168.1.1"}
Tidak perlu manual menambahkan data ke setiap pemanggilan Log::info().
Propagasi ke Queued Jobs
Ini bagian yang paling berguna. Saat Anda men-dispatch job dalam sebuah request, data context ikut terbawa:
// Di controller
Context::add('order_id', $order->id);
ProcessPayment::dispatch($order); // context ikut ke job ini
// Di dalam ProcessPayment job
public function handle()
{
// Context::get('order_id') tersedia di sini
Log::info('Memproses pembayaran');
// log otomatis menyertakan order_id dari context
}
Tanpa fitur ini, Anda harus manually passing data context ke setiap job sebagai parameter.
Hidden Context: Data yang Tidak Masuk ke Log
Context punya dua lapisan: context biasa (masuk ke log) dan “hidden context” (tidak masuk ke log, tapi tetap dipropagasi ke jobs). Berguna untuk data sensitif seperti token:
Context::addHidden('auth_token', $token); // tidak muncul di log
Context::getHidden('auth_token'); // tapi bisa diambil di job
Membaca dan Memanipulasi Context
// Ambil satu nilai
$userId = Context::get('user_id');
// Ambil semua context
$all = Context::all();
// Cek keberadaan key
if (Context::has('order_id')) { ... }
// Hapus key tertentu
Context::forget('request_id');
// Hapus semua
Context::flush();
Praktis: Middleware untuk Context Otomatis
Buat middleware yang mengisi context di setiap request:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Context;
use Illuminate\Support\Str;
class AddRequestContext
{
public function handle($request, Closure $next)
{
Context::add('request_id', (string) Str::uuid());
Context::add('user_id', auth()->id() ?? 'guest');
Context::add('url', $request->url());
return $next($request);
}
}
Daftarkan di bootstrap/app.php dan semua log di aplikasi Anda otomatis punya konteks yang kaya tanpa perubahan di kode lain.
Kalau Anda sedang membangun aplikasi Laravel dan butuh tim pengembang yang familiar dengan fitur-fitur modern Laravel 12, kami di Arrazy Inovasi siap membantu dari konsultasi hingga pengembangan penuh.
Artikel Lainnya di Kategori Laravel
10 November 2025
Apa Itu Contract di Laravel 12? Penjelasan Simpel + Contoh Kode
Bayangkan Anda membangun fitur notifikasi. Hari ini kirim via email, bulan depan ditambah WhatsApp, tahun depan mungkin push notification. Kalau kode Anda langsung bergantung ke implementasi email spesifik, setiap perubahan akan memaksa Anda menyentuh banyak file sekaligus. Di sinilah Contract di Laravel 12 berguna. Apa Itu Contract di Laravel 12? Contract di Laravel adalah sekumpulan […]
Baca Artikel10 November 2025
Contoh Implementasi Observer di Laravel 12: Auto-Slug, Audit Trail, dan Cache
Artikel ini melanjutkan penjelasan konsep Observer di Laravel 12 dengan studi kasus implementasi lengkap: sistem audit trail dan auto-slug generation. Studi Kasus 1: Auto-Slug Generation Masalah umum: setiap kali artikel dibuat atau diupdate, slug harus di-generate dari title. Tanpa Observer, logika ini tersebar di berbagai controller. Dengan Observer, cukup satu tempat: <?php namespace AppObservers; use […]
Baca Artikel9 November 2025
Tutorial PostgreSQL di Laravel: Setup, JSONB, dan Full-Text Search
Laravel secara default menggunakan MySQL. Tapi kalau proyek Anda butuh fitur seperti JSON columns yang lebih canggih, full-text search bawaan, atau JSONB, PostgreSQL adalah pilihan yang solid. Artikel ini membahas cara setup PostgreSQL di Laravel, termasuk konfigurasi, perbedaan dengan MySQL, dan fitur-fitur PostgreSQL yang bisa dimanfaatkan langsung dari Eloquent. Instalasi dan Konfigurasi Pastikan extension PHP […]
Baca ArtikelIngin Membaca Artikel Lainnya?
Temukan lebih banyak insight dan tips tentang teknologi dan bisnis digital.
Lihat Semua Artikel