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)