Log files¶
Open a .log file (or syslog, messages, access_log, error_log, or a
rotated access.log.1) and Octa reads it as a table: one row per log entry,
with a real timestamp you can sort and filter, a normalised level, and the
format's own fields as columns. Nothing to configure: Octa looks at the first
500 lines and picks the format that fits most of them.
Formats¶
| Format | Example line |
|---|---|
| Apache / nginx combined | 203.0.113.9 - - [10/Oct/2026:13:55:36 +0200] "GET / HTTP/1.1" 200 5120 "-" "Mozilla/5.0" |
| Apache / nginx common | 203.0.113.9 - - [10/Oct/2026:13:55:36 +0200] "GET / HTTP/1.1" 200 5120 |
| syslog (RFC 5424) | <165>1 2026-10-11T22:14:15.003Z host app 42 ID47 - message here |
| syslog (RFC 3164) | <11>Oct 3 22:14:15 web1 sshd[4721]: Failed password for root |
| JSON lines | {"ts":"2026-09-25T10:00:00Z","level":"error","msg":"boom","user":7} |
| logfmt | time=2026-09-25T10:00:00Z level=warn msg="disk almost full" free_mb=512 |
| Timestamped text | 2026-09-25 10:00:01,123 ERROR [main] c.e.Service - failed (Java, Python logging) |
The columns¶
- timestamp: the wall-clock time the line was written. Classic syslog has no year, so the file's modification year is used.
- utc_offset: the offset the timestamp was written in (
+02:00), in its own column because a date/time cell cannot carry one. Absent when the format has none. - level:
WARNING,warnandWall becomeWARN; the same forERROR,INFO,DEBUG,TRACEandFATAL(which also coversCRITICAL). Syslog levels come from the priority number. - The format's own fields:
client,method,path,status,bytes,user_agentfor access logs;host,app,pidfor syslog; every other key for JSON lines and logfmt. Numbers are numbers. - message: the rest of the line.
A column only appears when some row fills it: an access log has no level.
Stack traces and stray lines¶
A line that continues the entry above it (indented, or starting with at,
Caused by:, Traceback or ...) is added to that entry's message, so a
Java or Python stack trace stays with its error.
Any other line that fits no entry is kept, never dropped: it gets its own row with only the raw column filled, and a banner above the table says how many there were.
When it is not a log¶
A .log of notes (or anything where less than 60% of lines fit one format)
opens as plain text, exactly as before. To use the best format anyway, choose
View -> Reopen as -> Log.
Log files load up to the initial row limit (Settings -> Performance) like any other file; the status bar says when there is more.
See samples/features/access.log and samples/features/app.log for one of
each.