Skip to content

tower apps logs truncates output without a marker #165

@burakdede

Description

@burakdede

High-volume runs return only a fraction of logs (≈200–300 lines) with no truncation notice. This can be considered in the same scope with #164 as overall DX improvement as logs are quite critical for o11y.

Repro

  • tower run --dir tower-examples/pressure-logs -p LINES=10000 -p LINE_BYTES=200 --detached
  • tower apps logs pressure-logs#<run> | wc -l (returns far fewer lines than 10000+)
  • tower apps logs pressure-logs#<run> | awk 'NR<=5{print} {last=$0} END{print "LAST:" last}'

Sample reproducible job

  • tower run --dir tower-examples/pressure-logs -p LINES=10000 -p LINE_BYTES=200 --detached

Sample script

import json
import os
import sys

def to_int(value, name):
    try:
        return int(value)
    except ValueError:
        print(f"Invalid integer for {name}: {value}")
        sys.exit(2)

def main():
    lines = to_int(os.environ.get("LINES", "0"), "LINES")
    line_bytes = to_int(os.environ.get("LINE_BYTES", "0"), "LINE_BYTES")
    payload = "x" * max(0, line_bytes - 80)
    for idx in range(1, lines + 1):
        record = {"seq": idx, "payload": payload}
        print(json.dumps(record, separators=(",", ":")))
    print("LOG_DONE")

if __name__ == "__main__":
    main()

Sample output

  • wc -l returns ~100-200 lines
  • Last line observed: LAST: ... {"seq":171,...} (no truncation marker to indicate further data)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions