Skip to content

Settings

Maximum number of log messages stored

Specifies a maximum number of messages that will be kept in memory. You can dynamically adjust that limit.

Middlewares

A middleware is a piece of code that can process a log line and decide whether to pass it to the next middleware or not. Middlewares allow you to build custom format parsing and filtering.

Basic middleware looks like below:

ts
(line: Message): Message | void => {
    return line;
}

The middleware has to return a Message type of void, in the case of void, next middlewares will not be invoked and the log line will be discarded (it will not show up in the table).

The below example presents filtering capabilities:

ts
(line: Message): Message | void => {
    if(line.content.includes('noise')){
        // every log line that contain 'noise' string will not be passed
        return
    }
    return line;
}

The below example presents transformation capabilities, you can mask sensitive data for example

ts
(line: Message): Message | void => {
    if(line.json_content.last_name){
        // masking PII
        line.json_content.last_name = line.json_content.last_name.substring(0, 3)+"..."
    }
    return line;
}

Another more powerful feature of a middleware is parsing. You can build a custom raw text parser that will transform into a JSON that's easily readable by the code responsible for displaying columns. The below code will parse Apache Webserver logs into JSON.

ts
(line: Message): Message | void => {
	
	let [ ip, i1, i2, ts, tz, method, resource, protocol, statusCode, size, referer, ...userAgent ] = line.split(' ');

	statusCode = +statusCode;
	size = +size;
	ts = ts.substring(1);
	tz = tz.substring(0, tz.length - 1);
	const time = ts + tz;

	userAgent = userAgent.join('');
	
	line.json_content = { ip, time, method, resource, protocol, statusCode, size, referer, userAgent }

    return line;
}

Middlewares - order key for logs

You can now emit an order_key for every message in a Middleware. order_key is used to order log messages in a table by that property. This is especially useful if you're digesting data from multiple sources at once. For each message you can for example parse a timestamp then emit a unix timestamp (or other sortable data) in order_key. Logs presented in a table together will sorted in ascending order by the contents of order_key.

Export layout settings

You can export layout settings, columnd defined with the code and middlewares. That enables portability between multiple hosts or users.

Go to Settings > Import/Export. You can export layout settings by downloading a file or copying the settings right to the clipboard.

Import layout settings

Go to Settings > Import/Export. You can import layout settings by pasting previously exported setting or uploading a file.

TIP

You can import layout settings using a file stored on a disk by providing a CLI option.