Files
tiennm99 afaa631c94 refactor(scribe): normalize ASCII formatting
Remove decorative Unicode banner comments, replace em-dashes with
hyphens across Dockerfile, configs, docs, and one Go log string,
alphabetize the builder-stage yum package list, and drop the
non-standard description/version LABELs from the runtime stage.
2026-05-28 12:33:25 +07:00
..

Scribe Runnable Example

A one-command demo that proves the Scribe config actually writes logs.

docker compose up --build starts the Scribe daemon (using the repo's default config/scribe.conf) plus a tiny Go sender that connects over Thrift, pushes a few messages, and exits. The resulting log files appear on your host under ./logs.

Scribe is receive-only - it writes nothing until a client sends it messages. The Go sender is what makes this example produce log files.


Run

cd scribe-2.2/example
docker compose up --build

You'll see the sender connect and report:

sender-1  | sent 5 messages to category "example", result=OK

The sender then exits; the Scribe daemon keeps running. Press Ctrl+C, then docker compose down to stop it.


Verify

Log files are written on the host under ./logs/<category>/:

ls logs/example/
cat logs/example/example-*_00000

You should see the five Hello from Go sender - message N/5 lines.


Customize

Adjust the sender via environment variables in docker-compose.yml:

Env Default Purpose
SCRIBE_CATEGORY example Message category to log subdirectory name
SCRIBE_COUNT 5 Number of messages to send
SCRIBE_HOST scribe Daemon hostname (compose service name)
SCRIBE_PORT 1463 Thrift port

To change where/how Scribe stores logs (rotation, store type, per-category routing), edit config/scribe.conf - see the Configuration Reference.

The sender (sender/main.go) hand-encodes the Thrift framed binary Log() call using only the Go standard library - no Apache Thrift dependency, no generated bindings. For the higher-level client API, see the Python snippet in the main README.


Troubleshoot

  • logs/ stays empty - no messages were written yet. Check the sender output in the compose logs; it exits non-zero and logs the cause if the send failed.

  • Permission denied writing logs (native Linux hosts) - Scribe runs as a non-root user inside the container, which may not be able to write to the bind-mounted host directory. Fix by loosening the local dir before running:

    chmod 777 logs
    

    On Docker Desktop (Windows/macOS) this is normally not needed.

  • Sender can't connect - it retries for ~10s on startup. If Scribe takes longer to boot, re-run docker compose up or increase the retry window in sender/main.go.


Stop

docker compose down