Angular,刷新源

时间:2015-01-17 12:27:04

标签: angularjs unix logging

我在寻找这种情况的答案时遇到了麻烦。

我们的系统服务器具有不断更新的日志。 日志的视图很糟糕!而且非常凌乱。 所以我想构建一个显示日志的Web应用程序,并提供过滤选项以使我们的生活更轻松:)。

所以这就是我的计划: 1)我将加载最多50个日志行(因此打开时不会空白); 2)我会继续为控制台写的每一行提取信息。

那么,我该如何处理第2步?如何与服务器日志同步?

此外,当我加载50行时,可能会在控制台中放置一个新行alrdy,这会降低日志查看器中提供的数据的完整性。

BTW我使用PuTTY查看日志控制台。

请原谅我的英语不好。谢谢你提前:))

1 个答案:

答案 0 :(得分:0)

好的,所以如果你打算用Angular做这个完全客户端的话,你需要:

  • 创建一个API,一些可以从中获取日志的端点/网址。像http://www.example.com/my-console-feed/这样的东西。你可能已经有了这个。
  • 以您选择的间隔使用角度$interval轮询服务器。

如果您使用网络套接字操作,也许可以进行一些连续的输入。

所以你可以建造一个看起来像这样的工厂:

(function() {

  'use strict';


  angular
    .module('myApp')
    .factory('pollingFactory', pollingFactory);


  function pollingFactory($http, $interval) {
    return function() {

      // 60000 is 1 minute
      var duration = 60000;

      // log API endpoint
      var myLogAPIEndpoint = 'http://www.example.com/my-console-feed/';

      // this will hit the API every minute
      $interval(function() {

        // poll the api for new logs
        $http({
          url: myLogAPIEndpoint,
          method: 'GET'
        })
       .success(function(response) {
         // do something with the response
       })

      }, duration); 

    }
  }


})();

如果您打算这样做,我会使用$ q作为promise库,并在您的控制器中,当promise解析时,使用新日志更新范围内的模型。如果您使用的是ng-repeat,如果日志具有唯一ID,我还建议您使用track by来提高性能。

以下是a fiddle每3秒轮询一次API。