在合适的地方插入一句代码即可:
lager:error("Some Message"),
就这样,谢谢阅读
。。。。。。。
。。。。。。。。。
。。。。。。。。。。。
。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。
没有什么比从直接“”拷贝“”代码的方法,能更快“”掌握“”代码
下面都只是很无聊的“”程序开发“”,要是你懂ErLang可不必往下看;要是你不懂往下看了也不会懂
问题零:字串的拼接
这里没有lager的原理,也没有errlang的原理,因为毕竟哥不懂服务器
但是如果你和哥的情况一样:有一个项目,能编译,能运行,但就是想改亿点点逻辑,那么你确实需要打印输出
%一开始我参考了这段代码
?ERROR("node_kf start ~p port=~p",[Ip,Port]),
所以写上 "~p" 相当于 format 字串了
%% 所以把一段打印代码改成。。。。。。
%% 当然,前面你需要先引入lager:-include("xxxxx.hrl").
start([NodeId]) ->
Ip = config:get_server_ip(),
Port = config:get_server_port(),
% lager:error("node_kf Start() ip===="),
lager:error("node_kf Start() ip====nodeid=~p",[NodeId]),
打印最终输出
[error] <0.112.0>@node_kf:start:21 node_kf Start() ip====nodeid=100
又因为另外一段代码,我们知道了
SqlFmt = <<"REPLACE INTO `base_node_kf` (`node_id`, `node`, `cookie`, `ip`, `time`) VALUES (~p, '~s', '~s', '~s', ~p)">>,
~s | 字串 |
~p | 数字 |
问题一:Lager未定义
一开始在 preload() 插入这句代码
会提示 undefine Lager ["Some Message"]
最终,插入前后如下
%% @doc 启动游戏
start() ->
preload_codes(),
start_apps(?APPS),
lager:error("Some Message"),%插入一句
ok.
本来不想做什么全栈工程师
由于突然好像有2个项目都是使用Erlang作为服务器
所以年底了还是随便学习一下,golang比较火,skynet上升期,erlang老而不倒
(2022.)以上成熟三大服务器架构应该是肯定的 ,老稳了
掌握了c++,golang,skynet,erlang等3种语言及以上的老哥才能算是全栈六边形战士,
哥并不是什么全栈,就浅浅地说下一些“”概念“(小学生)
当你要使用一个功能,或调用一个api,最简单的方法可能是:
0)知道自己在干啥(可能并没有可视化,基础软件一点不直观)
1)有一个已经稳定开发的环境(源码)
2)一个lager日志库(lib),并引入
3)调用它
4)灵活地封装它
%一旦你用lager构建了你的代码并启动了lager应用程序,你就可以通过以下操作来生成日志消息:
%lager:error("Some message")
问题二:
某个项目的封装
?ERROR("start_client(~p) error !~nType:~p, Error:~p", [Sock, Type, Error])
问题三:
在配置写了console输出,实际并不能
#Lager's console backend is incompatible with the 'old' shell, not enabling it
其他参考日志 lager 文章:
解析Erlang日志组件lager的监督树和模块 - 程序员大本营
Lager使用说明_mt4836的博客-CSDN博客_erlang lager
Erlang Behaviour行为模式之一:Supervisor之说明_自不凡的博客-CSDN博客