以下为我自己写的一个写日志的类,比较简洁。

<?php
class Log
{
/**
* @Purpose : 写日志
* @Method Name : writeLog()
* @parameter : string $explain 错误说明
* string $error_location 错误位置
* string $dir 保存日志的文件夹名
* @return : (无)
*/
function writeLog($explain,$error_location,$dir){
if (empty($dir)) return false;
$error_msg = "";
if(strlen($explain) != 0){
$error_msg .= '['.date("Y-m-d H:i:s",time()).' error_explain: ] '. $explain;
}
if(strlen($error_location) != 0){
$error_msg .= ' [ error_location: ] '. $error_location;
}
if(! is_dir($dir)){
mkdir($dir,0777);
system("chown root.root {$dir} -R;chmod 777 {$dir} -R"); // 修改目录所有者,所属组和权限
}
$file_name = date('Y-m-d',time()).'.txt';
$file_name = $dir.$file_name;
if(! $file_name == false){
system("chown root.root {$file_name} -R; chmod 777 {$file_name} -R");
$handle1 = fopen($file_name,'w');
fwrite($handle1,"//log file , please do not modify me! \n");
fwrite($handle1,'//Created on '.date('M j, Y, G:i',time())."\n"); // 类似于这种格式 :Created on Jun 26,2017, 11:22
fclose($handle1);
}
if(is_file($file_name)){
$handle2 = fopen($file_name,'a');
fwrite($handle2,"$error_msg \n");
fclose($handle2);
}
/*
最后打印出来的日志类似于这样:
//log file , please do not modify me!
//Created on Jun 26, 2017, 11:34
[2017-06-26 11:34:29 error_explain: ] test_explain [ error_location: ] the error at E:\www\test\index.php line 55
*/
} /**
* @Purpose : 获取错误所在位置
* @Method Name : getErrorLine()
* @Parameters : string $line 行号
* @Return array : $error_line 错误所在位置
*/
public function getErrorLine($line)
{
$error_line = __FILE__ . ' line ' . $line ;
return ' '.$error_line;
}
}
$Log = new Log();
$Log -> writeLog('test_explain','the error at' . $Log -> getErrorLine(__LINE__),'E:/www/test/log/');

下面这个是一个单独的方法:

    /**
* @purpose : 写日志
* @param : string $data : 写入的数据
* : string $logDir : 日志目录
* : string $file : 文件名前缀
* @Author : daicr
* @Time : 2018-11-20
*/
public function writeLog($data,$logDir='/tmp/', $fileName='') {
$write_line = "";
$now = date('Y-m-d H:i:s',time());
if(strlen($data)>0) {
$write_line .= "[" . date('Y-m-d H:i:s',time()) . "]" . $data;
}
$dir = $logDir;
if(!is_dir($dir)) {
mkdir($dir, 0777);
}
system("chown justswitch.justswitch {$dir} -R; chmod 777 {$dir} -R;"); $fileName = $fileName.date('Y-m',time());
$fileName = $dir.$fileName.".txt";
if (false==file_exists($fileName)){
if($fp = fopen("$fileName", 'w')) {
system("chown justswitch.justswitch -R $dir;chmod 777 $dir -R;");
fwrite($fp, "\n//JUST-CALL! log file, DO NOT modify me!\n".
"//Created on ".date("M j, Y, G:i")."\n");
fclose($fp);
}
}
if($fp = fopen("$fileName",'a')) {
fwrite($fp,"$write_line\n");
fclose($fp);
} system("chown justswitch.justswitch {$fileName};chmod 777 {$fileName};");
}

system($commond, $return_var)

commond   : 要执行的命令

return_var  : 外部命令执行后要返回的状态

成功则返回命令输出的最后一行,失败则返回 false

本文为原创作品,如有转载请注明出处http://www.cnblogs.com/chrdai/p/7082146.html

最新文章

  1. 关于如何提高Web服务端并发效率的异步编程技术
  2. boost之mutex scoped_lock
  3. c 的ui
  4. Ajax - 手册
  5. 使用httperrequest,模拟发送及接收Json请求
  6. ios ALAssetsLibrary简单的使用
  7. std::shared_ptr&lt;void&gt;的工作原理
  8. 深入探索.NET框架内部了解CLR如何创建运行时对象
  9. HTML5中 基本用法及属性 韩俊强的博客
  10. ELK 架构之 Logstash 和 Filebeat 配置使用(采集过滤)
  11. 微擎where范围查询in
  12. Reflections 介绍
  13. 类型和原生函数及类型转换(三:终结js类型转换)
  14. 项目(一)ftp搭建
  15. Django 基于类的通用视图
  16. ros 运行rviz时出现 QXcbConnection: XCB error: 148 错误 解决方法
  17. Gauss error function
  18. [转]Hadoop Hive sql语法详解
  19. laravel 参数配置
  20. android基础知识:SharedPreferences和PreferenceActivity

热门文章

  1. linux更换yum源
  2. mysql主从配置 转自http://www.cnblogs.com/sustudy/p/4174189.html
  3. 转载:第2章 Nginx的配置 概述《深入理解Nginx》(陶辉)
  4. Go语言规格说明书 之 变量声明(Variable/Short variable declarations)
  5. Ant+Jmeter自动化接口测试的部署 及 部署过程中的坑
  6. TP5.1:request请求对象(使用四种方式获取)
  7. 【python】正则表达式中的转义问题
  8. Laravel collection 报错 join(): Invalid arguments passed
  9. 步步为营-36-ADO.Net简介
  10. 一.hadoop入门须知