AgentSkillsCN

pywayne-bin-cmdlogger

执行带完整I/O日志记录的命令。当用户需要将命令的完整执行过程——包括标准输入、标准输出与标准错误——记录到日志文件中,同时保持实时控制台输出时使用此功能。当收到记录、保存、监控或追踪命令执行的请求时自动触发,尤其适用于构建、长时间运行的脚本、调试会话,或CI/CD流程。

SKILL.md
--- frontmatter
name: pywayne-bin-cmdlogger
description: Execute commands with full I/O logging. Use when users need to record the complete execution of a command including stdin, stdout, and stderr to a log file while maintaining real-time console output. Triggered by requests to log, record, monitor, or trace command execution, especially for builds, long-running scripts, debugging sessions, or CI/CD processes.

Pywayne Bin Cmdlogger

Execute a command and log all stdin, stdout, stderr to a file while forwarding I/O to console in real-time.

Quick Start

bash
# Log command execution to default file (io_log.log in script directory)
cmdlogger <command> [args...]

# Specify custom log file path
cmdlogger --log-path <log_path> <command> [args...]

Usage Examples

Build Process Recording

bash
# Log CMake configuration
cmdlogger --log-path cmake_config.log cmake ..

# Log build process
cmdlogger --log-path build.log make -j$(nproc)

Script Execution Monitoring

bash
# Log Python script execution
cmdlogger --log-path script_run.log python3 my_script.py --arg1 value1

# Log shell script execution
cmdlogger --log-path deploy.log ./deploy.sh production

Debugging Sessions

bash
# Log GDB debug session
cmdlogger --log-path debug_session.log gdb ./my_program

# Log Python interactive session
cmdlogger --log-path python_debug.log python3 -i my_module.py

Network Operations

bash
# Log curl request with verbose output
cmdlogger --log-path api_test.log curl -v https://api.example.com/data

# Log SSH connection process
cmdlogger --log-path ssh_session.log ssh user@remote-host

Simple Command Logging

bash
# Log git status
cmdlogger git status

# Log echo command
cmdlogger echo "Hello World"

Command Reference

ArgumentDescription
commandThe command to execute
[args...]Command arguments
--log-path <path>Optional log file path. Default: io_log.log in script directory

Log Format

Each line in the log file is prefixed with stream type:

  • 输入: <content> - Standard input
  • 输出: <content> - Standard output
  • 错误: <content> - Standard error

Example Log Output

Running cmdlogger echo "Hello World" produces:

code
输出: Hello World

Running cmdlogger python3 -c "import sys; print('stdout'); print('stderr', file=sys.stderr)" produces:

code
输出: stdout
错误: stderr

Features

  • Full I/O Recording: Captures all stdin, stdout, stderr
  • Real-time Forwarding: Forwards I/O to console while logging
  • Multi-threaded: Uses separate threads for stdin, stdout, stderr
  • Encoding Handling: Gracefully handles non-UTF-8 data
  • Resource Cleanup: Automatically cleans up processes and files

Use Cases

  • Recording complex build processes for later analysis
  • Monitoring long-running scripts with full logging
  • Debugging with complete input/output history
  • CI/CD pipeline execution logging
  • Performance analysis with execution traces

Important Notes

  • Interactive Commands: User input (including passwords) is logged. Be careful with sensitive information.
  • Large Output: Log files can become large for commands with heavy output. Ensure sufficient disk space.
  • Default Log Location: If --log-path is not specified, log file is created in the script directory as io_log.log.
  • Exit Codes: Returns the exit code of the executed command (127 if command not found).