tlog-rec(8)

NAME
tlog-rec - record terminal I/O of a program or a user shell

SYNOPSIS
tlog-rec [OPTION...] [CMD_FILE [CMD_ARG...]]

DESCRIPTION
Tlog-rec is a terminal I/O logging program. It starts a program under a pseudo-TTY, connects it to the actual terminal and logs whatever passes between them including user input, program output, and terminal window size changes.

CMD_FILE argument specifies the program to run and record. If CMD_FILE contains a slash (/) character, then it is assumed to contain a path to the program to run. Otherwise a program file with CMD_FILE name is searched for in directories specified with the PATH environment variable. If this variable is not set, then the current directory is searched, followed by the system-default directories output by "getconf CS_PATH", which is usually "/bin:/usr/bin".

CMD_ARG arguments are used as arguments to the program to run and record.

If no non-option arguments are specified, then tlog-rec starts and records a user shell specified with the SHELL environment variable, or if that is not set, it starts the shell specified in the NSS database for the user tlog-rec runs as.

Tlog-rec loads its parameters first from the system-wide configuration file /etc/tlog/tlog-rec.conf, then from the file pointed at by TLOG_REC_CONF_FILE environment variable (if set), then from the contents of the TLOG_REC_CONF_TEXT environment variable (if set), and then from command-line options. Parameters from each of these sources override the previous one in turn.

OPTIONS

  General options

-h, --help
    Output a command-line usage message and exit.

-v, --version
    Output version information and exit.

--configuration
    Output program configuration in JSON and exit.

--latency=SECONDS
    Cache captured data SECONDS seconds before logging.

    SECONDS is the number of seconds to cache captured data for before logging. The encoded data which does not reach payload size stays in memory and is not logged until this number of seconds elapses.

    Value minimum: 1

--payload=BYTES
    Limit encoded data to BYTES bytes.

    BYTES is the maximum encoded data (payload) size per message, bytes. As soon as payload exceeds this number of bytes, it is formatted into a message and logged.

    Value minimum: 32

-w, --writer=STRING
    Use STRING log writer (journal/syslog/file, default file).

    STRING is the type of "log writer" to use for logging. The writer needs to be configured using its dedicated parameters.

    Value should be one of: "journal", "syslog", "file"

--semaphore=FILE
    Write "READY" to FILE when recording is setup.

    FILE is a path to a "semaphore" file to write string "READY" to, when the recording setup is done, and I/O can be passed to and from the recorded program.

  Logged data set options

--log-input[=BOOL]
    Enable/disable logging user input.

    If specified as true, user input is logged.

--log-output[=BOOL]
    Enable/disable logging program output.

    If specified as true, terminal output is logged.

--log-window[=BOOL]
    Enable/disable logging terminal window size changes.

    If specified as true, terminal window size changes are logged.

  Logging limit options

--limit-rate=NUMBER
    Set logging rate limit to NUMBER of message bytes/sec.

    NUMBER is the maximum rate messages could be logged at, bytes/sec.

    Value minimum: 0

--limit-burst=NUMBER
    Set logging burst limit to NUMBER of message bytes.

    NUMBER is the number of bytes by which logged messages are allowed to exceed the rate limit momentarily, i.e. "burstiness".

    Value minimum: 0

--limit-action=STRING
    Perform STRING action above limits (pass/delay/drop).

    STRING is the logging limit action. If set to "pass" no logging limits will be applied. If set to "delay", logging will be throttled. If set to "drop", messages exceeding limits will be dropped.

    Value should be one of: "pass", "delay", "drop"

  File writer options

-o, --file-path=FILE
    Log to FILE file.

    FILE is the "file" writer log file path.

  Syslog writer options

--syslog-facility=STRING
    Log with STRING syslog facility.

    STRING is the syslog facility "syslog" writer should use for messages.

    Value should be one of: "auth", "authpriv", "cron", "daemon", "ftp", "kern", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", "lpr", "mail", "news", "syslog", "user", "uucp"

--syslog-priority=STRING
    Log with STRING syslog priority.

    STRING is the syslog priority "syslog" writer should use for messages.

    Value should be one of: "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"

  Journal writer options

--journal-priority=STRING
    Log with STRING syslog-style priority.

    STRING is the syslog-style priority "journal" writer should use for messages.

    Value should be one of: "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"

--journal-augment[=BOOL]
    Enable/disable adding extra journal fields.

    If specified as true, the "journal" writer copies the following JSON fields to Journal fields: user -> TLOG_USER, session -> TLOG_SESSION, rec -> TLOG_REC, and id -> TLOG_ID.

ENVIRONMENT

TLOG_REC_CONF_FILE
    Specifies the location of a configuration file to be read. The configuration parameters in this file override the ones in the system-wide configuration file /etc/tlog/tlog-rec.conf.

TLOG_REC_CONF_TEXT
    Specifies the configuration text to be read. The configuration parameters in this variable override the ones in the file specified with TLOG_REC_CONF_FILE.

SHELL
    Specifies the shell to run, if no positional arguments are found on the command line.

FILES

/etc/tlog/tlog-rec.conf
    The system-wide configuration file

EXAMPLES

Record a vim session to a file:
    tlog-rec -o vim.log vim

Record user input only:
    tlog-rec --log-input=on --log-output=off --log-window=off

Record with minimal latency:
    tlog-rec --latency=1

SEE ALSO
tlog-rec.conf(5), tlog-rec-session(8), tlog-play(8)

AUTHOR
Nikolai Kondrashov <spbnick@gmail.com>