Files
linuxkit/projects/logging/pkg/memlogd/cmd/logread/main.go
Magnus Skjegstad 0511fdb431 Add logging project
Adds a logging daemon that collects logs in a ring buffer in a runc container.
The tools logwrite and logread can be used to read/write logs. The logging
daemon can be sent open file descriptors that will be read and included
in the logs.

Modifies init to start the daemon and use logwrite to capture logs from runc.

Signed-off-by: Magnus Skjegstad <magnus@skjegstad.com>
2017-04-16 21:08:57 +02:00

53 lines
876 B
Go

package main
import (
"bufio"
"flag"
"net"
"os"
)
const (
logDump byte = iota
logFollow
logDumpFollow
)
func main() {
var err error
var socketPath string
var follow bool
var dumpFollow bool
flag.StringVar(&socketPath, "socket", "/tmp/memlogdq.sock", "memlogd log query socket")
flag.BoolVar(&dumpFollow, "F", false, "dump log, then follow")
flag.BoolVar(&follow, "f", false, "follow log buffer")
flag.Parse()
addr := net.UnixAddr{socketPath, "unix"}
conn, err := net.DialUnix("unix", nil, &addr)
if err != nil {
panic(err)
}
defer conn.Close()
var n int
switch {
case dumpFollow:
n, err = conn.Write([]byte{logDumpFollow})
case follow && !dumpFollow:
n, err = conn.Write([]byte{logFollow})
default:
n, err = conn.Write([]byte{logDump})
}
if err != nil || n < 1 {
panic(err)
}
r := bufio.NewReader(conn)
r.WriteTo(os.Stdout)
}