Logger Phalcon

Phalcon \ Logger adalah komponen Logger Phalcon yang tujuannya adalah untuk menyediakan layanan logging untuk aplikasi. Menawarkan logging untuk backends berbeda dengan menggunakan adapter yang berbeda. Ia juga menawarkan transaksi logging, pilihan konfigurasi, format dan filter yang berbeda. Anda dapat menggunakan Phalcon \ Logger untuk setiap Log yg diperlukan aplikasi Anda, dari debugging proses untuk melacak aliran aplikasi.

<?php

use Phalcon\Logger\Adapter\File as FileAdapter;

// Create the file logger in 'w' mode
$logger = new FileAdapter("app/logs/test.log", array(
    'mode' => 'w'
));

Adapter 

Komponen ini memanfaatkan adapter untuk menyimpan pesan Log. Penggunaan adapter memungkinkan antarmuka yg seragam selagi berganti backends jika perlu. Adapter yang didukung adalah:

Adaptor Deskripsi API
File Log ke file teks biasa Phalcon \ Logger \ Adapter \ File
Stream Log ke PHP Streams Phalcon \ Logger \ Adapter \ Stream
Syslog Log ke logger sistem Phalcon \ Logger \ Adapter \ Syslog
FirePHP Log ke FirePHP Phalcon \ Logger \ Adapter \ FirePHP

Membuat Log 

Contoh di bawah ini menunjukkan bagaimana untuk membuat log dan menambahkan pesan didalamnya:

<?php

use Phalcon\Logger\Adapter\File as FileAdapter;

$logger = new FileAdapter("app/logs/test.log");
$logger->log("This is a message");
$logger->log("This is an error", \Phalcon\Logger::ERROR);
$logger->error("This is another error");

The log yang dihasilkan di bawah:

[Tue, 17 Apr 12 22:09:02 -0500][DEBUG] This is a message
[Tue, 17 Apr 12 22:09:02 -0500][ERROR] This is an error
[Tue, 17 Apr 12 22:09:02 -0500][ERROR] This is another error

Transaksi 

Menyimpan Logging data ke adaptor misalnya file (file system) selalu merupakan operasi yang berat dalam hal kinerja. Untuk mengatasi itu, Anda dapat memanfaatkan transaksi logging. Data transaksi log disimpan sementara dalam memori dan kemudian menulis data tsb ke adaptor yang relevan (dalam kasus ini file) dalam operasi atom tunggal. Sehingga proses penulisan file hanya terjadi sekali saja dalam satu fase transaksi Log.

<?php

use Phalcon\Logger\Adapter\File as FileAdapter;

// Create the logger
$logger = new FileAdapter("app/logs/test.log");

// Start a transaction
$logger->begin();

// Add messages
$logger->alert("This is an alert");
$logger->error("This is another error");

// Commit messages to file
$logger->commit();

Logging ke Beberapa Handler 

Phalcon \ Logger memungkinkan untuk mengirim pesan ke beberapa handler dengan hanya satu panggilan:

<?php

use Phalcon\Logger,
    Phalcon\Logger\Multiple as MultipleStream,
    Phalcon\Logger\Adapter\File as FileAdapter,
    Phalcon\Logger\Adapter\Stream as StreamAdapter;

$logger = new MultipleStream();

$logger->push(new FileAdapter('test.log'));
$logger->push(new StreamAdapter('php://stdout'));

$logger->log("This is a message");
$logger->log("This is an error", Logger::ERROR);
$logger->error("This is another error");

Pesan yang dikirim ke handler dalam urutan registrasi handler tsb.

Pesan Formatting 

Komponen ini memanfaatkan ‘formatters’ pesan Format sebelum mengirimnya ke backend. Formatters yg tersedia adalah:

Adaptor Deskripsi API
Line Format pesan menggunakan string satu baris Phalcon \ Logger \ Formatter \ Baris
JSON Siapkan pesan akan dikodekan dengan JSON Phalcon \ Logger \ Formatter \ JSON
Syslog Menyiapkan pesan yang akan dikirim ke syslog Phalcon \ Logger \ Formatter \ Syslog

Line Formatter 

Memformat pesan menggunakan string satu baris. Format logging default adalah:

[Date%%] [type%%] pesan%%

Anda dapat mengubah format default menggunakan setFormat (), ini memungkinkan Anda untuk mengubah format pesan login dengan seting Anda sendiri. Variabel Format log yg diperbolehkan adalah:

Variabel Deskripsi
%message% Pesan Log itu sendiri 
%date% Tanggal pesan ditambahkan
%type% String uppercase dengan jenis pesan

Contoh di bawah ini menunjukkan bagaimana untuk mengubah format log:

<?php

use Phalcon\Logger\Formatter\Line as LineFormatter;

//Changing the logger format
$formatter = new LineFormatter("%date% - %message%");
$logger->setFormatter($formatter);

Menerapkan formatters Anda sendiri 

Antarmuka Phalcon \ Logger \ FormatterInterface harus diimplementasikan dalam rangka menciptakan logger formatter anda sendiri atau extend yang sudah ada.

Adapter 

Contoh berikut menunjukkan penggunaan dasar setiap adaptor:

Logger Stream 

Stream logger menulis pesan ke stream yg terdaftar di PHP. Daftar stream tersedia di sini :

<?php

use Phalcon\Logger\Adapter\Stream as StreamAdapter;

// Opens a stream using zlib compression
$logger = new StreamAdapter("compress.zlib://week.log.gz");

// Writes the logs to stderr
$logger = new StreamAdapter("php://stderr");

File Logger 

Logger ini menggunakan plain-file untuk log setiap jenis data. Secara default semua file logger dibuka menggunakan modus append yang membuka file untuk menulis saja; menempatkan pointer file pada akhir baris file. Jika file tidak ada, maka akan dibuat. Anda dapat mengubah mode ini lewat opsi tambahan untuk konstruktor:

Syslog Logger 

Logger ini mengirimkan pesan ke logger sistem. Perilaku syslog dapat bervariasi mengikuti jenis sistem-operasi-nya.

<?php
use Phalcon\Logger\Adapter\Syslog as SyslogAdapter;

// Basic Usage
$logger = new SyslogAdapter(null);

// Setting ident/mode/facility
$logger = new SyslogAdapter("ident-name", array(
    'option' => LOG_NDELAY,
    'facility' => LOG_MAIL
));

FirePHP Logger 

Logger ini mengirimkan pesan ke FirePHP.

<?php

use Phalcon\Logger\Adapter\Firephp as Firephp;

$logger = new Firephp("");
    $logger->log("This is a message");
    $logger->log("This is an error", \Phalcon\Logger::ERROR);
    $logger->error("This is another error");

Menerapkan adapter Anda sendiri 

Antarmuka Phalcon \ Logger \ AdapterInterface harus diimplementasikan dalam rangka menciptakan adapter logger anda sendiri atau memperpanjang yang sudah ada.