sohelaman/hello-log

PHP的Hello World类型的日志记录器

0.0.1 2018-11-23 09:47 UTC

This package is auto-updated.

Last update: 2024-09-24 05:25:59 UTC


README

PHP的Hello World类型的日志记录器

特性

  • 将日志数据记录到文件或返回数据以供打印/存储。
  • 将时间戳、数据类型、序列号等附加信息添加到日志中。
  • 简单的浏览器友好格式。
  • 支持主要数据类型,如数组、对象。
  • 支持以JSON格式输出。
  • 内置计数器。
  • 支持在日志记录时随时更改文件名。
  • 可以使用基于时间的文件名后缀来分离日志文件。

基本用法

使用Composer获取该包

$ composer require sohelaman/hello-log

然后在您的PHP脚本中使用它

// Composer autoload
require_once 'vendor/autoload.php';

use HelloLog\HelloLog;

// Create a HelloLog instance
$hellolog = new HelloLog('/home/sohel/Documents/Logfile.log');

// Simply print a message, this will not put message in log file
$hellolog->msg('Arthur Curry, I hear you can talk to fish.');

// Put some info in log file
$data = "Luke, I am your father!";
$hellolog->info($data);

// AND YESS!! There are shortcuts too!
$data = array("Diana" => "He said he'll fight with us?", "Bruce" => "More or less.");
$hellolog->i($data); // Same as info()

// Similarly put error or warning into the log
$hellolog->warn("So, you're fast?");
$hellolog->error("That feels like an over simplification.");

// Pass array or object
$hellolog->i($_SERVER);

// Return output instead of putting into log. Pass true as second parameter.
echo $hellolog->i("I'm real when it's useful.", true); // Prints instead of putting into log

文档

构造函数

  • 默认构造函数将使用/tmp目录和名为hellolog.log的文件。
  • 注意,在许多系统中,如http或www-data这样的apache用户会在/tmp目录下创建子目录,然后创建文件。
$hellolog = new HelloLog();
  • 使用路径和文件分割配置实例化
$hellolog = new HelloLog(<file path>, <file segmentation>);
$hellolog = new HelloLog('/home/sohel/Documents/Logfile.log', 'DAY');
  • 第三个构造函数参数是覆盖标志。如果为true,则每次记录日志时都会覆盖文件。
$hellolog = new HelloLog(<file path>, <file segmentation>, <overwrite flag>);
$hellolog = new HelloLog('/home/sohel/Documents/Logfile.log', 'DAY', true);
  • 注意,一旦打开覆盖标志,每次将任何内容放入日志文件时都会覆盖文件。因此,该文件中的先前内容将丢失。可以使用overwrite()方法打开或关闭覆盖标志。如果没有明确指定,则默认关闭。
$hellolog->overwrite(false); // Turns off overwrite flag. So, logs will be appended after this call.
$hellolog->overwrite(true); // Turns on overwrite flag.

文件分割

  • 日志文件分割会在日志文件名中基于时间添加一个后缀。
  • 例如,'DAY'将为一天添加后缀,如2016-08-30,并使文件名如下所示:Logfile_2016-08-30.log
  • 后缀将与给定文件名一起添加,因此如果有一个名为Logfle.log的文件,则如果没有已存在的同名文件,则将创建一个名为Logfile_2016-08-30.log的新文件。
  • 其他分割方式有'NONE'、'YEAR'、'MONTH'、'DAY'、'HOUR'、'MINUTE'、'SECOND'
  • 默认分割为'NONE',不会创建任何段,并将所有日志放入一个文件中。

获取器和设置器

  • 您可以使用设置方法设置文件路径和文件分割,并且这些设置会立即生效。
$hellolog->setPath('/var/www/logs/New.log');
$hellolog->setSeg('MINUTE'); // 'NONE', 'YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE', 'SECOND'
  • 使用获取器方法获取当前路径和分割配置。
$path = $hellolog->getPath();
$seg = $hellolog->getSeg();

日志类型

  • 有五个相似但不同的方法
$data = 'I can do this all day!';
$hellolog->info($data); // General info, uses print_r() output
$hellolog->error($data);
$hellolog->warn($data);
$hellolog->debug($data); // Extensive debug, uses var_export() output
$hellolog->json($_SERVER); // Uses JSON string
  • 所有这些方法都有简短的名字。
$hellolog->i($data);
$hellolog->d($data);
$hellolog->j($data);
$hellolog->e($data);
$hellolog->w($data);
  • 输出可以返回而不是放入日志文件。将true作为第二个参数传递将返回数据。
$output = $hellolog->d($data, true);
$output = $hellolog->j($data, true);

输出格式

  • 输出数据是一个包含前言和格式化数据的字符串。
  • 前言由日志序列号、时间戳、日志类型和数据类型组成。前言如下所示,
[2] [2016-09-03 09:35:10] [DEBUG] [DATATYPE:object]
  • 当数据返回时,默认情况下它被包裹在<pre>标签中,以增加在浏览器上的可读性。
  • 可以通过调用ugly()pretty()方法分别启用和禁用美观格式。
$hellolog->ugly(); // Disables <pre> wrapper
$hellolog->pretty();
  • json()方法有一个第三个参数,允许原始输出。原始输出没有前言或美观格式。
$serverJSON = $hellolog->j($_SERVER, true, true); // Returns JSON string of $_SERVER variable.

计数器

  • HelloLog有一个内置的计数器。计数从零开始。每次调用count()方法将计数器增加一。
echo $hellolog->count(); // Increments the counter by one
  • 计数器有其他操作,如递减、重置和获取当前值。操作字符串作为函数参数传递。对于所有操作,计数器首先执行操作,然后返回计数器值。
echo $hellolog->count('DEC'); // Decrements the counter by one
echo $hellolog->count('RESET'); // Resets the counter to zero
echo $hellolog->count('GET'); // Get the current counter value

其他

  • 打印时间戳。可以通过将true作为参数传递来返回时间戳。
$hellolog->time();
echo $hellolog->time(true);
  • 打印简单消息
$hellolog->msg('Winter is coming!');
$hellolog->msg(); // This will simply print 'Hello, World!'

这就全部了。谢谢!