PHP日志LOG类定义与用法示例
作者:luyaran 发布时间:2023-09-10 20:02:56
标签:PHP,日志
本文实例讲述了PHP日志LOG类定义与用法。分享给大家供大家参考,具体如下:
<?php
/**
* PHP log 类
*/
class Config{
public static function getConfig (){
return array(
'LOG_FILE'=>'test.txt',
'LOG_LEVEL'=>75 //INFO
);
}
}
class Log{
private $LogFile;
private $logLevel;
const DEBUG = 100;
const INFO = 75;
const NOTICE = 50;
const WARNING =25;
const ERROR = 10;
const CRITICAL = 5;
private function __construct(){
$cfg = Config::getConfig();
$this->logLevel = isset($cfg['LOG_LEVEL']) ? $cfg['LOG_LEVEL']:LOG::INFO;
if(!isset($cfg['LOG_FILE']) && strlen($cfg['LOG_FILE'])){
throw new Exception('can\'t set file to empty');
}
$this->LogFile = @fopen($cfg['LOG_FILE'],'a+');
if(!is_resource($this->LogFile)){
throw new Exception('invalid file Stream');
}
}
public static function getInstance(){
static $obj;
if(!isset($obj)){
$obj = new Log();
}
return $obj;
}
public function LogMessage($msg, $logLevel = Log::INFO,$module = null){
if($logLevel > $this->logLevel){
return ;
}
date_default_timezone_set('Asia/shanghai');
$time = strftime('%x %X',time());
$msg = str_replace("\t",'',$msg);
$msg = str_replace("\n",'',$msg);
$strLogLevel = $this->levelToString($logLevel);
if(isset($module)){
$module = str_replace(array("\n","\t"),array("",""),$module);
}
$logLine = "$time\t$msg\t$strLogLevel\t$module\r\n";
fwrite($this->LogFile,$logLine);
}
public function levelToString($logLevel){
$ret = '[unknow]';
switch ($logLevel){
case LOG::DEBUG:
$ret = 'LOG::DEBUG';
break;
case LOG::INFO:
$ret = 'LOG::INFO';
break;
case LOG::NOTICE:
$ret = 'LOG::NOTICE';
break;
case LOG::WARNING:
$ret = 'LOG::WARNING';
break;
case LOG::ERROR:
$ret = 'LOG::ERROR';
break;
case LOG::CRITICAL:
$ret = 'LOG::CRITICAL';
break;
}
return $ret;
}
}
$logIns = LOG::getInstance();
//print_r($logIns);
$logIns->logMessage("test",LOG::INFO,'myTest');
?>
运行程序,在当前目录下生成test.txt文件内容如下(这里是运行3次的结果):
09/06/18 14:56:20 test LOG::INFO myTest
09/06/18 14:56:21 test LOG::INFO myTest
09/06/18 14:56:22 test LOG::INFO myTest
希望本文所述对大家PHP程序设计有所帮助。
来源:https://blog.csdn.net/luyaran/article/details/53214627


猜你喜欢
- 隐藏并修改文件的最后修改时间的asp-webshell。源码:<% '隐藏并修改文件的最后修改时间的aspshell '
- 在第一章,我们讲过position,当它取值absolute的时候,即绝对定位。既然是定位,就要有参照物。一般来讲,这个定位的参照物是bod
- Dreamweaver从出道以来,其简便易用而又功能强大的“行为”(Behavior)一直是大家所关注的热点之一。在Dreamweaver
- 1.说明:复制表(只复制结构,源表名:a 新表名:b)SQL: select * into b&nb
- Oracle客户端NLS_LANG设置 OracleWindowsMicrosoftUnixBash 1. NLS_LANG 参数组成 NL
- iframe标签在网页中可以创建一个内嵌框架,通过指定src属性来调用另一个网页文档的内容。和frameset一样,用它来对网页结构进行拆分
- 在SQL查询中,关键词Like可提供模糊查询功能,它通常与通配符一起使用。1 Like条件适用数据库字段类型 &nbs
- 最近刚接触了公司的服务器,使用的是Windows 2003 server + IIS 6.0 服务器,在使用无组件上传文件时产生这个错误时:
- 最近在改一个页面,原来的编码是gb2312,为了国际化,改成utf-8,开始时浏览还是正常。因为电脑偶感小恙,于是恢复了系统,这才发现改后的
- 想到TDE(Transparent Data Encryption)。 TDE MSDN 说明: “透明数据加密”(TDE) 可对数据和日志
- Java一直标榜一句老话叫“编写一次,到处运行(Write Once,Run Anywhere)”,CSS也差一点点做到了。但就是为了差的一
- 关于中大型开发b/s开发中的缓存(cache),我的一些看法,有不正确的或者是有笔误的地方,请指正。thanks首先,应该了解基本的,对于缓
- 什么是索引拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为
- 昨天给公司服务器重做了一下系统,遇到Asp附件无法上传,之前服务器上使用好好的,怎么重做了就不正常了,于是一番google,baidu,下面
- 在mysql网站时拿到的rpm包只能用root安装,不支持relocate用源码安装后./configure --prefix=/home/
- 我们提倡尽可能使用CSS,而且我们常常能做到这一点。现代浏览器有很好的CSS支持-这无疑足够好让你使用CSS来控制布局和版面设计。但是有时候
- 1、很多B2C或者淘宝的卖家反应,下单了但没有支付的占有率超过30%,有的甚至到40%。对于冲动性消费的商品来说,这个70%左右的转化率其实
- 基于ASP技术开发Internet/Intranet上的MIS系统是非常方便的,首先是它借用了ADO技术和概念,同时
- 以下函数代码中“123456” 是个加密的key,自己可以随便改。php加密,js解密,貌似没什么意义,主要是key在js中会被看到。不过在
- PHP htmlspecialchars() 函数实例把预定义的字符 "<" (小于)和 ">&q