Halo guys, Ridwan here..
Come again with a new notes update!
Melanjutkan pembahasan kita sebelumnya tentang dasar-dasar Tmux & features "Persistent Session" nya. Kali ini kita akan membahas satu fitur yang sering luput dari perhatian tapi sangat krusial, yaitu "Logging/Recording Terminal Session".
Pernahkah kamu mengalami situasi ini :
"Kamu menjalankan proses debugging atau compiling yang panjang. Kamu tinggal sebentar, dan saat kembali, prosesnya sudah selesai.. Tapi, pesan error atau log penting yang kamu cari sudah tertimbun di atas dan hilang karena keterbatasan scrollback buffer. Atau mungkin, kamu butuh bukti audit (evidence) dari apa yang kamu ketik dan eksekusi di console server."
Tmux punya fitur bawaan untuk menangani ini !
Tmux bisa melakukan Logging/Recording pada Session nya, seperti demo video berikut :
Penasaran caranya ?
Cara 1: Real-time Logging dengan pipe-pane
Ini adalah features native (bawaan) Tmux untuk merekam apa pun yang keluar di panel (pane) terminal ke dalam sebuah file secara real-time. Fitur ini sangat berguna jika kamu ingin menjalankan script dan memastikan semua outputnya tersimpan rapi, bahkan jika kamu detach sekalipun.
Langkah-langkahnya:
Pastikan kamu berada di dalam Session Tmux.
Masuk ke Command Mode dengan menekan Ctrl + b, lalu ketik : (titik dua), Bar di bawah akan berubah warna, ketik perintah berikut:
: pipe-pane -o "cat >> ~/tmux-session.log"
Perintah di atas membuat Tmux untuk "mem-pipa" (pipe) semua output dari pane/session saat ini ke perintah cat, yang kemudian menambahkannya (append) ke file ~/tmux-session.log.
Outputnya yang muncul di layer, juga akan tertulis pada file log secara bersamaan.
Cara 2: Menyimpan History (Scrollback) dengan capture-pane
Bagaimana jika prosesnya sudah terjadi, dan kamu ingin menyimpan apa yang sudah tampil di layar (beserta history scroll ke atasnya) ke dalam file?
Kita bisa menggunakan perintah capture-pane. Perintah ini bisa dijalankan langsung dari terminal (jika kamu punya pane lain yang aktif) atau dari luar Tmux.
Langkah-langkahnya:
Pastikan kamu sudah detach session nya,
masukan command berikut :
$ tmux capture-pane -pS - > ~/dump-history.txt
Penjelasannya:
-p : Print output ke stdout (agar bisa kita redirect ke file dengan >).
-S - : Start dari awal history buffer (paling atas). Jika tidak pakai ini, dia hanya merekam apa yang terlihat di layar saat ini (visible area). Hasilnya File dump-history.txt akan berisi rekam jejak lengkap dari seluruh session. Sangat berguna untuk post-mortem analysis jika ada error.
Cara 3: Menggunakan tmux.conf
Sebenarnya metode ini sama dengan metode pipe-pane sebelumnya, tetapi kita akan membuat command "pipe-pane" menjadi permament dengan menulis command nya pada file tmux.conf,
Buat file .tmux.conf & input seperti berikut
# Tombol Shift + h untuk menyalakan/mematikan logging
bind H pipe-pane -o "cat >> /var/log/tmux/tmux-#S-#I-#P.log" \; display-message "Toggled logging to /var/log/tmux/..."
Kemudian save dan load tmux.conf tersebut dengan command berikut :
$ tmux source-file ~/.tmux.conf
Untuk memulai logging, sama seperti metode pipe-pane, pastikan kamu sudah berada di dalam Session Tmux. Kemudian untuk memulai logging cukup tekan Ctrl + b, lalu H. hingga terlihat notif pada kiri bawah tmux.
Output nya akan berada pada directory "/var/log/tmux/"
Dengan nama file "tmux-Session-Window-Tab.log
Kesimpulan
Fitur persistent session menjaga prosesmu tetap hidup, sementara fitur logging menjaga data dan output-mu tetap aman tercatat. Tidak ada lagi cerita kehilangan log error / pesan error karena terminal buffer-nya kepenuhan.
Ok. Thank you sudah membaca tulisan ini, Semoga bermanfaat !
Best Regards
Rdw