0% menganggap dokumen ini bermanfaat (0 suara)
8 tayangan

PHP Logging

Diunggah oleh

bungamentari007
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
8 tayangan

PHP Logging

Diunggah oleh

bungamentari007
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 60

PHP Logging

Eko Kurniawan Khannedy


Eko Kurniawan Khannedy

- Technical architect at one of the biggest


ecommerce company in Indonesia
- 11+ years experiences
- www.programmerzamannow.com
- youtube.com/c/ProgrammerZamanNow
Eko Kurniawan Khannedy
● Telegram : @khannedy
● Facebook : fb.com/ProgrammerZamanNow
● Instagram : instagram.com/programmerzamannow
● Youtube : youtube.com/c/ProgrammerZamanNow
● Telegram Channel : t.me/ProgrammerZamanNow
● Email : [email protected]
Sebelum Belajar
● PHP Dasar
● PHP Object Oriented Programming
● PHP Composer
● PHP Unit Test
● PHP Web
● PHP MVC
● Git
Agenda
● Pengenalan Logging
● Pengenalan Library Monolog
● Membuat Logging
Pengenalan Logging
Pengenalan Logging
● Log file adalah file yang berisikan informasi kejadian dari sebuah sistem
● Biasanya dalam log file, terdapat informasi waktu kejadian dan pesan kejadian
● Logging adalah aksi menambah informasi log ke log file
● Logging sudah menjadi standard industri untuk menampilkan informasi yang terjadi di aplikasi yang kita
buat
● Logging bukan hanya untuk menampilkan informasi, kadang digunakan untuk proses debugging ketika
terjadi masalah di aplikasi kita
Diagram Logging
Ekosistem Logging
Logging Library
PHP Logging
● PHP sendiri sebenarnya memiliki function yang dikhususkan untuk logging
● Namun saat ini, kebanyakan programmer tidak menggunakannya
● Hal ini dikarenakan penggunaannya yang kurang flexible dan juga fiturnya sangan sederhana
● https://www.php.net/manual/en/function.error-log.php
Logging Library
Diluar PHP Logging, banyak sekali library yang bisa kita gunakan untuk logging, seperti :

● Monolog : https://github.com/Seldaek/monolog
● Analog : https://github.com/jbroadway/analog
● Log4PHP : https://logging.apache.org/log4php/
● KLogger : https://github.com/katzgrau/KLogger
● dan lain-lain
Monolog
● Pada kelas ini kita akan menggunakan Monolog
● Monolog adalah library logging untuk PHP yang saat ini paling populer
● Bahkan framework Laravel pun menggunakan Monolog
● https://packagist.org/packages/monolog/monolog
Membuat Project
Clone Project
● https://github.com/ProgrammerZamanNow/belajar-php-mvc
Menambah Dependency
● https://packagist.org/packages/monolog/monolog
Logger
Logger
● Logger merupakan class yang digunakan untuk melakukan logging
● Untuk membuat object Logger sangat mudah, kita cukup gunakan nama logger yang kita inginkan di
parameter constructor nya
Kode : Membuat Logger
Nama Logger dengan Nama Class
● Salah satu kebiasaan ketika membuat object Logger, adalah menggunakan nama logger dengan nama class
lokasi Logger nya
● Misal jika kita membuat object Logger di class ProductController, maka kita akan menggunakan nama
logger dengan ProductController::class
● Salah satu kegunaannya adalah, kita bisa tahu lokasi kita melakukan logging dari nama Logger
Kode : Membuat Logger dengan Nama
Handler
Handler
● Monolog memilih fitur yang bernama Handler
● Handler merupakan object yang bertugas mengirim aktivitas log event yang kira kirim ke Logger ke target
yang dituju
● Secara default, tidak ada Handler sama sekali ketika kita membuat Logger, kita perlu menambahkan
Handler ke Logger secara manual
● Handler di Monolog di representasikan dalam interface HandlerInterface
● https://github.com/Seldaek/monolog/blob/main/src/Monolog/Handler/HandlerInterface.php
Implementasi Handler
● Karena HandlerInterface adalah sebuah Interface, maka untuk menambahkan Handler, kita perlu membuat
implementasi class nya
● Tapi tenang saja, Monolog sudah menyediakan banyak sekali Handler yang kita butuhkan
Contoh Handler
Stream Handler
● Salah satu Handler yang sering sekali digunakan adalah StreamHandler
● StreamHandler merupakan Handler yang bisa kita gunakan untuk mengirim log event ke File atau ke
Console
● https://github.com/Seldaek/monolog/blob/main/src/Monolog/Handler/StreamHandler.php
Kode : Menambah Handler
Logging
Logging
● Setelah kita membuat Logger dan menambah Handler ke Logger
● Kita bisa mulai melakukan logging
● Ada banyak method di Logger yang bisa kita gunakan untuk melakukan logging, dan akan kita bahas
detail di bab Level
Kode : Melakukan Logging
Level
Level
● Saat kita mengirim log event, kita bisa menentukan level dari log event tersebut
● Monolog mendukung banyak sekali level, dimana cara kerja level itu bertingkat, dari yang paling rendah
kepaling tinggi
● Biasanya level digunakan untuk menentukan jenis log event, misal jika log event berupa informasi, kita
gunakan level info, jika berupa masalah, kita gunakan level error, jika berupa informasi untuk proses
debugging, kita gunakan level debug, dan lain-lain
Daftar Level
Level Logger Method Value

