LogViewer コンポーネント — sgcHTML | eSeGeCe

LogViewer

TsgcHTMLComponent_LogViewer — Delphi、C++ Builder、.NET で、レベルフィルター、検索、自動スクロール、ダーク/ライトテーマを備えたストリーミングログ / ターミナルビューアーです。

TsgcHTMLComponent_LogViewer

AddLine で行をプッシュすると、上限付きのリングバッファに保持されます。その後 HTML プロパティを読み取るか、GetLastLineFragmentHTML で接続中のクライアントに新しい行をストリーミングします。

コンポーネントクラス

TsgcHTMLComponent_LogViewer

レンダリング内容

ツールバー + ターミナル風ログ本体 + スコープ付き CSS

言語

Delphi, C++ Builder, .NET

行を追加し、レンダリングし、更新をストリーミングする

各エントリーについて AddLine を呼び出し、初期レンダリングでは HTML を読み取り、その後 GetLastLineFragmentHTML で開いている WebSocket クライアントに新しい行をプッシュします。

uses
  sgcHTML_Component_LogViewer;

var
  oLog: TsgcHTMLComponent_LogViewer;
begin
  oLog := TsgcHTMLComponent_LogViewer.Create(nil);
  try
    oLog.LogID := 'applog';
    oLog.Theme := ltDark;
    oLog.MaxLines := 500;
    oLog.Height := '400px';

    oLog.AddLine(llInfo, 'Service started', 'app');
    oLog.AddLine(llWarning, 'Low disk space', 'monitor');
    oLog.AddLine(llError, 'Connection refused', 'db');

    WebModule.Response := oLog.HTML;   // toolbar + log body + inline script
  finally
    oLog.Free;
  end;
end;

// Push one more line to every connected client, no full re-render:
oLog.AddLine(llInfo, 'New order received', 'orders');
TsgcHTMX_Engine_Server.BroadcastFragment(oLog.GetLastLineFragmentHTML);
// includes: sgcHTML_Component_LogViewer.hpp

TsgcHTMLComponent_LogViewer *oLog = new TsgcHTMLComponent_LogViewer(NULL);
try
{
  oLog->LogID = "applog";
  oLog->Theme = ltDark;
  oLog->MaxLines = 500;
  oLog->Height = "400px";

  oLog->AddLine(llInfo, "Service started", "app");
  oLog->AddLine(llWarning, "Low disk space", "monitor");
  oLog->AddLine(llError, "Connection refused", "db");

  String html = oLog->HTML;   // toolbar + log body + inline script

  // Push one more line to every connected client:
  oLog->AddLine(llInfo, "New order received", "orders");
  TsgcHTMX_Engine_Server::BroadcastFragment(oLog->GetLastLineFragmentHTML());
}
__finally
{
  delete oLog;
}
using esegece.sgcWebSockets;

var log = new TsgcHTMLComponent_LogViewer();
log.LogID = "applog";
log.Theme = TsgcHTMLLogTheme.ltDark;
log.MaxLines = 500;
log.Height = "400px";

log.AddLine(TsgcHTMLLogLevel.llInfo, "Service started", "app");
log.AddLine(TsgcHTMLLogLevel.llWarning, "Low disk space", "monitor");
log.AddLine(TsgcHTMLLogLevel.llError, "Connection refused", "db");

string html = log.HTML;   // toolbar + log body + inline script

// Push one more line to every connected client, no full re-render:
log.AddLine(TsgcHTMLLogLevel.llInfo, "New order received", "orders");
TsgcHTMX_Engine_Server.BroadcastFragment(log.GetLastLineFragmentHTML());

主なプロパティとメソッド

最もよく使うメンバーです。

Adding lines

AddLine(aLevel, aText, aSource) はタイムスタンプ付きのエントリーを追加します。MaxLines(デフォルト 500)はリングバッファの上限を設定し、最も古い行を破棄します。Clear で空にします。

Levels

TsgcHTMLLogLevelllTracellDebugllInfollWarningllErrorllFatal — はそれぞれ Theme に応じて色分けされます。

Toolbar

ShowSearchShowLevelFilterTitle はツールバーを制御します。フィルタリングとハイライトはクライアント側で実行され、サーバーとの往復は発生しません。

Auto-scroll

AutoScroll は最新行に追従します。ShowAutoScrollToggle はチェックボックスを追加し、読者が過去にスクロールしている間、追従を一時停止できるようにします。

Streaming updates

GetLastLineFragmentHTML / GetLineFragmentHTML(aIndex) は、TsgcHTMX_Engine_Server.PushFragment / BroadcastFragment 用の out-of-band フラグメントをレンダリングします。

Appearance

ThemeltDark / ltLight)、WrapLinesHeightTimeFormatEmptyText で見た目を調整します。

さらに詳しく

オンラインヘルプこのコンポーネントの完全な API リファレンスと使用ガイドです。
すべての sgcHTML コンポーネント80 以上のコンポーネントの全機能マトリックスを閲覧できます。
無料体験版のダウンロード30 日間の体験版には 60.HTML デモプロジェクトが付属します。
価格完全なソースコード付きの Single、Team、Site ライセンス。

始める準備はできましたか?

無料体験版をダウンロードして、Delphi、C++ Builder、.NET の Web アプリにライブログビューアーを追加しましょう。