Skip to content

mikebd/go-read-var-log

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-read-var-log

REST /var/log reader

Assumptions

Some assumptions could be considered TODO items for future enhancement

  • The log files are in /var/log
  • The log files are uncompressed plain text files
    • Compressed or archived files (e.g. .gz, bz2, .tar, .tgz) are not supported
  • The log files are sorted by timestamp (oldest first) as it is captured in each log event
  • Log events are separated by a newline character
  • REST response Content-Type is text/plain; charset=utf-8, regardless of the Accept request header
  • All errors are returned to REST callers as HTTP status 500, even if these might be correctable by the caller

Endpoints

  • GET /api/v1/logs - Get list of all log files in /var/log that this service can read
  • GET /api/v1/logs/{log} - Get the contents of the log file specified by {log} in /var/log (e.g. /api/v1/logs/messages)
    Query Parameters:
    • n - Number of lines to return (default: 25)
    • q - Case sensitive fixed text filter to apply to each line (default: ""), more performant than r
    • r - Regex filter to apply to each line (default: .*)

Enabling Tech Stack

  • Go - Programming language
  • HttpRouter - HTTP request router

Design

  • The service package contains the logic of the service, agnostic of presentation and transport
  • The controller package contains the HTTP request handlers

Generation of Sample Input Log Files

Optionally, arbitrarily large fake log files can be generated in json or delimited format to augment any that are naturally in /var/log.

Running in Docker

  • docker build -t go-read-var-log . - Build the Docker image
  • docker run go-read-var-log - Run without arguments
    OR
    docker run go-read-var-log /app/go-read-var-log <args> - Run with the given arguments

Running Locally

  • go run ./main <args> - Run the main.go file with the given arguments

Arguments

Argument Description
-h | --help Print the help message
-lt Log with timestamps (UTC)
-n Number of lines to return (default 25)
-p HTTP Port to listen on (default 8080)

About

REST /var/log reader

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published