Merge pull request #11458 from ibuildthecloud/syslog

Add syslog logging driver
This commit is contained in:
Alexander Morozov 2015-03-23 11:34:33 -07:00
Родитель 61966d281b eaecd8b1b5
Коммит 65e21f5703
8 изменённых файлов: 71 добавлений и 5 удалений

Просмотреть файл

@ -83,7 +83,7 @@ func (config *Config) InstallFlags() {
opts.LabelListVar(&config.Labels, []string{"-label"}, "Set key=value labels to the daemon") opts.LabelListVar(&config.Labels, []string{"-label"}, "Set key=value labels to the daemon")
config.Ulimits = make(map[string]*ulimit.Ulimit) config.Ulimits = make(map[string]*ulimit.Ulimit)
opts.UlimitMapVar(config.Ulimits, []string{"-default-ulimit"}, "Set default ulimits for containers") opts.UlimitMapVar(config.Ulimits, []string{"-default-ulimit"}, "Set default ulimits for containers")
flag.StringVar(&config.LogConfig.Type, []string{"-log-driver"}, "json-file", "Containers logging driver(json-file/none)") flag.StringVar(&config.LogConfig.Type, []string{"-log-driver"}, "json-file", "Containers logging driver")
} }
func getDefaultNetworkMtu() int { func getDefaultNetworkMtu() int {

Просмотреть файл

@ -23,6 +23,7 @@ import (
"github.com/docker/docker/daemon/execdriver" "github.com/docker/docker/daemon/execdriver"
"github.com/docker/docker/daemon/logger" "github.com/docker/docker/daemon/logger"
"github.com/docker/docker/daemon/logger/jsonfilelog" "github.com/docker/docker/daemon/logger/jsonfilelog"
"github.com/docker/docker/daemon/logger/syslog"
"github.com/docker/docker/engine" "github.com/docker/docker/engine"
"github.com/docker/docker/image" "github.com/docker/docker/image"
"github.com/docker/docker/links" "github.com/docker/docker/links"
@ -1380,6 +1381,12 @@ func (container *Container) startLogging() error {
return err return err
} }
l = dl l = dl
case "syslog":
dl, err := syslog.New(container.ID[:12])
if err != nil {
return err
}
l = dl
case "none": case "none":
return nil return nil
default: default:

Просмотреть файл

@ -0,0 +1,54 @@
package syslog
import (
"fmt"
"log/syslog"
"os"
"path"
"sync"
"github.com/docker/docker/daemon/logger"
)
type Syslog struct {
writer *syslog.Writer
tag string
mu sync.Mutex
}
func New(tag string) (logger.Logger, error) {
log, err := syslog.New(syslog.LOG_USER, path.Base(os.Args[0]))
if err != nil {
return nil, err
}
return &Syslog{
writer: log,
tag: tag,
}, nil
}
func (s *Syslog) Log(msg *logger.Message) error {
logMessage := fmt.Sprintf("%s: %s", s.tag, string(msg.Line))
if msg.Source == "stderr" {
if err := s.writer.Err(logMessage); err != nil {
return err
}
} else {
if err := s.writer.Info(logMessage); err != nil {
return err
}
}
return nil
}
func (s *Syslog) Close() error {
if s.writer != nil {
return s.writer.Close()
}
return nil
}
func (s *Syslog) Name() string {
return "Syslog"
}

Просмотреть файл

@ -121,7 +121,7 @@ IMAGE [COMMAND] [ARG...]
**--lxc-conf**=[] **--lxc-conf**=[]
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1" (lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
**--log-driver**="|*json-file*|*none*" **--log-driver**="|*json-file*|*syslog*|*none*"
Logging driver for container. Default is defined by daemon `--log-driver` flag. Logging driver for container. Default is defined by daemon `--log-driver` flag.
**Warning**: `docker logs` command works only for `json-file` logging driver. **Warning**: `docker logs` command works only for `json-file` logging driver.

Просмотреть файл

@ -222,7 +222,7 @@ which interface and port to use.
**--lxc-conf**=[] **--lxc-conf**=[]
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1" (lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
**--log-driver**="|*json-file*|*none*" **--log-driver**="|*json-file*|*syslog*|*none*"
Logging driver for container. Default is defined by daemon `--log-driver` flag. Logging driver for container. Default is defined by daemon `--log-driver` flag.
**Warning**: `docker logs` command works only for `json-file` logging driver. **Warning**: `docker logs` command works only for `json-file` logging driver.

Просмотреть файл

@ -89,7 +89,7 @@ unix://[/path/to/socket] to use.
**--label**="[]" **--label**="[]"
Set key=value labels to the daemon (displayed in `docker info`) Set key=value labels to the daemon (displayed in `docker info`)
**--log-driver**="*json-file*|*none*" **--log-driver**="*json-file*|*syslog*|*none*"
Container's logging driver. Default is `default`. Container's logging driver. Default is `default`.
**Warning**: `docker logs` command works only for `json-file` logging driver. **Warning**: `docker logs` command works only for `json-file` logging driver.

Просмотреть файл

@ -259,7 +259,7 @@ Json Parameters:
`Ulimits: { "Name": "nofile", "Soft": 1024, "Hard", 2048 }}` `Ulimits: { "Name": "nofile", "Soft": 1024, "Hard", 2048 }}`
- **LogConfig** - Logging configuration to container, format - **LogConfig** - Logging configuration to container, format
`{ "Type": "<driver_name>", "Config": {"key1": "val1"}} `{ "Type": "<driver_name>", "Config": {"key1": "val1"}}
Available types: `json-file`, `none`. Available types: `json-file`, `syslog`, `none`.
`json-file` logging driver. `json-file` logging driver.
- **CgroupParent** - Path to cgroups under which the cgroup for the container will be created. If the path is not absolute, the path is considered to be relative to the cgroups path of the init process. Cgroups will be created if they do not already exist. - **CgroupParent** - Path to cgroups under which the cgroup for the container will be created. If the path is not absolute, the path is considered to be relative to the cgroups path of the init process. Cgroups will be created if they do not already exist.

Просмотреть файл

@ -657,6 +657,11 @@ this driver.
Default logging driver for Docker. Writes JSON messages to file. `docker logs` Default logging driver for Docker. Writes JSON messages to file. `docker logs`
command is available only for this logging driver command is available only for this logging driver
## Logging driver: syslog
Syslog logging driver for Docker. Writes log messages to syslog. `docker logs`
command is not available for this logging driver
## Overriding Dockerfile image defaults ## Overriding Dockerfile image defaults
When a developer builds an image from a [*Dockerfile*](/reference/builder) When a developer builds an image from a [*Dockerfile*](/reference/builder)