2017 © Pedro Peláez
 

library pop-log

Pop Log Component for Pop PHP Framework

image

popphp/pop-log

Pop Log Component for Pop PHP Framework

  • Monday, January 29, 2018
  • by nicksagona
  • Repository
  • 1 Watchers
  • 2 Stars
  • 1,118 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 12 Versions
  • 5 % Grown

The README.md

pop-log

Build Status Coverage Status, (*1)

Join the chat at https://discord.gg/TZjgT74U7E, (*2)

Overview

pop-log is a logging component that provides a way of logging events following the standard BSD syslog protocol outlined in RFC-3164. Support is built-in for writing log messages to a file or database table or deploying them via email or HTTP. The eight available log message severity values are:, (*3)

  • EMERG (0)
  • ALERT (1)
  • CRIT (2)
  • ERR (3)
  • WARN (4)
  • NOTICE (5)
  • INFO (6)
  • DEBUG (7)

and are available via their respective methods:, (*4)

  • $log->emergency($message);
  • $log->alert($message);
  • $log->critical($message);
  • $log->error($message);
  • $log->warning($message);
  • $log->notice($message);
  • $log->info($message);
  • $log->debug($message);

pop-log is a component of the Pop PHP Framework., (*5)

Top, (*6)

Install

Install pop-log using Composer., (*7)

composer require popphp/pop-log

Or, require it in your composer.json file, (*8)

"require": {
    "popphp/pop-log" : "^4.0.3"
}

Top, (*9)

Quickstart

This is a basic example using the file writer:, (*10)

use Pop\Log\Logger;
use Pop\Log\Writer\File;

$log = new Logger(new File(__DIR__ . '/logs/app.log'));

$log->info('Just a info message');
$log->alert('Look Out! Something serious happened!');

Then, your 'app.log' file will contain:, (*11)

2015-07-11 12:32:32    6    INFO    Just a info message
2015-07-11 12:32:33    1    ALERT   Look Out! Something serious happened!

Top, (*12)

Writers

There are four available log writers, but others can be created if they implement the Pop\Log\Writer\WriterInterface., (*13)

File

The file log writer simply stores the log output to a log file on disk. The log file format is derived from the log filename. Supported log file types include:, (*14)

  • Plain text (.log or .txt)
  • CSV (.csv)
  • TSV (.tsv)
  • XML (.xml)
  • JSON (.json)
use Pop\Log\Logger;
use Pop\Log\Writer\File;

$log = new Logger(new File(__DIR__ . '/logs/app.csv'));

$context = [
    'name'      => 'my-log-entry',
    'timestamp' => date('Y-m-d H:i:s')
];

$log->info('Just a info message', $context);

The above code creates a CSV file with the log entry:, (*15)

2023-10-31 15:58:28,6,my-log-entry,"Just a info message",

Top, (*16)

Mail

The mail log writer sends the log entries via email using the popphp/pop-mail component. The constructor requires a Pop\Mail\Mailer object and at least one email as the second argument. An optional third argument allows you to pass in additional email headers, like a subject and CC addresses., (*17)

use Pop\Log\Logger;
use Pop\Log\Writer\Mail;
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Sendmail;

$emails  = ['sysadmin@mydomain.com', 'logs@mydomain.com'];
$options = [
    'subject' => 'Custom Log Entry:',
    'cc'      => 'another@mydomain.com'
];

$mailer = new Mailer(new Sendmail());
$log    = new Logger(new Mail($mailer, $emails, $options));

$log->info('Just a info message');
$log->alert('Look Out! Something serious happened!');

Then the emails listed above will receive a series of emails like this:, (*18)

Subject: Custom Log Entry: INFO (6)
2023-11-11 12:32:32    6    INFO    Just a info message

```text Subject: Custom Log Entry: ALERT (1) 2023-11-11 12:32:33 1 ALERT Look Out! Something serious happened!, (*19)


[Top](#pop-log) ### Database Writing a log to a table in a database requires the `popphp/pop-db` component. The database writer constructor takes an instance of `Pop\Db\Adapter\AbstractAdapter` and also an optional `$table` argument (the default table name is `pop_log`). ```php use Pop\Db\Db; use Pop\Log\Logger; use Pop\Log\Writer\Database; $db = Db::connect('sqlite', __DIR__ . '/logs/.htapplog.sqlite'); $log = new Logger(new Database($db, 'system_logs')); $log->info('Just a info message'); $log->alert('Look Out! Something serious happened!');

In this case, the logs are written to a database table that has the columns id, timestamp, level, name and message. So, after the example above, your database table would look like this:, (*20)

