frontail

๐Ÿ“ streaming logs to the browser. Sponsored by https://cloudash.dev

1817
248
JavaScript

frontail โ€“ streaming logs to the browser

frontail is a Node.js application for streaming logs to the browser. Itโ€™s a tail -F with UI.

frontial

Docker Pulls

Quick start

Features

  • log rotation (not on Windows)
  • auto-scrolling
  • marking logs
  • pausing logs
  • number of unread logs in favicon
  • themes (default, dark)
  • highlighting
  • search (Tab to focus, Esc to clear)
  • set filter from url parameter filter
  • tailing multiple files and stdin
  • basic authentication

Installation options

  • download a binary file from Releases pagegit st
  • using npm package: npm i frontail -g
  • using Docker image: docker run -d -P -v /var/log:/log mthenw/frontail /log/syslog

Usage

frontail [options] [file ...]

Options:

  -V, --version                 output the version number
  -h, --host <host>             listening host, default 0.0.0.0
  -p, --port <port>             listening port, default 9001
  -n, --number <number>         starting lines number, default 10
  -l, --lines <lines>           number on lines stored in browser, default 2000
  -t, --theme <theme>           name of the theme (default, dark)
  -d, --daemonize               run as daemon
  -U, --user <username>         Basic Authentication username, option works only along with -P option
  -P, --password <password>     Basic Authentication password, option works only along with -U option
  -k, --key <key.pem>           Private Key for HTTPS, option works only along with -c option
  -c, --certificate <cert.pem>  Certificate for HTTPS, option works only along with -k option
  --pid-path <path>             if run as daemon file that will store the process id, default /var/run/frontail.pid
  --log-path <path>             if run as daemon file that will be used as a log, default /dev/null
  --url-path <path>             URL path for the browser application, default /
  --ui-hide-topbar              hide topbar (log file name and search box)
  --ui-no-indent                don't indent log lines
  --ui-highlight                highlight words or lines if defined string found in logs, default preset
  --ui-highlight-preset <path>  custom preset for highlighting (see ./preset/default.json)
  --path <path>                 prefix path for the running application, default /
  --disable-usage-stats         disable gathering usage statistics
  --help                        output usage information

Web interface runs on http://[host]:[port].

Tailing multiple files

[file ...] accepts multiple paths, *, ? and other shell special characters(Wildcards, Quotes, Back Quotes and Apostrophes in shell commands).

stdin

Use - for streaming stdin:

./server | frontail -

Highlighting

--ui-highlight option turns on highlighting in UI. By default preset from ./preset/default.json is used:

{
    "words": {
        "err": "color: red;"
    },
    "lines": {
        "err": "font-weight: bold;"
    }
}

which means that every โ€œerrโ€ string will be in red and every line containing โ€œerrโ€ will be bolded.

New presets are very welcome. If you donโ€™t like default or you would like to share yours, please create PR with json file.

Available presets:

  • default
  • npmlog
  • python

Running behind nginx

Using the --url-path option frontail can run behind nginx with the example configuration

Using frontail with --url-path /frontail

events {
    worker_connections 1024;
}

http {
    server {
        listen      8080;
        server_name localhost;

        location /frontail {
            proxy_pass http://127.0.0.1:9001/frontail;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
}

Usage statistics

frontail by default (from v4.5.0) gathers anonymous usage statistics in Google Analytics. It can be disabled with
--disable-usage-stats.

The data is used to help me understand how frontail is used and I can make it better.