php之框架增加日志记录功能类

<?php

/*
思路:给定文件,写入读取(fopen ,fwrite……)

  如果大于1M 则重写备份

  传给一个内容,
  判断大小,如果大于1M,备份
  小于则写入
*/
class Log{

	//定义一个常量,创建一个文件的名称
	const LOGFILE = ‘curr.log‘;

	//写入文件
	public static function write($cont){
		$cont .="\r\n";
		$log = self::isBak(); //计算文件的地址,判断大小
		$fh = fopen($log,‘ab‘); //打开,追加模式
		fwrite($fh,$cont);
		fclose($fh);
	}

	//备份日志
	public static function bak(){
		//给出写入文件的路径,把原来的日志
		//改为年月日 .bak 的形式
		$log = ROOT .‘data/log/‘. self::LOGFILE;
		$bak = ROOT .‘data/log/‘.date(‘Ymd‘) .mt_rand(10000,99999). ‘.bak‘;

		return rename($log,$bak);	

	}

	//判断日志是否大于1M
	public static function isBak(){
		//判断文件是否存在
		$log = ROOT .‘data/log/‘. self::LOGFILE;
		if(!file_exists($log)){
		//如果不存在,则创建该文件
			touch($log); // touch在linux也有此命令,是快速的建立一个文件
			return $log;
		}

		//判断大小
		clearstatcache(true,$log); //清除缓存,则创建.bak文件
		$size = filesize($log);

		if($size <= 1024*1024){
			//如果<=1M 则写入
			return $log;
		}
			//到这一行,说明大于1M
		if(!self::bak()){
			return $log;
		} else {
			touch($log);
			return $log;
		}
          }
}

?>

极端法测试调用,循环执行10000次

//另起页面
//引入日志功能类
 class mysql{
	public function query($sql){
		Log::write($sql);
	}
 }
$mysql= new mysql();
/**/
for($i=0;$i<10000;$i++){
	$sql=‘select goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goods where goods_id=‘.rand(10000,99999);
	$mysql->query($sql);
}

Log::write(‘记录‘);
echo "执行完毕";

时间: 2024-10-20 22:33:35

php之框架增加日志记录功能类的相关文章

HAproxy增加日志记录功能和自定义日志输出内容、格式

一.增加haproxy日志记录功能 1.1 由于数据分析的需要,我们必须打开haproxy日志,记录相关信息. 在配置前,我们先来了解一下日志的level:local0-local7 16-23保留为本地使用 emerg 0 系统不可用     alert 1 必须马上采取行动的事件     crit 2 关键的事件     err 3 错误事件     warning 4 警告事件     notice 5 普通但重要的事件     info 6 有用的信息     debug 7 调试信息

配置Haproxy增加日志记录功能

CentOS 7上yum安装的Haproxy,默认没有记录日志.需要做一下配置才能记录日志. 1.创建日志文件/var/log/haproxy/haproxy.log cd /var/log sudo mkdir haproxy cd haproxy sudo touch haproxy.log sudo chmod a+w haproxy.log 2.开启rsyslog的haproxy日志记录功能 编辑/etc/rsyslog.conf文件,将 $ModLoad imudp $UDPServe

三种方案实现日志记录功能

三种方案实现日志记录功能 方案一.使用拦截器实现日志记录功能 步骤一.首先需要我们自定义一个注解类 package cn.hmy.Util; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 自定义操作日志注解接口类

java动态代理详解,并用动态代理和注解实现日志记录功能

动态代理的概念 动态代理是程序在运行过程中自动创建一个代理对象来代替被代理的对象去执行相应的操作,例如, 我们有一个已经投入运行的项目中有一个用户DAO类UserDao用来对User对象进行数据库的增删改查操作,但是有一天,要求在对用户的增删改查操作时记录相应的日志,这是怎么办呢?难道我们去直接修改UserDao的源代码,然后在UserDao的每个方法中加入日志记录功能,这显然是不合理的,它违背了java的OCP原则,即对修改关闭对扩张开放.比如改现有的代码如下: 接口类 public inte

封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil

封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创建Logger类,完整代码如下: using NLog; using NLog.Config; using NLog.Mongo; using NLog.Targets; using System; using System.Collections.Generic; using System.IO;

如何自行给指定的SAP OData服务添加自定义日志记录功能

有的时候,SAP标准的OData实现或者相关的工具没有提供我们想记录的日志功能,此时可以利用SAP系统强大的扩展特性,进行自定义日志功能的二次开发. 以SAP CRM Fiori应用"My Opportunity"为例:我们首先在其OData服务CRM_OPPORTUNITY的实现类CL_CRM_OPPORTUNITY_IMPL的构造函数方法CONSTRUCTOR里设置一个值为GET_BADI的动态断点,这样调试模式下,ABAP调试器会自动停在所有出现了GET BADI关键字调用的地方

在SpringBoot中用SpringAOP实现日志记录功能

背景: 我需要在一个SpringBoot的项目中的每个controller加入一个日志记录,记录关于请求的一些信息. 代码类似于: logger.info(request.getRequestUrl()); 之类的. 代码不难,但由于Controller的数量不少,干起来也是体力活.所以想到了用Spring AOP来解决这个问题. 首先,在pom中加入SpringAOP的相关依赖: <dependency> <groupId>org.springframework.boot<

linux命令:syslog日志服务-系统缩减之增加日志服务功能

syslog 服务:     syslogd:系统日志服务,非内核产生的信息     klogd:内核日志服务,专门负责记录内核产生的日志信息   service syslog restart 重启日志服务   service syslog reload  不重启日志服务使得日志服务配置文件立即生效 配置文件:/etc/syslog.conf 配置文件格式:facility.priority action  #facility谁产生的日志,priority所产生的那   种   级别的日志,ac

个人理解---在开发中何时加入日志记录功能[java]

是这样的:俩个月前做的一个小功能,今天经理突然问我这个'清除复投记录'功能是不是我做的,我说是,很久以前了.他说昨天一个客户找过来了,后台把人家的复投记录清除掉了,不知道何时清除的,我记得当时做的时候跟产品商量的就是直接删掉这条记录并不是修改记录的status,谁会想到有客户会来找呢?清除记录出现异常的时候才会打印日志,正确清除的情况并不会打印日志 为了有一个良好的开发习惯,应当在重要的地方加入日志的打印,并不是每行代码的后面都要加日志,其实不论执行结果是正确的还是异常的都需要打印日志,包括用户