文档章节

可以打印栈信息的日志函数,移动混合开发必备!!!

ios122
 ios122
发布于 2017/05/04 13:00
字数 456
阅读 12
收藏 0

stack-log

可以打印栈信息的日志函数,移动混合开发必备!!!

简介

断点信息,可以反映函数的调用栈,但是不是所有的场景都适合打断点.console 直接输出的日志,可以反映的简单行数信息,但是部分场景需要结合日志所在函数的调用栈来确定某些调试信息.

偶然间发现,可以用 new Error 记录栈结构,只要能适当处理,去除不必要的栈信息,就可以很好地保持 console 日志的连续性和断点调试时函数调用的明晰性.

这是一个有一点小技巧的工具函数.很简单,很实用!

安装

nodejs 环境

npm i stack-log --save

浏览器环境

下载 lib/stack-log.js 到本地,然后:

<script type="text/javascript" src="path/to/stack-log.js"></script>

使用示例

nodejs 示例

const {log} = require("stack-log")

function funcA (){
  funcB()
}

function funcB(){
  funcC()
}

function funcC(){
  log({k:"v"})
}

funcA()


/* 可能的输出:
{"k":"v"}
    at funcC (/Users/yanfeng/Documents/tmp/stack-test/index.js:12:3)
    at funcB (/Users/yanfeng/Documents/tmp/stack-test/index.js:8:3)
    at funcA (/Users/yanfeng/Documents/tmp/stack-test/index.js:4:3)
    at Object.<anonymous> (/Users/yanfeng/Documents/tmp/stack-test/index.js:15:1)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
*/

浏览器 示例

<script type="text/javascript" src="script/stack-log.js"></script>
<script type="text/javascript">
function funcA (){
  funcB()
}

function funcB(){
  funcC()
}

function funcC(){
  log({k:"v"})
}

funcA()
</script>

可能的输出:

{"k":"v"}
    at funcC (file:///Users/yanfeng/Documents/tmp/index.html:12:3)
    at funcB (file:///Users/yanfeng/Documents/tmp/index.html:8:3)
    at funcA (file:///Users/yanfeng/Documents/tmp/index.html:4:3)
    at file:///Users/yanfeng/Documents/tmp/index.html:15:1

© 著作权归作者所有

共有 人打赏支持
ios122
粉丝 72
博文 76
码字总数 132179
作品 3
东城
程序员
打印栈信息的日志函数--stack-log

stack-log,可以打印栈信息的日志函数,移动混合开发必备。 简介 断点信息,可以反映函数的调用栈,但是不是所有的场景都适合打断点。console 直接输出的日志,可以反映简单的行数信息,但是...

ios122
2017/05/04
181
0
itfriday/xxlogger

xxlogger xxlogger是日志打印工具类,提供对java, object-c, c的支持。xxlogger中的xx指某种语言 其中: c目录下的是c语言的实现 oc目录下的是object-c语言的实现 java目录下的是java语言的实...

itfriday
2016/12/05
0
0
用GDB调试程序(四)

查看栈信息 ————— 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。...

nothingfinal
2011/03/06
0
0
全栈必备的技术栈设想

喔家ArchiSelf 参加今年的SDCC确实挺高兴的,向大师Joe Armstrong 当面求教,与周爱民老师同台,在我们的架构师进阶之路专场有4个七零后的老码农,瞬间没有了孤独感,甚至有一点窃窃之喜。 ...

wireless_com
2016/11/20
0
0
在 Linux 服务器上配置 WEB 应用程序的日志打印到指定文件

服务器环境是 RedHat Linux, 其上运行的是 Apache + Tomcat,容器中运行的是我们公司的壹个小型电子商务网站,原来项目里的日志信息都是直接随着 Tomcat 容器壹起打印到 /tomcat/logs/catal...

苗哥
2012/08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js 操作cookie

var cookie = {// 设置cookie方法set:function(key, val, time){// 获取当前时间var date = new Date();// 将date设置为n天以后的时间var expiresDays = time;//...

小丶二
18分钟前
1
0
限制root远程登录 su和sudo命令

9月21日任务 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 对于Linux而言,权限的重要性毋庸置疑!对于普通用户而言无法执行那些只有root用户才能有效的命令,导致工作无法有效进行; 系统...

robertt15
19分钟前
2
0
MQTT协议的初浅认识之通讯级别和持久会话

背景 这是我最近了解MQTT协议的最后一部分内容了,MQTT协议里面的QOS和Keep Alive是两个比较重要的内容。QOS的设置,直接影响了订阅客户端与中间件之间的消息交互行为。而Keep Alive直接影响...

亚林瓜子
21分钟前
1
0
calc

width: calc(100% - 30px); 特别注意:减号左右空格,均不能去掉。 width: calc(100% - 30px);

柴高八斗之父
30分钟前
1
0
Spring Cloud Gateway全局过滤器GlobalFilter:返回消息和重定向

Spring Cloud Gateway的全局过滤器GlobalFilter,顾名思义,声明后会对所有的请求生效,可以用来做权限控制,这里简单记录一下拦截到非法请求后如何返回自定义信息和将请求重定向到指定URL。...

夜雨寄北09
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部