DEBUG debug() 100

INFO info() 200

NOTICE notice() 250

WARNING warning() 300

ERROR error() 400

CRITICAL critical() 500

ALERT alert() 550

EMERGENCY emergency() 600


Kode : Level
StreamHandler Level
● Salah satu kelebihan StreamHandler adalah, dia bisa menentukan mulai level mana log event harus dikirim
● Defaultnya, StreamHandler akan mengirim mulai level DEBUG
● Jika kita ingin mengubahnya, kita bisa mengubah level mulai ketika membuat object StreamHandler
Kode : StreamHandler Level
Context
Context
● Selain mengirim informasi log event berupa string, kita juga menambahkan informasi lainnya berupa array
ketika melakukan logging
● Informasi tambahan ini dinamakan Context
● Context ini sangat bermanfaat jika memang kita ingin menambahkan informasi yang berhubungan dengan
log event tersebut, sehingga kita tidak perlu membuat format pesan secara manual, cukup kirim data
Context berupa Array pada parameter kedua pada method logging nya
Kode : Context
Processor
Processor
● Processor merupakan cara lain jika kita ingin menambahkan informasi ke log event
● Jika informasi Context harus kita kirim setiap kali kita melakukan logging, pada Processor, kita bisa
membuat class Processor yang akan dieksekusi setiap kali log event dikirim
● Dengan Processor, kita bisa menambahkan informasi tambahan pada log event yang dikirim
● Untuk membuat Processor, kita bisa langsung menggunakan Callable atau membuat class turunan dari
ProcessorInterface
Kode : Processor
Monolog Processor
● Sama seperti Handler, Monolog juga sudah banyak menyediakan class implementasi dari
ProcessorInterface yang bisa kita gunakan sesuai kebutuhan kita
● Ini sangat berguna ketika kita memang ingin menambahkan informasi secara umum ke semua log event
yang kita buat
Daftar Monolog Processor
Kode : Monolog Processor
Reset Handler dan Processor
Resettable Interface
● Saat kita menggunakan Handler dan Processor, kadang ada beberapa Handler dan Processor yang
menyimpan beberapa datanya di Memory
● Jika proses object Logger mengikuti alur hidup Web Request, hal itu aman-aman saja karena setelah web
request selesai, semua data akan dihapus dari memory
● Namun jika ternyata kita melakukan pekerjaan yang lama, misal long running job, maka sangat disarankan
untuk secara regular melakukan reset Handler dan Processor
● Beberapa Handler dan Processor merupakan implementasi ResettableInterface yang memiliki method
reset() untuk melakukan reset data
Resettable Logger
● Melakukan reset semua Handler dan Processor yang kita gunakan lumayan ribet jika dilakukan
● Untungnya, Logger memiliki method reset() yang bisa kita gunakan untuk melakukan reset semua Handler
dan Processor
● Kita cukup memanggil method tersebut untuk melakukan reset Handler dan Processor
Kode : Reset Method di Logger
Kode : Reset Logger
Formatter
Formatter
● Saat Handler mengirim log event ke tujuan (misal file atau console), Handler akan melakukan proses
format log event terlebih dahulu
● Setiap Handler biasanya memiliki default Formatter, contohnya StreamHandler menggunakan
LineFormatter
● Jika kita ingin membuat Formatter sendiri, kita bisa membuat class turunan dari FormatterInterface
Monolog Formatter
● Monolog juga sudah menyediakan banyak sekali implementasi dari FormaterInterface
● Kita bisa menggunakannya sesuai dengan kebutuhan kita
Daftar Monolog Formatter
Kode : Monolog Formatter
Rotating File Handler
Rotating File Handler
● Saat menggunakan file sebagai media penyimpanan log, kadang semakin lama, ukuran file akan semakin
besar
● StreamHandler secara default akan selalu mengirim log event ke file yang sama terus menerus
● Untungnya ada class turunan dari StreamHandler bernama RotatingFileHandler
● Class ini, di khususkan untuk mengirim log event ke file, namun bisa secara otomatis membuat file baru
setiap hari, sehingga semua log tidak akan disimpan di dalam satu file
● Ini bagus untuk memastikan ukuran log tidak terlalu besar, dan mudah untuk menghapus log lama yang
sudah tidak kita gunakan lagi
Kode : Rotating File Handler
Materi Selanjutnya
Materi Selanjutnya
● PHP RESTful API

Anda mungkin juga menyukai