Usage
サーバー
公開されているサーバー起動関数は
log_ctrl.server_grpc.log_grpc_server() です。
from log_ctrl.server_grpc import log_grpc_server
log_grpc_server(
grpc_host="0.0.0.0",
grpc_port=50060,
log_dir=r"C:\opt\ese774\log",
encoding="utf-8",
chunk_size=256 * 1024,
)
grpc_host
gRPC server のbind先です。
grpc_port
gRPC server のポート番号です。
log_dir
参照対象のログディレクトリです。
LogCtrl の生成時に存在確認され、ディレクトリが存在しなければ
NotADirectoryError になります。
encoding
tail() がファイル内容を str へ変換するときに使用する文字コードです。
read() / read_raw() はファイルをバイナリで転送するため、戻り値は
bytes です。
chunk_size
read() / read_raw() の server-streaming
で1チャンクとして読み込むバイト数です。
既定値:
256 * 1024 bytes
大きなログファイルを単一のgRPCメッセージとして送信せず、複数チャンクに分割するために使用します。
logger / log_level
logger を渡した場合はそのloggerを使用します。logger=None
の場合は標準の logging を使用します。
DeviceProxy
同期クライアント:
from log_ctrl.server_grpc import DeviceProxy
client = DeviceProxy(
"log",
server_ip="127.0.0.1",
server_port=50060,
set_timeout_sec=10.0,
async_mode=False,
)
DeviceProxy("log", ...) は登録済みの SyncLogGrpcClient または
AsyncLogGrpcClient を生成します。
log_names()
log_names = client.log_names()
戻り値:
List[str]
*.log および *.log.YYYY-MM-DD から抽出した log_name
を重複なしで返します。戻り値は名前順です。
dates(log_name)
dates = client.dates(
"cobotta4_server"
)
戻り値:
List[str]
実在するローテーション済みログの日付を、新しい日付から順に返します。
exists(log_name, date=None)
現在ログ:
exists = client.exists(
"cobotta4_server"
)
指定日:
exists = client.exists(
"cobotta4_server",
date="2026-04-06",
)
戻り値は bool です。
tail(log_name, lines=100, date=None)
現在ログ:
text = client.tail(
"cobotta4_server",
lines=100,
)
指定日:
text = client.tail(
"cobotta4_server",
lines=100,
date="2026-04-06",
)
戻り値は str です。
lines は正の整数でなければなりません。
raw_files()
files = client.raw_files()
戻り値:
List[str]
log_dir 以下を再帰的に走査し、全ファイルの相対パスを返します。
これはログ名解析用ではなく、実際にディレクトリ以下に何が存在するかを確認するトラブル調査用APIです。
read(log_name, date=None)
現在ログ:
data = client.read(
"cobotta4_server"
)
指定日:
data = client.read(
"cobotta4_server",
date="2026-04-06",
)
戻り値は bytes です。
内部では grpc_frame の StreamCall
でファイルをチャンク転送し、デバイス固有clientが受信したチャンクを結合します。
文字列へ変換する場合:
text = data.decode("utf-8")
read_raw(relative_path)
data = client.read_raw(
"cobotta4_server.log.2026-04-06"
)
raw_files() で得られる相対パスを指定してファイル本体を取得できます。
サブディレクトリ内のファイルも相対パスで指定できますが、log_dir
外へ出るパスは拒否されます。
戻り値は bytes です。
クライアント終了
client.close()
grpc_frame のchannelを閉じます。
非同期クライアント
client = DeviceProxy(
"log",
server_ip="127.0.0.1",
server_port=50060,
set_timeout_sec=10.0,
async_mode=True,
)
AsyncLogGrpcClient では read() と read_raw() も await
して使用します。
data = await client.read(
"cobotta4_server"
)
通常RPCとして自動bindされるメソッドについても、grpc_frame
の非同期client APIに従って使用します。