sesser/slogger

一个简单的日志库

1.0.2 2013-02-08 06:36 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:43:50 UTC


README

#Sesser\Slogger#

Build Status

这是一个基本的日志工具。它支持基于文件的日志记录器和基于MongoDB的日志记录器。每个日志提供程序都有不同的设置,以下将详细介绍。这种工具的设置方式应该会使您轻松实现项目中所需的任何提供程序(另一个数据库、不同的NoSQL存储、网络服务等)。

##功能与优点##

  • 易于配置和使用
  • 支持多个日志级别。DEBUG、INFO、WARN、ERROR
  • 记录异常并带有堆栈跟踪。只需将异常传递给Slogger方法。
  • 可以在应用中间重新配置(见下文)
  • 创建具有不同提供程序/设置的多个日志记录器
  • 轻松实现任何您想要的提供程序(Mongodb、SQL、Memcacheq、Beanstalkd、Redis等)
  • 速度快、单元测试、文档完善

##Sesser\Slogger\Providers\File##

文件提供程序非常基础。它支持以下所述的一些配置选项

默认配置如下所示

<?php
$config = array(
	'enabled'	 => false,
	'logfile'	 => dirname(dirname(__FILE__)) . 'tmp/logs/application.log',
	'level'		 => \Sesser\Slogger\Slogger::LOG_LEVEL_ERROR,
	'serializer' => NULL,
	'dateFormat' => 'Y-m-d H:i:s'
);

其中大部分都很直观。您会注意到它默认为ISlogger::LEVEL_ERROR并且被禁用。logfile设置是实际日志文件的路径。日志实用工具以单例的形式构建,但您可以通过在调用Slogger::Get('MyLogger')时指定不同的日志文件来创建多个文件日志记录器。

serializer设置是为了提供您自己的序列化程序,用于您要记录的对象。默认情况下,如果您传递的不是字符串,Slogger将使用print_r($obj, true)。此设置必须是可调用的(通过is_callable()),否则将无法工作。

设置简单的文件日志记录器

下面是如何操作的...

<?php

$serializer = function($obj) {
	if (is_string($obj))
		return $obj;
	return json_encode($obj, true);
};
//-- Somewhere in your application...
Slogger::Configure('MyLogger', array(
	'provider' => 'File',
	'settings' => array(
		'enabled' 	=> true,
		'level'		=> \Sesser\Slogger\Slogger::LOG_LEVEL_DEBUG,
		'logfile' 	=> '/tmp/myapp.log',
		'serializer'=> $serializer
)));

//-- When you need your logger... get it
$log = Logger::Get('MyLogger');

$log->Debug("This is a debug message");
$log->Error("Exception caught! See below");
$log->Error($ex);

如果您想在另一个类中获取相同的日志记录器,您不必在第一次调用时传递所有相同的设置。只需传递logfile设置,日志记录器就会找到您正在寻找的正确日志记录器。

<?php
$log = Slogger::Get('MyLogger');

如果您想更改日志记录器的配置方式(例如,您想程序化地开启调试或完全禁用日志记录),只需调用带有您更新后的配置数组的configure,它将在下一次调用$log = Slogger::Get('MyLogger');时自动获取更改。

##Sesser\Slogger\Providers\Mongodb##

注意:这尚未实现。但很快就会完成。

MongoDB提供程序是出于好奇心而不是任何需要而诞生的。我最初考虑了一个常规数据库(如MySQL),但我不确定是否有人希望在应用程序出错并且应用程序开始记录错误时,应用程序被绑定到数据库写入。无论如何,Mongo提供程序的配置与之前有所不同,但也共享一些类似的设置。

<?php
	$config = array(
		'enabled'	=> false,
		'level'		=> \Sesser\Slogger\Slogger::LOG_LEVEL_ERROR,
		'server'	=> array(
			'dsn'		=> 'mongodb://127.0.0.1:27017',
			'db'		=> 'applog',
			'options'	=> array(
				'timeout' => 1000
			)
		),
		'serializer' => NULL
	);

这里的 name 设置类似于文件记录器中的 logfile 设置。它为特定的记录器提供唯一标识符(例如,您可以在一个应用程序中拥有多个记录器)。server 配置数组是传递给 Mongo 构造函数的所有基本内容,因此请确保这些设置正确。server -> options 数组是可选的,但如果有需要,它是存在的。如果您需要覆盖任何默认值(或添加自己的),只需传递一个空数组作为选项(或添加您需要的键)。

##其他细节##

该项目包含一些测试用例,我所编写的一切都通过了测试。但这并不意味着它涵盖了所有场景和用例。如果您发现某个特定的用例,请更新测试或在此 GitHub 上提交问题。

该项目还使用了较新的 ApiGen。要生成 API 文档,只需在终端中导航到 src 目录,并输入 apigen。这假设您已正确安装 ApiGen,并且 apigen 在您的路径中。