mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
869ecba652
This patch modifies the journald log driver to store the container ID in a field named CONTAINER_ID, rather than (ab)using the MESSAGE_ID field. Additionally, this adds the CONTAINER_ID_FULL field containing the complete container ID and CONTAINER_NAME, containing the container name. When using the journald log driver, this permits you to see log messages from a particular container like this: # journalctl CONTAINER_ID=a9238443e193 Example output from "journalctl -o verbose" includes the following: CONTAINER_ID=27aae7361e67 CONTAINER_ID_FULL=27aae7361e67e2b4d3864280acd2b80e78daf8ec73786d8b68f3afeeaabbd4c4 CONTAINER_NAME=web Closes: #12864 Signed-off-by: Lars Kellogg-Stedman <lars@redhat.com>
43 lines
950 B
Go
43 lines
950 B
Go
package journald
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/coreos/go-systemd/journal"
|
|
"github.com/docker/docker/daemon/logger"
|
|
)
|
|
|
|
type Journald struct {
|
|
Jmap map[string]string
|
|
}
|
|
|
|
func New(id string, name string) (logger.Logger, error) {
|
|
if !journal.Enabled() {
|
|
return nil, fmt.Errorf("journald is not enabled on this host")
|
|
}
|
|
// Strip a leading slash so that people can search for
|
|
// CONTAINER_NAME=foo rather than CONTAINER_NAME=/foo.
|
|
if name[0] == '/' {
|
|
name = name[1:]
|
|
}
|
|
jmap := map[string]string{
|
|
"CONTAINER_ID": id[:12],
|
|
"CONTAINER_ID_FULL": id,
|
|
"CONTAINER_NAME": name}
|
|
return &Journald{Jmap: jmap}, nil
|
|
}
|
|
|
|
func (s *Journald) Log(msg *logger.Message) error {
|
|
if msg.Source == "stderr" {
|
|
return journal.Send(string(msg.Line), journal.PriErr, s.Jmap)
|
|
}
|
|
return journal.Send(string(msg.Line), journal.PriInfo, s.Jmap)
|
|
}
|
|
|
|
func (s *Journald) Close() error {
|
|
return nil
|
|
}
|
|
|
|
func (s *Journald) Name() string {
|
|
return "Journald"
|
|
}
|