1 <?php
 2
 3 class Logs{
 4     private $_filepath;   //文件路径
 5     private $_filename;   //文件名
 6     private $_filehandle; //文件引擎
 7
 8
 9      public function Logs($dir = null,$filename = null){
10
11      $this->_filepath = empty($dir) ? '': $dir;
12      $this->_filename = empty($filename) ? date('Y-m-d',time()).'.log' : $filename;
13
14     //创建路径
15      $path = $this->_createPath($this->_filepath,$this->_filename);
16
17      if(!$this->_isExist($path)){//如果日志目录不存在
18
19         if(!empty($this->_filepath)){  //如果路径不存在
20
21           if(!$this->_createDir($this->_filepath)){//创建路径
22            die("创建日志目录不成功");
23           }
24         }
25
26         if(!$this->_createLogFile($path)){//创建日志
27          die("创建日志文件不成功");
28         }
29      }
30
31
32      $path = $this->_createPath($this->_filepath,$this->_filename);
33      //创建日志文件
34      $this->_filehandle=fopen($path,"a+");
35      }
36
37
38      public function setLog($log) //写日志
39     {
40          //写日志
41          $str = "";
42          if(is_array($log)){
43             foreach($log as $k => $v){
44                $str .= $k." : ".$v."\n";
45             }
46          }else{
47             $str = $log."\n";
48          }
49
50
51         if(!fwrite($this->_filehandle,$str)){//写日志
52             die("写日志错误");
53         }
54      }
55
56
57      private function _isExist($path){
58      return file_exists($path);
59      }
60
61
62      private function _createDir($dir){
63          return is_dir($dir) or ($this->_createDir(dirname($dir)) and mkdir($dir, 0777));
64      }
65
66
67      private function _createLogFile($path){
68          $handle=fopen($path,"w"); //
69          fclose($handle);
70          return $this->_isExist($path);
71      }
72
73
74      private function _createPath($dir,$filename){
75         if(empty($dir)){
76         return $filename;
77         }else{
78         return $dir."/".$filename;
79         }
80      }
81
82
83      function __destruct(){
84      //关闭日志
85      fclose($this->_filehandle);
86      }
87  }
88 ?>

转载于:https://www.cnblogs.com/etodream/p/3937988.html

PHP创建日志记录(已封装)相关推荐

  1. keil debug如何在watch直接修改变量值_python日志记录系列教程,内置logging模块(一),直接使用logging模块的基础日志记录

    前言:成熟的软件开发不可避免的要进行日志记录,python内置模块logging提供了强大的日志记录能力,本文将从多个角度,由浅入深的介绍logging的常见使用方法和一些基本概念,本此系列文章分为两 ...

  2. 如何在.NET中启用程序集绑定失败日志记录(Fusion)

    如何在.NET中启用程序集绑定失败日志记录(Fusion)? #1楼 如果您已经启用了日志记录,并且在Windows 7 64位上仍然出现此错误,请在IIS 7.5中尝试: 创建一个新的应用程序池 转 ...

  3. springmvc+log4j操作日志记录,详细配置

    没有接触过的,先了解一下:log4j教程 部分内容来:log4j教程 感谢! 需要导入包: log包:log4j-12.17.jar 第一步:web.xml配置 <!-- log4j配置,文件路 ...

  4. 数据库MySQL/mariadb知识点——日志记录(2)二进制日志

    二进制日志 记录已提交事务导致数据改变或潜在导致数据改变的SQL语句,通过"重放"日志文件中的事件来生成数据副本,不依赖存储引擎类型. 开启二进制日志,默认是关闭的,二进制日志和数 ...

  5. 在.NET Core日志记录中使用Trace和TraceSource

    目录 介绍 背景 使用代码 基本的 文件中配置 跟踪(Trace)和跟踪源(TraceSource) 内置跟踪侦听器 LoggerTraceListener Harmony中的Trace,TraceS ...

  6. 一文带你扫盲日志记录的基础知识

    文章目录 一.日志记录入门 二.日志记录域 三.日志记录安全使用场景 四. 设计.实现和测试注意事项 五. 要记录的事件 六.事件属性 七.使用 OWASP 进行安全日志记录 监控应用程序基础结构的健 ...

  7. 如何使用Quartz Scheduler和日志记录创建Web应用程序

    我有时会在Quartz Scheduler论坛中为用户提供帮助. 有时,有人会问他/她如何在Web应用程序中设置Quartz. 实际上,这是一件相当简单的事情. 该库已经带有一个ServletCont ...

  8. 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。

    24-Jul-2022 17:18:15.259 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.s ...

  9. windows log日志分割_如何将日志记录到 Windows事件日志 中

    每当出现一些未捕获异常时,操作系统都会将异常信息写入到 Windows 事件日志 中,可以通过 Windows 事件查看器 查看,如下图: 这篇文章将会讨论如何使用编程的方式将日志记录到 Window ...

最新文章

  1. 解析|2G~5G与未来天线技术!
  2. kafka副本注意点
  3. NgRx 里 first 和 take(1) 操作符的区别
  4. less,more,view一个文件时中文可以正常显示,可是VI却显示乱码呢?
  5. MyBatis(五)------MyBatis配置
  6. SQLMAP安装及使用教程
  7. centos 7 安装韩文字体
  8. 在RHEL6上针对rm命令做审计
  9. 原来这就是公文写作总结类模板和计划类模板
  10. hdu 6080 度度熊保护村庄(floydS使用技巧)
  11. 怎么取消两台计算机共享,小编教你两台电脑如何共享文件
  12. git使用命令行首次提交代码
  13. C语言经典面试题10道(七)
  14. 管人用人育人留人之道-海潮效应
  15. 【面试总结】涵盖1-3年Java程序员必须精通的面试技巧
  16. 阿里云的NoSQL存储服务OTS的应用分析
  17. resultful规范使用
  18. python整形怎么切片_遥感影像切分切片
  19. 移动端使用fiddler抓包步骤
  20. glusterfs 文件服务器 搭建

热门文章

  1. Python链接MySQL
  2. 对 makefile 中 .SECONDARY 的学习体会
  3. 算法导论Java实现-构建MaxHeap
  4. python selenium error “Geckodriver executable needs to be in PATH”
  5. 报表在vista和win7下无法浏览应用的解决办法
  6. 转 The connection to adb is down, and a severe error
  7. 给小孩发布一个有趣的网站 在线动物园
  8. [转载]python optionparser1
  9. 在Spring中采用声明式方法对Hibernate和JDBC进行统一的事务配置(AOP)
  10. 如何为ccflow工作流引擎增加一个优先级PRI?