入口文件

//日志记录配置
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的更多相关文章

  1. 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类

    快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...

  2. 解决华为手机不打印Log信息的问题

    在之前安装了Android Studio后,发现了一个很苦恼的事情,就是在程序中的写Log语句,不能正常的在Logcat中打印出来,这对于解决程序bug真是一刀切断,让人无从下手,在各种尝试后,首先我 ...

  3. Android Java层,Native层,Lib层打印Log简介【转】

    本文转载自:https://blog.csdn.net/AndroidMage/article/details/52225068 说明: 这里我根据个人工作情况说明在各个层打印log.如有问题欢迎拍砖 ...

  4. iOS 设备屏幕上实时打印 Log 的小工具

    需求 写这个小工具的想法,主要来源于很多团队都会用友盟.TalkingData 等第三方框架做自定义事件统计:不过统计代码加好之后,没有很好的方法来让测试工程师验证一下事件加上了没有,调用次数有没有重 ...

  5. Android 打印log 在logcat 看不到

    今天调试一个问题,因为是插件,只能通过打印log 定位问题. 但是打印了log 一直没有看到. 代码如下: Log.d("","aaaa24"); 后来发现是需 ...

  6. lua 写逻辑打印log时,打印到一半后停止不再打印,程序停止

    问题描述:ubuntu下用lua开发游戏电子邮件模块,自己测试时向用户推送100封,而用户最多只能有50封.这是调用sysdelete删除一些邮件.当打印log时,打印到一半后程序中途停止.将打印lo ...

  7. Xposed框架Hook Android应用的所有类方法打印Log日志

    本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80954759 在进行Android程序的逆向分析的时候,经常需要Android程 ...

  8. 通过adb命令打印log

    1.adb logcat  --打印当前设备上所有日志 2.adb logcat | findstr *** --过滤仅含***的日志 3.adb logcat *:W  --过滤打印严重级别W及以上 ...

  9. Postman----打开postman console控制台,查看接口测试打印log

    经常在脚本中使用变量时,你可能需要看到变量获取到的值,你可以使用Postman Console去实现的.操作步骤:应用菜单-->View--->Show Postman Console,去 ...

  10. Android.util.Log 关于Android开发中打印log

    日常Android开发真机调试过程经常会遇到系统日志过多过快,想看的内容一闪而过的问题.而自定义些log可以很好的解决这些问题.   代码中添加 log  androidsdk中提供了log输出的ap ...

随机推荐

  1. 集成ShareSDK里报错NSConcreteMutableData wbsdk_base64EncodedString]

    百度一大堆都说在这个里加个-ObjC,然后加了还是有问题 最近谷歌了下才要加入这个才正常了,国内的开发者只是一知半解的…………

  2. Robot Framework--03 案例及资源区

    转自:http://blog.csdn.net/tulituqi/article/details/7585387 这个区域是我们案例结构设计的一个关键区域,这里可以清晰的看到我们整个工程的结构. 还记 ...

  3. python 包管理工具

    python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...

  4. MySQL数据导出与导入

    工具 mysql mysqldump 应用举例 导出 导出全库备份到本地的目录 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines -- ...

  5. MVC缓存OutPutCache学习笔记 (二) 缓存及时化VaryByCustom

    <MVC缓存OutPutCache学习笔记 (一) 参数配置> 本篇来介绍如何使用 VaryByCustom参数来实现缓存的及时化.. 根据数据改变来及时使客户端缓存过期并更新.. 首先更 ...

  6. AndroidStudio-使用Translations Editor

    前言 如果你的App支持多语言,你需要正确的管理你的翻译字符串资源.Android Studio提供了翻译编辑器使更容易的查看和管理翻译资源. 关于翻译编辑器 翻译资源存储工程的多个目录下的多个XML ...

  7. php开发工具之火狐浏览器插件

    相信做开发的都有一种火狐情怀吧!  下面来介绍下一些自己在php开发工程中用到几个火狐浏览器插件. 1.[firebug]: 这个插件可以说是一个神奇,功能不用过对介绍. 2.[hostAdmin]: ...

  8. sql字段中逗号分隔字符串的判断

    例如,数据表t1中有一个字段PlayTheme存放的数值类似如下: 第一行:1,2,12 第二行:22,222,2222 第三行:1,2 第四行:2,12 第五行:2 如果你想取出PlayTheme字 ...

  9. web 开发前端学习

    调试插件:http://www.getpostman.com/ http://bootstrap.evget.com/javascript.html bootstrap:  http://www.bo ...

  10. 2013长沙赛区现场赛 J - Josephina and RPG

    J - Josephina and RPG Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...