Id Timestamp Level Name Message
1 2015-07-11 12:32:32 6 INFO Just a info message
2 2015-07-11 12:32:33 1 ALERT Look Out! Something serious happened!

Top, (*21)

HTTP

Using the HTTP writer requires the pop-http component. It creates a request and sends it to the HTTP logging resource. (Refer to the pop-http documentation for more information on how to use the HTTP client.), (*22)

use Pop\Log\Logger;
use Pop\Log\Writer;
use Pop\Http\Client;
use Pop\Http\Auth;

$client = new Client(
    'https://logs.mydomain.com/',
    ['method' => 'POST'],
    Auth::createKey('LOG_API_KEY')
);

$log = new Logger(new Writer\Http($client);
$log->info('Just a info message');
$log->alert('Look Out! Something serious happened!');

The log writer will send HTTP requests with the log data to the HTTP service with the following HTTP data fields:, (*23)

  • timestamp
  • level
  • name
  • message
  • context

Top, (*24)

Context

For additional contextual information, the $context array can be passed to the methods called to trigger the log entry. It can contain:, (*25)

$context = [
    'name'      => 'my-log-entry',
    'timestamp' => date('Y-m-d H:i:s'),
    'format'    => 'json'
];
use Pop\Log\Logger;
use Pop\Log\Writer\File;

$log = new Logger(new File(__DIR__ . '/logs/app.log'));

$context = [
    'name'      => 'my-log-entry',
    'timestamp' => date('Y-m-d H:i:s')
];

$log->info('Just a info message', $context);

Top, (*26)

Limits

Log level limits can be set for the log writer objects to enforce the severity of which log messages actually get logged:, (*27)

use Pop\Log\Logger;
use Pop\Log\Writer\File;

$prodLog = new File(__DIR__ . '/logs/app_prod.log');
$devLog  = new File(__DIR__ . '/logs/app_dev.log');

$prodLog->setLogLimit(3); // Log only ERROR (3) and above
$devLog->setLogLimit(6);  // Log only INFO (6) and above

$log = new Logger([$prodLog, $devLog]);

$log->alert('Look Out! Something serious happened!'); // Will write to both writers
$log->info('Just a info message');                    // Will write to only app_dev.log

The app_prod.log file will contain:, (*28)

2023-11-11 12:32:33    1    ALERT   Look Out! Something serious happened!

And the app_dev.log file will contain:, (*29)

2023-11-11 12:32:33    1    ALERT   Look Out! Something serious happened!
2023-11-11 12:32:34    6    INFO    Just a info message

The Versions

29/01 2018

v2.x-dev

2.9999999.9999999.9999999-dev http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

BSD-3-Clause New BSD

The Requires

  • php >=5.4.0

 

The Development Requires

log php logging pop pop php

29/01 2018

dev-master

9999999-dev http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

BSD-3-Clause New BSD

The Requires

  • php >=5.6.0

 

The Development Requires

log php logging pop pop php

29/01 2018

dev-v3-dev

dev-v3-dev http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

BSD-3-Clause New BSD

The Requires

  • php >=5.6.0

 

The Development Requires

log php logging pop pop php

29/01 2018

3.0.2

3.0.2.0 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

BSD-3-Clause

The Requires

  • php >=5.6.0

 

The Development Requires

log php logging pop pop php

05/09 2017

3.0.1

3.0.1.0 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

New BSD

The Requires

  • php >=5.6.0

 

The Development Requires

log php logging pop pop php

22/02 2017

3.0.0

3.0.0.0 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

New BSD

The Requires

  • php >=5.6.0

 

The Development Requires

log php logging pop pop php

10/07 2016

2.2.0

2.2.0.0 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

New BSD

The Requires

  • php >=5.4.0

 

The Development Requires

log php logging pop pop php

01/07 2016

2.1.1

2.1.1.0 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

New BSD

The Requires

  • php >=5.4.0

 

The Development Requires

log php logging pop pop php

27/06 2016

2.1.0

2.1.0.0 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

New BSD

The Requires

  • php >=5.4.0

 

The Development Requires

log php logging pop pop php

10/05 2016

2.0.0p2

2.0.0.0-patch2 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

New BSD

The Requires

  • php >=5.4.0

 

The Development Requires

log php logging pop pop php

19/02 2016

2.0.0p1

2.0.0.0-patch1 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

New BSD

The Requires

  • php >=5.4.0

 

The Development Requires

log php logging pop pop php

16/07 2015

2.0.0

2.0.0.0 http://www.popphp.org/

Pop Log Component for Pop PHP Framework

  Sources   Download

New BSD

The Requires

  • php >=5.4.0

 

The Development Requires

log php logging pop pop php