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-22 01:15:50

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

spring aop面向切面编程:如何来做一个强大的日志记录功能

这个东西怎么做:spring aop 面向切面编程 如何来做一个强大的日志记录功能模板; 昨天经理把这个任务交给我,让我为公司现在的项目加上一个详细的日志记录功能模板,对所有的操作,至少是增删改运作进行一个记录,其要记录操作者,以及执行的方法,IP,以及操作的方法的参数. 我以前做过类似的功能,不过是在filter里做的,通过filter来检查action请求,记录请求中的参数及action名字.但是今天公司这个是要求用spring aop来做,这样就可以在spring里对要进行的日志记录方法进

linux下使用命名管道实现多进程的日志记录功能

问题描述 linux下使用命名管道实现多进程的日志记录功能 请教如何 使用c语言实现呢 最近在学习linux环境编程遇到的问题 解决方案 运行程序的时候 yourprogroming 1 > you.log &2>1这样log 都到了you.log了 ,yourprogroming但需要标准输出.还可以在yourprogroming指定输出到某个文件之中

第五章(4)Libgdx应用框架之日志记录

  应用接口提供了简单的日志记录功能. 消息可以是正常的信息,可以是错误消息和调试信息: Gdx.app.log("MyTag", "myinformative message"); Gdx.app.error("MyTag", "myerror message", exception); Gdx.app.debug("MyTag", "myerror message");   在And

LogHelper 日志记录帮助类

1.LogHelper 日志记录帮助类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Weixin.Utils { public enum LogType { Overall, } public class LogHelper { public static string LogPath { get { return

装饰者模式---使用装饰者模式实现带日志记录功能的数据库命令执行类

装饰者模式:"在不改变对象的前提下,动态增加其功能",不希望改变原有的类,或采用创建子类的方法增加功能.在修饰了一个对象后,其接口不应该发生变化,否则这个对象不能被原有调用者使用,修饰失去了意义,装饰者与被装饰者具有相同的接口  using System;using System.Data;namespace cxyDecorator...{    public abstract  class clsAbstractDb    ...{         public abstract 

【SQL*Plus】11g版本对 SQL*Plus错误日志的记录功能——errorlogging参数

Oracle 11g中的errorlogging参数增强了错误信息的记录功能,可以做到错误信息"落地"的功能. 1.Oracle版本信息sys@11gR2> select * from v$version; BANNER----------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Pr

Yii2框架中日志的使用方法分析

本文实例讲述了Yii2框架中日志的使用方法.分享给大家供大家参考,具体如下: Yii2和Yii1.x的区别 Yii2里面日志的使用方法和Yii 1.x并不相同, 在Yii 1.x中,记录日志的方法为 Yii::log($message, $level, $category); Yii::trace($message, $category); 后者仅在调试模式下记录日志. 这里的log方法是YiiBase的静态方法. 在Yii2中,面向对象的设计贯彻得更加彻底,日志记录功能被转移到Logger类中

【转】使用Log4Net进行日志记录

     首先说说为什么要进行日志记录.在一个完整的程序系统里面,日志系统是一个非常重要的功能组成部分.它可以记录下系统所产生的所有行为,并按照某种规范表达出来.我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为.      Log4net是一个很著名的开源的日志记录组件.官方网址为:http://logging.apache.org/log4net/ ,使用Log4net能够很简单的为我们的程序添加日志记录功能.下面我们先通过一个网站例子来说明如何在

Merlin的魔力: 异常和日志记录

为了理解问题的根源并适当地响应,Merlin 发行版添加了几个与异常处理相关的功能.现在,您不必手工分析堆栈转储信息就可以检查堆栈跟踪信息,并且可以把异常连成一条菊花链,这样就能够在重新抛出异常时附加上异常的原因,这会大大促进调试工作.此外,现在还有一个内建的日志记录工具用来记录消息的不同级别.在 Merlin 的魔力系列的这一部分,John Zukowski 演示了这些新的日志记录和异常功能的工作原理并提供了一个示例程序以供查看和下载. 这个 Merlin 发行版中新添加的许多功能(比如异常处