打印log
入口文件 //日志记录配置
if (!defined('DS')) {
define('DS', '/');
}
if(!defined('APP_PATH_LOG')){
define('APP_PATH_LOG', LOG_PATH.'admin/');
}
if(!defined('LOG_LEVEL')){
define('LOG_LEVEL', LOG_INFO);
}
function log_message($msg, $level = LOG_INFO, $group = '') {
$args = func_get_args ();
if (! (is_int ( $level ) && $level <= LOG_DEBUG && $level >= LOG_EMERG)) {
return;
}
if (defined ( 'LOG_LEVEL' )) {
$logLevel = LOG_LEVEL;
} else {
$logLevel = LOG_ERR;
}
$logTypes = array (
LOG_DEBUG => 'DEBUG', //
LOG_INFO => 'INFO', //
LOG_NOTICE => 'NOTICE',
LOG_WARNING => 'WARNING',
LOG_ERR => 'ERR',
LOG_CRIT => 'CRIT',
LOG_ALERT => 'ALERT',
LOG_EMERG => 'EMERG' //
); $logType = $logTypes [$level];
//取调用者的方法名
$backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS & DEBUG_BACKTRACE_PROVIDE_OBJECT, 2); // $msg=sprintf('[%s:%s] ', get_called_class(), ''). $msg;
if(!empty($backtrace) && isset($backtrace[1])){
$backtrace_caller = $backtrace[1];
$call_class_name = isset($backtrace_caller['class']) ? $backtrace_caller['class'] : '';
// $call_line = isset($backtrace_caller['line']) ? $backtrace_caller['line'] : '';
$call_function_name = isset($backtrace_caller['function']) ? $backtrace_caller['function'] : '';
$msg=sprintf('[%s:%s] ', $call_class_name, $call_function_name). $msg;
} $logdir = LOG_PATH;
if (defined ( 'APP_PATH_LOG' )) {
$logdir = APP_PATH_LOG;
} $tmp_msg = '['.date ( 'Y-m-d H:i:s' )."] [{$logType}]";
if(!empty($group)){
$tmp_msg.=" - [{$group}]";
}
$msg = $tmp_msg." - {$msg}\r\n"; //线上文件日志不记录 debug级别日志, 当前日志级别 <= 设定最级别
if ($level <= $logLevel) {
$fn = date ( 'Ymd' ) . ".log"; $fileName = $logdir . DS . $fn; if (! is_dir ( $logdir )) {
mkdir ( $logdir, 0755, TRUE );
}
$fileName = $logdir . DS . $fn;
if (! file_exists ( $fileName )) {
error_log ( $msg, 3, $fileName );
@chmod ( $fileName, 0644 );
} else {
error_log ( $msg, 3, $fileName );
} if (defined ( 'LOG_STDOUT' )) {
echo $msg;
}
}
}
log_message('specialInsertingData:'. json_encode($specialInsertingData),LOG_INFO);
打印log的更多相关文章
- 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类
快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...
- 解决华为手机不打印Log信息的问题
在之前安装了Android Studio后,发现了一个很苦恼的事情,就是在程序中的写Log语句,不能正常的在Logcat中打印出来,这对于解决程序bug真是一刀切断,让人无从下手,在各种尝试后,首先我 ...
- Android Java层,Native层,Lib层打印Log简介【转】
本文转载自:https://blog.csdn.net/AndroidMage/article/details/52225068 说明: 这里我根据个人工作情况说明在各个层打印log.如有问题欢迎拍砖 ...
- iOS 设备屏幕上实时打印 Log 的小工具
需求 写这个小工具的想法,主要来源于很多团队都会用友盟.TalkingData 等第三方框架做自定义事件统计:不过统计代码加好之后,没有很好的方法来让测试工程师验证一下事件加上了没有,调用次数有没有重 ...
- Android 打印log 在logcat 看不到
今天调试一个问题,因为是插件,只能通过打印log 定位问题. 但是打印了log 一直没有看到. 代码如下: Log.d("","aaaa24"); 后来发现是需 ...
- lua 写逻辑打印log时,打印到一半后停止不再打印,程序停止
问题描述:ubuntu下用lua开发游戏电子邮件模块,自己测试时向用户推送100封,而用户最多只能有50封.这是调用sysdelete删除一些邮件.当打印log时,打印到一半后程序中途停止.将打印lo ...
- Xposed框架Hook Android应用的所有类方法打印Log日志
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80954759 在进行Android程序的逆向分析的时候,经常需要Android程 ...
- 通过adb命令打印log
1.adb logcat --打印当前设备上所有日志 2.adb logcat | findstr *** --过滤仅含***的日志 3.adb logcat *:W --过滤打印严重级别W及以上 ...
- Postman----打开postman console控制台,查看接口测试打印log
经常在脚本中使用变量时,你可能需要看到变量获取到的值,你可以使用Postman Console去实现的.操作步骤:应用菜单-->View--->Show Postman Console,去 ...
- Android.util.Log 关于Android开发中打印log
日常Android开发真机调试过程经常会遇到系统日志过多过快,想看的内容一闪而过的问题.而自定义些log可以很好的解决这些问题. 代码中添加 log androidsdk中提供了log输出的ap ...
随机推荐
- Redis总结(一)Redis安装
最近项目中需要使用Redis,刚好这两天有时间,便总结记录一下Redis的安装,以及如何在.NET中使用Redis. Redis是一个用的比较广泛的Key/Value的内存数据库.目前新浪微博.Git ...
- 序列化与反序列化成XML
http://blog.itpub.net/12639172/viewspace-490786/ 现在XML都普遍的用到了很多地方,它的平台无关.方便.结构化.适用性的特点让人不得不去接受它,在C#中 ...
- Class.forName()用法详解
Class.forName()用法详解 标签: classjvmjdbc数据库documentationjava 2012-03-29 09:39 40414人阅读 评论(8) 收藏 举报 分类: ...
- GoLang之方法与接口
GoLang之方法与接口 Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承.虚函数.构造函数和析构函数.隐藏的this指针等. 方法 Go 语言中同时有函数和方法.方法就是一个包含了接受者的函数 ...
- jquery 判断网络图片,或网络文件是否存在
$.ajax({ url : picSrc, async : false, type : 'HEAD', error : function() { picSrc = "https://ss0 ...
- 我的J2EE学习历程
由于最近手头没有JSP项目,所以暂停Hibernate和Spring的研究.个人觉得只有发现某个东西的不足之后再去学习新的东西来弥补这个不足比较好.就好比,最开始在JSP页面里面写Java代码,每次操 ...
- Apache CXF实现WebService入门教程(附完整源码)
Apache CXF实现WebService非常简单实用,只需要几步就可以实现一个简单的web service. 首先我们需要新建一个maven项目,在pom中添加依赖和jetty作为测试的web s ...
- python中raw_input() 与 input()
参考网址:http://www.cnblogs.com/way_testlife/archive/2011/03/29/1999283.html 在python中如何接收一个输入的字符串. 举个例子: ...
- \r,\n,\r\n的区别
http://www.studyofnet.com/news/285.html \n是换行,英文是New line,表示使光标到行首\r是回车,英文是Carriage return,表示使光标下移一格 ...
- MFC CStatic类动态创建
如果我使用下面风格: m_PictureCtrl.Create(NULL, WS_EX_TRANSPARENT|WS_CHILD|WS_VISIBLE|WS_TABSTOP|SS_OWNERDRAW, ...