Erlang - 入门之一日志系统如何打印输出使用lager框架

在合适的地方插入一句代码即可: 

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博客

猜你喜欢

转载自blog.csdn.net/avi9111/article/details/128014727