mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-10-27 05:51:05 +00:00
This is an example external logging service which can be enabled by
adding it to the `init` section of the .yml, for example:
...
init:
- linuxkit/init:35866bb276c264a5f664bfac7456f4b9eeb87a4d
- linuxkit/runc:v0.4
- linuxkit/containerd:f2bc1bda1ab18146967fa1a149800aaf14bee81b
- linuxkit/ca-certificates:v0.4
- linuxkit/memlogd:cc035e5c9e4011ec1ba97a181a6689fc90965ce9
onboot:
...
Signed-off-by: David Scott <dave.scott@docker.com>
56 lines
900 B
Go
56 lines
900 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", "/var/run/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{
|
|
Name: socketPath,
|
|
Net: "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)
|
|
|
|
}
|