需求:在开发及测试过程中需要打印日志,并且可以将日志内容打印到指定文件,这样方便查看。

过程:

1. 打开think\Log文件,在该文件中添加一个静态方法,代码如下:

/**
* @param $mark 备注
* @param $log_content 日志内容
* @param string $fname 文件名
*/
public static function mylog($mark, $log_content, $fname = "")
{
$max_size = 30000000; //字节
if ($fname == "") {
$log_filename = RUNTIME_PATH . '/log/' . date('Ym-d') . ".log";
} else {
$log_filename = RUNTIME_PATH . '/log/' . $fname . ".log";
} if (file_exists($log_filename) && abs(filesize($log_filename)) > $max_size) {
//当日志文件过大,移动文件并重命名
rename($log_filename, dirname($log_filename) . DS . date('Ym-d-His') . $fname . ".log");
} $t = microtime(true);
$micro = sprintf("%06d", ($t - floor($t)) * 1000000);
$d = new \DateTime (date('Y-m-d H:i:s.' . $micro, $t));
if(is_array($log_content)){
$log_content = JSONReturn($log_content);
} file_put_contents($log_filename,
' ' . $d->format('Y-m-d H:i:s u') . " key:" . $mark . "\r\n" . $log_content . "\r\n------------------------ --------------------------\r\n",
FILE_APPEND);
}

2. 使用:

在控制器中引入Log类: use think\Log;

调用方法: Log::mylog("info:", JSONReturn($info), "admin_index");

3. 注意:JSONReturn()方法是放在了common.php文件中,代码如下:

function JSONReturn($result)
{
return json_encode($result,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}

TP5日志打印方法封装的更多相关文章

  1. Xcode最好用的日志打印方法

    一般打印日志都是用的系统自带的NSLog来打印的,假如项目做完了,要上线了,这些打印的日志就会很浪费性能,网上有很多的解决办法,我也是感觉网上的还是有点不方便,所以就自己又修改了一下,分享给大家. 网 ...

  2. Java日志打印方法

    一.使用log4j打印日志 1. 下载log4j.jar和commons-logging.jar.     log4j.jar下载地址:http://logging.apache.org/log4j/ ...

  3. python 以单例模式封装logging相关api实现日志打印类

    python 以单例模式封装logging相关api实现日志打印类   by:授客QQ:1033553122 测试环境: Python版本:Python 2.7   实现功能: 支持自由配置,如下lo ...

  4. Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件

    Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out ...

  5. 采坑复盘:logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名

    问题: logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名 原因: logging记录的是第一个函数执行所在的文件,那用封装的函数,首先执 ...

  6. 超高逼格Log日志打印

    代码地址如下:http://www.demodashi.com/demo/12646.html 前言 Log日志的打印一直是一个比较头疼的事,怎样才能让自己的log显示更多信息,怎样才能让自己的log ...

  7. nginx反向代理nginx,RealServer日志打印真实ip

    title: nginx反向代理nginx,RealServer日志打印真实ip date: 2016-05-11 19:15:37 tags: --- nginx反向代理nginx,RealServ ...

  8. android的Log日志打印管理工具类(一)

    android的Log日志的打印管理工具类: package com.gzcivil.utils; import android.util.Log; /** * 日志打印管理 * * @author ...

  9. tp5 日志管理

    日志驱动 日志可以通过驱动支持不同的方式写入,默认日志会记录到文件中,系统已经内置的写入驱动包括 File.Socket,如果要临时关闭日志写入,可以设置日志类型为Test即可,例如: 'log' = ...

随机推荐

  1. 排序算法-希尔排序(Java)

    package com.rao.sort; import java.util.Arrays; /** * @author Srao * @className ShellSort * @date 201 ...

  2. MapReduce running in uber mode (jvm重用)

    原文 http://blog.csdn.net/samhacker/article/details/15692003 yarn-site.xml  主要是这几个参数 - mapreduce.job.u ...

  3. Bring JavaScript to your Java enterprise with Vert.x

    转自:https://opensource.com/article/18/4/benefits-javascript-vertx If you are a Java programmer, chanc ...

  4. TensorFlow分布式训练MNIST分类器

    http://c.biancheng.net/view/2004.html 本节以分布式方式训练完整的 MNIST 分类器. 该案例受到下面博客文章的启发:http://ischlag.github. ...

  5. java 动态数组

    package testjavapro; import java.util.*; public class testjava { public static void main(String args ...

  6. Web中线程与IIS线程池自动回收机制

    开发Web项目后,部署到 IIS上 ,运行一直稳定,当Web程序中加入了定时任务,或者线程之类的机制后,第二天发现悲催了,定时任务并没有执行,此时重新登录一下网站,定时任务又重新执行.原来IIS默认有 ...

  7. .netcore使用MimeKit发送邮件

    以163邮箱为例,借助MimeKit nuget安装:MimeKit类库,源码地址:https://github.com/jstedfast/MimeKit 发送方法如下: #region 邮件发送 ...

  8. elasticsearch容量规划

    https://docs.bonsai.io/article/123-capacity-planning Capacity Planning Capacity planning is the proc ...

  9. 【Kubernetes学习之三】Kubernetes分布式集群架构

    环境 centos 7 一.Kubernetes分布式集群架构1.Kubernetes服务注册和服务发现问题怎么解决的?每个服务分配一个不变的虚拟IP+端口, 系统env环境变量里有每个服务的服务名称 ...

  10. LRU缓存简单实现

    缓存接口定义 /** * 缓存接口 * * @author zhi * */ public interface ICache<K, V> { /** * 添加缓存数据 * * @param ...