php 加入日志功能,php怎么写一个日志功能的函数

我们要写一个写日志的函数,首先需要了解需求,我们一般怎么用日志函数呢?例如,程序执行到某一步,我希望把这个变量(地址)$user_address的值打印到日志,我们希望日志里是这么写的:

`xx-xx-xx xx:xx $user_address : 上海市杨浦区xxxxx

然后每一条日志都要换行,都有日期时间,

假设 函数名称是log();

我们希望这么调用他 log(‘useraddress:user_address);

那如果$user_address 是一个数组,我想把一个数组的全都都输出到日志中,该怎么办呢?

有一个函数是print_r($arg,true),第二个参数表示不直接输出,而是输出的结果作为返回值.我们知道他的输出结果为一段字符串.

log函数可以这么写:

log(){$args= func_get_args();//获得传入的所有参数的数组

$numargs= func_num_args();//参数的个数

if($numargs==0) {

$log="";

} elseif($numargs==1) {

$log=$args[0];

}else{$format=array_shift($args);//分割掉函数第一个元素,并且做返回值返回,

'$user_address:%s'$log= vsprintf($format,$args);//把参数代入$format中,}$log=date("[Y/m/d H:i:s] ") .$log. PHP_EOL;//加上时间$file='/usr/share/nginx/html/log.log'$fp=fopen($file,'a');fwrite($fp,$log);fclose($fp);returntrue;

}

用法:

1.打印一般变量$a,

log('得到了$a的值:%s',$a );

2 . 打印一个数组$arr

log('%s',print_r($arr,true));

可以对上面的函数进行改进下:

functionlog2($arg){$log= vsprintf('%s', print_r($arg,true));$log=date('[Y/m/d H:i:s]') .'—'.$log. PHP_EOL;$path= dirname(__FILE__) .'/log.log'$fp=file_put_contents($path,$log, FILE_APPEND);returntrue; }$a=[1,23,45,45]; log2($a);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ant简单工程的构建

1.在Ant的官方网站http://ant.apache.org/bindownload.cgi下载Ant最新版本(我下载的是apache-ant-1.8.2-bin.zip),Ant无需安装,直接解压后设置环境变量即可。 2.测试Ant是否安装成功,在控制台运行ant命令,出…

MVC学习四

第七节 讲述了增加model中类的属性,由于数据库中已存在表,表中没有存在新加的列,所以可以删除数据库或者在数据库中新增一列,另可以在controller中新增一个数据库初始化的类,并在Global.asax添加初始化数据库的代码 …

mysqlpump 备份文件压缩对比

mysqldump,使用single-transaction,通过管道使用gzip压缩,20G单数据库备份real8m15.291suser8m39.617ssys0m16.675s备份文件1.43Gmysqlpump,4线程,使用single-transaction,通过管道使用gzip压缩&#xff0c…

如何让Latex公式字体变小

转载:http://blog.sina.com.cn/s/blog_5e16f1770100gdxh.html 第一种方法:用比较笨的方法,一个一个公式用 \begin{small} \begin{equation} \ldots \end{equation} \end{small} 第二种方法:定义新的变量环境 在开始 \newenvironme…

php 正则表达式验证金额,php 正则表达式验证数字

非负浮点数(正浮点数 0):^d(.d)?$正浮点数 ^(([0-9].[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9])|([0-9]*[1-9][0-9]*))$非正浮点数(负浮点数 0) ^((-d(.d)?)|(0(.0)?))$负浮点数 ^(-(([0-9].[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9])|([0-9]*[1-9]…

ASP.NET MVC:会导致锁定的会话

背景 一直没有意识到会话的访问会导致会话锁定,现在想想这样设计是非常合理的,不过某些情况下这样会导致同一个会话的并发访问非常低(只能串行化),好在MS提供了机制让我们控制这种锁。 测试 A页面:缓存写入…

.NET重构(四):窗体继承+模板方法,完美实现组合查询

导读:在机房重构中,有好些个查询都是大同小异,最为显著的就是组合查询了。怎样给自己省事儿,相同的东西能不能重复利用,就成了一个现实的问题。第一遍做机房的时候,使用的更多的是:复制粘贴。学…

github常见操作和常见错误!错误提示:fatal: remote origin already exists.

原文链接:http://blog.csdn.net/dengjianqiang2011/article/details/9260435 如果输入$ git remote add origin gitgithub.com:djqiang(github帐号名)/gitdemo(项目名).git 提示出错信息:fatal: remote or…

云计算的下半场

经常有人说互联网上下半场的区别,大体上上半场烧钱,下半场分出胜负。自打美团王兴抛出互联网的下半场的说法,大家意识到这不仅仅是新美大的下半场,这更是整个互联网行业的下半场。爆炸式的人口红利带来互联网行业上半场的快速增长…

oracle中的l_satids,请问shared pool中的KQR L PO存放哪些数据

ROW CACHE 也叫做 dictionary cache ,缓存数据字典基表如 OBJ$、COL$、IND$、SEQ$的信息以便解析SQL和library cache object。包括 KQR S PO , KQR M PO,KQR L PO , 等KQR > ROW CACHEkqr.h 1323 KSDTRADV("ROW_CACHE&quo…

This task is currently locked by a running workflow and cannot be edited

转自:http://geek.hubkey.com/2007/09/locked-workflow.html 转自:http://blogs.code-counsel.net/Wouter/Lists/Posts/Post.aspx?Listc04a88a9%2Dd138%2D4ac3%2Da2bb%2Db95c9fdd114e&ID118 SPWorkflow.AlertTask()的时候出现“This task is curren…

ETL模型设计

传统的关系数据库一般采用二维数表的形式来表示数据,一个维是行,另一个维是列,行和列的交叉处就是数据元素。关系数据的基础是关系数据库模型,通过标准的SQL语言来加以实现。 数据仓库是多维数据库,它扩展了关系数据库…

《剑指offer》-整数中1出现的次数

题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的…

This is Me!——回顾第一个项目的前前后后

今天终于把论文敲完了,一路走来,颇多感想。遂写下以下诸多文字,以飨读者。 在说这个项目之前,先简单介绍一下我的经历。我叫王财勇,家是山西的,2009年至2013年在新疆大学就读数学专业,也许有人…

从零开始学JavaScript三(变量)

一、变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符。 定义变量时要使用var操作符 如: var message; /*定义一个名为message的变量,该变量…

DES加密过程例解

DES加密算法是最被广泛使用的对称加密算法,通过示例来演示DES、TribleDES(3Key) DES-ECB: 按8字节为单位进行加密,不足8字节补0key: 1111111111111111indata: 2222222222222222 OutData: 950973182317F8…

linux在双系统中消失了,双系统重新安装windows后,ubuntu选项消失

1、首先用LiveCD进入ubuntu2、打开终端,,输入:fdisk -l 查看自己linux的分区情况,我的分了4个区,swap,boot,/,home,对应的分别是:/dev/sda9 swap…

Cydia源局域网化

2019独角兽企业重金招聘Python工程师标准>>> 步骤 在网址根目录创建文件夹cydia,把你的deb文件放到 cydia/debs/ 文件夹下。在终端cd进入cydia文件夹输入命令:dpkg-scanpackages debs /dev/null > Packages输入命令:tar zcvf P…

前缀++ 后缀++ 运算符重载

下面例子程序中 const Fraction operator (int) 中 int不过是个哑元(dummy),是永远用不上的 它只是用来判断++是prefix 还是 postfix 记住,如果有哑元,则是postfix,否则&#xff0c…

固定资产调整对资产折旧的影响

固定资产折旧计提方法 一、原值增加: 1、已摊销资产: 摊销调整时间设在当期:(1078135) 在进行原值增加后,摊销日期不变时,折旧在当月体现。 每月新增月折旧调增金额*(1-残值率)/(折旧年限*12-已提折旧月份的个数) 例&a…