mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-16 12:10:46 +01:00
py files should be run as ${PYTHON} *.py
reference issue: #3853
Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
36 lines
1.4 KiB
Python
Executable File
36 lines
1.4 KiB
Python
Executable File
# call this via "python[3] script name"
|
|
|
|
import sys
|
|
import os
|
|
|
|
lineLength = int(sys.argv[1])
|
|
linePrefix = "[{0:09d}] ".format(os.getpid())
|
|
|
|
logLine = sys.stdin.readline()
|
|
while logLine:
|
|
logLine = logLine.strip()
|
|
numRepeats = int(lineLength / len(logLine))
|
|
|
|
lineToStdout = (linePrefix + "[stdout] " + logLine*numRepeats)[:lineLength]
|
|
lineToStderr = (linePrefix + "[stderr] " + logLine*numRepeats)[:lineLength]
|
|
|
|
sys.stdout.write(lineToStdout + "\n")
|
|
sys.stderr.write(lineToStderr + "\n")
|
|
|
|
# Flush stdout. In both Python 2 and Python 3, stdout is block-buffered when
|
|
# redirected to a file/pipe. But be want each line to be written immediately,
|
|
# because multiple processes are writing to the same pipe, and we do not want
|
|
# lines to appear intermingled in the output file. (The flush will cause a
|
|
# single 'write' syscall, since the size of the block buffer is generally
|
|
# greater than PIPE_BUF.)
|
|
sys.stdout.flush()
|
|
|
|
# Flush stderr. This is not necessary in Python 2, since stderr is unbuffered
|
|
# (and therefore each write will be written immediately and atomically to the
|
|
# pipe). However, in Python 3 stderr is block-buffered when redirected to a
|
|
# file/pipe. (Note: in future versions of Python 3, stderr could change to
|
|
# line-buffered; see https://bugs.python.org/issue13601.)
|
|
sys.stderr.flush()
|
|
|
|
logLine = sys.stdin.readline()
|