q1208c 发表于 2014-08-26 15:49

有人知道用 erlang 实现类似 tail 的么?

RT.

这应该是监控系统的一个部分. 有人知道现在有没有人实现了这样的功能呢?

shijiang1130 发表于 2014-08-27 09:17

q1208c 发表于 2014-08-26 15:49 static/image/common/back.gif
RT.

这应该是监控系统的一个部分. 有人知道现在有没有人实现了这样的功能呢?https://github.com/richcarl/file_monitor是类似这样的么?

q1208c 发表于 2014-08-27 11:00

回复 2# shijiang1130

没细看代码, 单看 readme 的话, 好象不是太一样.

我要实现的, 是 tail 的 差不多全部功能. 也就是可以指定输出一个文件的部分或全部内容, 并且可以跟踪文件的追加.

当然, 这只是第一步, 后面要做的工作是跟踪log的滚动. 也就是说, 不管log滚动了多少个文件, 都要从最早的一个文件开始,
一条条把log读出来并发送出去, 同时,要记录已经发送过的log, 不要重复发送相同的内容.

可以认为是异步的消息处理. 基于日志的.
   

shijiang1130 发表于 2014-12-27 00:59

-module(t).
-compile(export_all).
-include_lib("kernel/include/file.hrl").

start() ->
                ets:new(?MODULE,),
                ets:insert(?MODULE,{t,"ini"}),
                ets:insert(?MODULE,{size,0}),
      spawn(fun()->timer() end).

cancel(Pid) -> Pid ! cancel.

timer() ->
      receive
                cancel ->
                        void
                after 5000 ->
                        do_check(),
                        timer()
                end.

do_check()->
        case file:read_file_info("t.txt") of
                {ok,Exist}->
                        F = Exist#file_info.mtime,
                        [{t,G}]= ets:lookup(t,t),
                                case F =:= G of
                                        true ->
                                                ok;
                                        false ->
                                                [{size,O}]= ets:lookup(t,size),
                                                N=Exist#file_info.size,
                                                L = N - O,
                                                ets:insert(?MODULE,{t,F}),
                                                ets:insert(?MODULE,{size,N}),
                                                {ok,S}=file:open("t.txt",[]),
                                                {ok,C}=file:pread(S,O,L),
                                                io:format("NewContent:~p~n",)
                                end;
                _->
                error
        end.

q1208c 发表于 2016-04-14 10:49

回复 4# shijiang1130

好象略复杂。 没太看懂。

:em15:


   
页: [1]
查看完整版本: 有人知道用 erlang 实现类似 tail 的么?