2

ほぼ6か月前、stackoverflowについて「ログ分析に役立つソフトウェア?」という質問をしました。

先読みする前に、その質問を見てください。

現在、タイムスタンプに基づいてログファイルを混合し、それらを優れたUIで表示できる優れたソフトウェアがないことが判明しました。

私は率先して何かを開発し、完成したらそれをオープンソースにしたかったのです。

以前は、c ++ですばやく汚いコードを記述して回避しました。これにより、タブで区切られたファイル(csvのようにタブで区切られます)が生成され、後でExcelで開きます。

次の理由でc++コードに満足していません。1。後で出力ファイルを表示するのはExcelに完全に依存しています。2. UIが含まれていないため、毎回コマンドラインを作成するのは簡単ではありません。3.コマンドラインの学習曲線のため、他のチームメンバー(および世界)とあまり共有できません。

上記の理由(およびその他のいくつかの理由)から、私はそれをWebソリューションとして開発することを考えていました。そうすれば、作業インスタンスを全員と共有できます。

私が念頭に置いているのは、次のようなWebベースのソリューションです。

  • ユーザーは、HTML5のファイルAPIを使用して入力ログファイルを提供できるようになります。
  • そして、ユーザーはおそらく各ログファイルに関連付けられたタイムスタンプの形式を教えてくれるでしょう。
  • その後、javascriptはそれらのログファイルを処理して、テーブル内の混合HTML出力にします。

私はWebベースのテクノロジーの初心者です。だから私はこれがそれについて行くための最良の方法であるかどうかを決定するのにあなたの助けが必要ですか?

Webソリューションが必要ですが、それはユーザーがバックエンド処理のためにログファイルをアップロードすることを意味するわけではありません。Webベースのクライアントのみのソリューションが必要です。

ご入力いただきありがとうございます。

編集: Raynosによる以下のコメントに基づく

@bitsブラウザは大量のデータを処理するためのものではないことに気づきました。stackoverflow.com/questions/4833480/…がありました。これは、これが問題を引き起こす可能性があることを示しています。

ブラウザでこれを行うのは最善の策ではないと思います。おそらく、バックエンドベースのソリューションを検討する必要があります。何かアイデアや提案はありますか?

4

2 に答える 2

3

タイムスタンプのリストを含むn個のファイルを、その場で表示されるが差分では解析されない追加のデータを含む、ある順序で取得するオンライン差分ツールを探しています。

ファイルのアップロードには

<input id="upload" type="file">

javascriptのスニペットと一緒に

$("#upload").change(function(files) {
    var files = this.files;
    for (var i = 0; i < files.length; i++) {
        (function() {
            var file = files[i]; 
            var reader = new FileReader;
            reader.onload = function(e) {
                var text = reader.result;
                console.log(text);
            };
            reader.readAsText(file);
        }());
    }
});

実例を参照してください。

つまり、パーサーで作業するために必要なすべてのテキストがあります。それが少しお役に立てば幸いです。

差分のマークアップについては、次のようなものを提案します。

<table>
 <!-- one tr per unique timestamp -->
 <tr>
  <!-- one td/textarea per file -->
  <td> <textarea /> </td>
  <td> <textarea /> </td>
 </tr>
 ...
</table>

これをテンプレートにして、テンプレートエンジンを使用して手間のかかる作業を行うことをお勧めします。

jquery-tmplを使用したいとします。

これがあなたが始めるための例です。(私はそれを美しく見せるためにゼロの時間を費やします。それはあなたの仕事です)。

残っているのは、テンプレートに挿入するJSONデータを生成することだけです。

したがって、ファイル入力が与えられると、fileTextsどこかの配列が必要になります。

ある種のデリミネーターを使用して、それを個々のタイムスタンプレコードに分割したいと考えています。簡単にするために、改行文字が機能するとしましょう。

var fileTexts = [file];
var regex = new RegExp("(timestampformat)(.*)");

for (var i = 0; i < fileTexts.length; i++) {
    var text = fileTexts[i];
    var records = text.split("\n");
    for (var j = 0; j < records.length; j++) {
        var match = regex.exec(records[j]);
        addToTimestamps(match[1], match[2], i);
    }
}

function addToTimestamps(timestamp, text, currFileCount) {
    console.log(arguments);
    // implement it.
}

例のように。

これらは基本的な構成要素です。FileAPIからデータを取得します。データを正規化されたデータ形式に操作してから、データ形式で何らかのレンダリングツールを使用します。

于 2011-03-08T20:34:01.873 に答える
2

これは、javascriptを使用して行うのはかなり簡単です。上記でhtml5ファイルapiを使用して説明しましたが、これは開始するのに最適な場所です(html file api)。控えめなJavaScriptを使用して、ファイルのアップロード時にコールバックを起動できます。コールバック内では、優れたjavascriptテンプレートライブラリのいずれかを使用して、アップロードされたファイルから要素のテーブルを作成できます。その後、ファイルをアップロードするときに、タイムスタンプを使用して動的にテーブルにインターリーブできます。js正規表現を使用してタイムスタンプを検出するのはかなり簡単で、コンパイルされたフォームを使用した場合はかなり効率的です。

これは質問に対するかなり高レベルの回答であり、特定の詳細について質問がある場合は、それらにも喜んで回答します。

お役に立てれば

于 2011-03-08T20:24:18.833 に答える