Signed-off-by: wlan0 <sid@rancher.com>
| ... | ... |
@@ -83,7 +83,7 @@ func (config *Config) InstallFlags() {
|
| 83 | 83 |
opts.LabelListVar(&config.Labels, []string{"-label"}, "Set key=value labels to the daemon")
|
| 84 | 84 |
config.Ulimits = make(map[string]*ulimit.Ulimit) |
| 85 | 85 |
opts.UlimitMapVar(config.Ulimits, []string{"-default-ulimit"}, "Set default ulimits for containers")
|
| 86 |
- flag.StringVar(&config.LogConfig.Type, []string{"-log-driver"}, "json-file", "Containers logging driver(json-file/none)")
|
|
| 86 |
+ flag.StringVar(&config.LogConfig.Type, []string{"-log-driver"}, "json-file", "Containers logging driver")
|
|
| 87 | 87 |
} |
| 88 | 88 |
|
| 89 | 89 |
func getDefaultNetworkMtu() int {
|
| ... | ... |
@@ -23,6 +23,7 @@ import ( |
| 23 | 23 |
"github.com/docker/docker/daemon/execdriver" |
| 24 | 24 |
"github.com/docker/docker/daemon/logger" |
| 25 | 25 |
"github.com/docker/docker/daemon/logger/jsonfilelog" |
| 26 |
+ "github.com/docker/docker/daemon/logger/syslog" |
|
| 26 | 27 |
"github.com/docker/docker/engine" |
| 27 | 28 |
"github.com/docker/docker/image" |
| 28 | 29 |
"github.com/docker/docker/links" |
| ... | ... |
@@ -1377,6 +1378,12 @@ func (container *Container) startLogging() error {
|
| 1377 | 1377 |
return err |
| 1378 | 1378 |
} |
| 1379 | 1379 |
l = dl |
| 1380 |
+ case "syslog": |
|
| 1381 |
+ dl, err := syslog.New(container.ID[:12]) |
|
| 1382 |
+ if err != nil {
|
|
| 1383 |
+ return err |
|
| 1384 |
+ } |
|
| 1385 |
+ l = dl |
|
| 1380 | 1386 |
case "none": |
| 1381 | 1387 |
return nil |
| 1382 | 1388 |
default: |
| 1383 | 1389 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,54 @@ |
| 0 |
+package syslog |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "fmt" |
|
| 4 |
+ "log/syslog" |
|
| 5 |
+ "os" |
|
| 6 |
+ "path" |
|
| 7 |
+ "sync" |
|
| 8 |
+ |
|
| 9 |
+ "github.com/docker/docker/daemon/logger" |
|
| 10 |
+) |
|
| 11 |
+ |
|
| 12 |
+type Syslog struct {
|
|
| 13 |
+ writer *syslog.Writer |
|
| 14 |
+ tag string |
|
| 15 |
+ mu sync.Mutex |
|
| 16 |
+} |
|
| 17 |
+ |
|
| 18 |
+func New(tag string) (logger.Logger, error) {
|
|
| 19 |
+ log, err := syslog.New(syslog.LOG_USER, path.Base(os.Args[0])) |
|
| 20 |
+ if err != nil {
|
|
| 21 |
+ return nil, err |
|
| 22 |
+ } |
|
| 23 |
+ return &Syslog{
|
|
| 24 |
+ writer: log, |
|
| 25 |
+ tag: tag, |
|
| 26 |
+ }, nil |
|
| 27 |
+} |
|
| 28 |
+ |
|
| 29 |
+func (s *Syslog) Log(msg *logger.Message) error {
|
|
| 30 |
+ logMessage := fmt.Sprintf("%s: %s", s.tag, string(msg.Line))
|
|
| 31 |
+ if msg.Source == "stderr" {
|
|
| 32 |
+ if err := s.writer.Err(logMessage); err != nil {
|
|
| 33 |
+ return err |
|
| 34 |
+ } |
|
| 35 |
+ |
|
| 36 |
+ } else {
|
|
| 37 |
+ if err := s.writer.Info(logMessage); err != nil {
|
|
| 38 |
+ return err |
|
| 39 |
+ } |
|
| 40 |
+ } |
|
| 41 |
+ return nil |
|
| 42 |
+} |
|
| 43 |
+ |
|
| 44 |
+func (s *Syslog) Close() error {
|
|
| 45 |
+ if s.writer != nil {
|
|
| 46 |
+ return s.writer.Close() |
|
| 47 |
+ } |
|
| 48 |
+ return nil |
|
| 49 |
+} |
|
| 50 |
+ |
|
| 51 |
+func (s *Syslog) Name() string {
|
|
| 52 |
+ return "Syslog" |
|
| 53 |
+} |
| ... | ... |
@@ -117,7 +117,7 @@ IMAGE [COMMAND] [ARG...] |
| 117 | 117 |
**--lxc-conf**=[] |
| 118 | 118 |
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1" |
| 119 | 119 |
|
| 120 |
-**--log-driver**="|*json-file*|*none*" |
|
| 120 |
+**--log-driver**="|*json-file*|*syslog*|*none*" |
|
| 121 | 121 |
Logging driver for container. Default is defined by daemon `--log-driver` flag. |
| 122 | 122 |
**Warning**: `docker logs` command works only for `json-file` logging driver. |
| 123 | 123 |
|
| ... | ... |
@@ -218,7 +218,7 @@ which interface and port to use. |
| 218 | 218 |
**--lxc-conf**=[] |
| 219 | 219 |
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1" |
| 220 | 220 |
|
| 221 |
-**--log-driver**="|*json-file*|*none*" |
|
| 221 |
+**--log-driver**="|*json-file*|*syslog*|*none*" |
|
| 222 | 222 |
Logging driver for container. Default is defined by daemon `--log-driver` flag. |
| 223 | 223 |
**Warning**: `docker logs` command works only for `json-file` logging driver. |
| 224 | 224 |
|
| ... | ... |
@@ -89,7 +89,7 @@ unix://[/path/to/socket] to use. |
| 89 | 89 |
**--label**="[]" |
| 90 | 90 |
Set key=value labels to the daemon (displayed in `docker info`) |
| 91 | 91 |
|
| 92 |
-**--log-driver**="*json-file*|*none*" |
|
| 92 |
+**--log-driver**="*json-file*|*syslog*|*none*" |
|
| 93 | 93 |
Container's logging driver. Default is `default`. |
| 94 | 94 |
**Warning**: `docker logs` command works only for `json-file` logging driver. |
| 95 | 95 |
|
| ... | ... |
@@ -258,7 +258,7 @@ Json Parameters: |
| 258 | 258 |
`Ulimits: { "Name": "nofile", "Soft": 1024, "Hard", 2048 }}`
|
| 259 | 259 |
- **LogConfig** - Logging configuration to container, format |
| 260 | 260 |
`{ "Type": "<driver_name>", "Config": {"key1": "val1"}}
|
| 261 |
- Available types: `json-file`, `none`. |
|
| 261 |
+ Available types: `json-file`, `syslog`, `none`. |
|
| 262 | 262 |
`json-file` logging driver. |
| 263 | 263 |
|
| 264 | 264 |
Query Parameters: |
| ... | ... |
@@ -656,6 +656,11 @@ this driver. |
| 656 | 656 |
Default logging driver for Docker. Writes JSON messages to file. `docker logs` |
| 657 | 657 |
command is available only for this logging driver |
| 658 | 658 |
|
| 659 |
+## Logging driver: syslog |
|
| 660 |
+ |
|
| 661 |
+Syslog logging driver for Docker. Writes log messages to syslog. `docker logs` |
|
| 662 |
+command is not available for this logging driver |
|
| 663 |
+ |
|
| 659 | 664 |
## Overriding Dockerfile image defaults |
| 660 | 665 |
|
| 661 | 666 |
When a developer builds an image from a [*Dockerfile*](/reference/builder) |