⚙️ ❮ ZShell用の高速ログフレームワーク❯
11191 ワード
https://z.digitalclouds.dev | GitHub |
The Backend (Database) Definitions
より遅い.スクリプトがいくつかの大きな仕事を実行すること
例えば10 - 20 %の実行時間は大きな違いにつながる.
このため、このような大きな作業スクリプトは、ファイルログのみに制限されます.
メッセージを送信します.
mysql
データベースが増加するさらに実行時間.
Zflaiがパフォーマンス問題を解決する方法
ZFLAIは以下のように動作します.
>( … function …)
置換zflai-log
が指定された場合、記述子によるバックグラウンドプロセス.
サポートされるバックエンドの
(デフォルトでは45秒).それは自動的に再
zflai-log
必要に応じて呼び出します.zflai
以下のように使用できます:全てのシェルではプロセスは2倍にはならない.背景プロセスは
ゼロラグロギングは継続的に使用できるようになりますが必要です.
MySQLやエラスティックサーチのようなデータベースへのログインが可能です.
使い方
現在、2つのエンドユーザ呼び出しがあります.
zflai-ctable "{TABLE-NAME} :: {FIELD1}:{TYPE} / {FIELD2}:{TYPE} / … / {FIELDN}:{TYPE}"
varchar(…)
, integer
, などこの関数はテーブルを定義し、テーブルを定義します
(例: SQLite 3またはエラスティックサーチ)最初に保存する前に作成されます
データ.
テーブルは特定のバックエンドにバインドされません.それらは
複数のバックエンドまたはそれらの1つだけ.
zflai-log "@{DB-NAME} / {TABLE} :: {FIELD1 TEXT…} | {FIELD2 TEXT…} | … | {FIELDN TEXT…}
DB-NAME
, その中でテーブル
TABLE
.バックエンド(データベース)定義
zfliディレクトリを使用する
~/.config/zflai
設定ファイルを保存するif the
$XDG_CONFIG_HOME
でない~/.config
). そこにini
定義するファイルデータベース
@{DB-NAME}
からzflai-log
コールは、名称
DB-NAME.def
. 以下は例ですini
サポートされる各ファイルデータベースバックエンド.
ファイルバックエンド
; Contents of ~/.config/zflai/myfile.def
[access]
engine = file
file = %TABLE%.log
path = %XDG_CACHE_HOME%/zflai/
[hooks]
on_open = STATUS: Opening file %TABLE%.log
on_open_sh = print Hello world! >> ~/.cache/zflai/file_backend.nfo
on_close = STATUS: Closing file %TABLE%.log
on_close_sh = print Hello world! >> ~/.cache/zflai/file_backend.nfo
; vim:ft=dosini
以下の例のファイル内容% zflai-ctable "mytable :: timestamp:integer / message:varchar(288) / message2:varchar(20)"
% zflai-log "@myfile / mytable :: HELLO | WORLD"
は% cat ~/.cache/zflai/mytable.log
STATUS: Opening file mytable.log
1572797669: HELLO WORLD
STATUS: Closing file mytable.log
MySQLバックエンド
; Contents of ~/.config/zflai/mysql.def
[access]
engine = mysql
host = localhost
port =
user = root
password = …
database = test
[hooks]
on_open = !show databases;
on_open_sh = print -nr -- "$1" | egrep '(mysql|test)' >! ~/.cache/zflai/mysql.nfo
on_close = #show tables; select * from mytable;
on_close_sh = print -rl -- "$(date -R)" "$1" >>! %XDG_CACHE_HOME%/zflai/mysql.tables
; vim:ft=dosini
フック作成後のファイルの内容例を次に示します.% zflai-ctable "mytable :: timestamp:integer / message:varchar(288) / message2:varchar(20)"
% zflai-log "@mysql / mytable :: HELLO | WORLD"
は% cat ~/.cache/zflai/mysql.nfo
mysql
test
% cat ~/.cache/zflai/mysql.tables
Sun, 03 Nov 2019 17:55:56 +0100
mytable
1 1572800148 HELLO WORLD
認識*_sh
-フック接頭辞は次のとおりです.#
– Whitespaceの崩壊コピーmysql
コマンド出力!
- tokenize & newline -新しい行で区切った単語と出力に分割します.@
- tokenize -単語に分割し、スペースで区切って出力します.SQLITE 3バックエンド
; Contents of ~/.config/zflai/sqlite.def
[access]
engine = sqlite3
file = sqlite_main.db3
path = %XDG_CACHE_HOME%/zflai/
[hooks]
on_open = !.tables
on_open_sh = print -nr -- "$1" >! ~/.cache/zflai/sqlite.nfo
on_close = #select * from mytable;
on_close_sh = print -rl -- "$(date -R)" "$1" >>! %XDG_CACHE_HOME%/zflai/sqlite.tables
; vim:ft=dosini
フック作成後のファイルの内容例を次に示します.% zflai-ctable "mytable :: timestamp:integer / message:varchar(288) / message2:varchar(20)"
% zflai-log "@sqlite / mytable :: HELLO | WORLD"
は% cat ~/.cache/zflai/sqlite.nfo
mytable
% cat ~/.cache/zflai/sqlite.tables
Sun, 03 Nov 2019 18:14:30 +0100
1|1572801262|HELLO|WORLD
弾性検索バックエンド
; Contents of ~/.config/zflai/esearch.def
[access]
engine = elastic-search
host = localhost:9200
index = my-db
; vim:ft=dosini
データベース内容の例% zflai-ctable "mytable :: timestamp:integer / message:varchar(288) / message2:varchar(20)"
% zflai-log "@esearch / mytable :: HELLO | WORLD"
は% curl -X GET "localhost:9200/my-db/_search" -H 'Content-Type: application/json
{
"query": { "match_all": {} },
}' | jq '.hits.hits[]._source'
{
"timestamp": "1573089118",
"write_moment": "1573089124.9808938503",
"message": "HELLO",
"message2": "WORLD"
}
構成
# How long to keep dj running after last login request
zstyle ":plugin:zflai:dj" keep_alive_time 15
# Store to disk each 30 seconds
zstyle ":plugin:zflai:dj" store_interval 30
インストール
単にzshのプラグインとしてのソースまたは負荷ZI :
zi load z-shell/zflai
またはzgenでzgen load z-shell/zflai
Reference
この問題について(⚙️ ❮ ZShell用の高速ログフレームワーク❯), 我々は、より多くの情報をここで見つけました https://dev.to/z-shell/fast-logging-framework-for-zshell-4442テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol