1.6.5 • Published 6 years ago
docker-loghose v1.6.5
docker-loghose
Collect all the logs from all docker containers
Install
As a command line tool:
npm install docker-loghose -g
Embedded usage
npm install docker-loghose --save
Embedded Usage
var loghose = require('docker-loghose')
var through = require('through2')
var opts = {
json: false, // parse the lines that are coming as JSON
docker: null, // here goes options for Dockerode
events: null, // an instance of docker-allcontainers
newline: false, // Break stream in newlines
// Logs from the container, running docker-loghose are excluded by default.
// It could create endless loops, when the same logs are written to stdout...
// To get all logs set includeCurrentContainer to 'true'
includeCurrentContainer: false, // default value: false
// In a managed environment, container names may be obfuscated.
// If there is a label that provides a better name for logging,
// provide the key here.
nameLabel: 'com.amazonaws.ecs.container-name',
// the following options limit the containers being matched
// so we can avoid catching logs for unwanted containers
matchByName: /hello/, // optional
matchByImage: /matteocollina/, //optional
skipByName: /.*pasteur.*/, //optional
skipByImage: /.*dockerfile.*/, //optional
attachFilter: function (id, dockerInspectInfo) {
// Optional filter function to decide if the log stream should
// be attached to a container or not
// e.g. return /LOGGING_ENABLED=true/i.test(dockerInspectInfo.Config.Env.toString())
return true
}
// Enrich all log events with the labels that are set on the container
// Using a regular expression it's possible to limit which labels are set
// Labels are added into the root of JSON structure, unless 'labelsKey' is defined
addLabels: false // default
labelsMatch: /^ecs-.*/ // defaults to .*
labelsKey: labels // defaults to 'none'
}
var lh = loghose(opts)
lh.pipe(through.obj(function(chunk, enc, cb) {
this.push(JSON.stringify(chunk))
this.push('\n')
// stop listening to specific container logs
if (/top secret logs/.test(chunk.line)) {
lh.detachContainer(chunk.long_id)
// we should not get more logs for the container with chunk.long_id
}
cb()
})).pipe(process.stdout)
Command Line Usage
docker-loghose [--json] [--help]
[--newline]
[--nameLabel STRING]
[--matchByImage REGEXP] [--matchByName REGEXP]
[--skipByImage REGEXP] [--skipByName REGEXP]
Docker Usage
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock matteocollina/docker-loghose
Data format
{
v: 0,
id: "3324acd73ad5",
long_id: "3324acd73ad573773b901d93e932be65f2bb55b8e6c03167a24c17ab3f172249"
image: "myimage:latest",
name: "mycontainer-name"
time: 1454928524601,
line: "This is a log line", // this will be an object if opts.jon is true
labels: {
com.amazonaws.ecs.cluster: "my-ecs-cluster"
} // labels placed in 'labels' when "--labelsKey labels"
}
Acknowledgements
This project was kindly sponsored by nearForm.
License
MIT
1.6.5
6 years ago
1.6.4
7 years ago
1.6.3
7 years ago
1.6.2
8 years ago
1.6.1
8 years ago
1.6.0
8 years ago
1.5.1
8 years ago
1.4.0
8 years ago
1.3.0
9 years ago
1.2.0
9 years ago
1.1.0
9 years ago
1.0.0
9 years ago
0.9.0
9 years ago
0.8.0
9 years ago
0.7.0
10 years ago
0.6.0
10 years ago
0.5.0
10 years ago
0.4.1
10 years ago
0.4.0
10 years ago
0.3.1
10 years ago
0.3.0
10 years ago
0.2.3
10 years ago
0.2.2
10 years ago
0.2.1
10 years ago
0.2.0
10 years ago
0.1.2
10 years ago
0.1.1
10 years ago
0.1.0
10 years ago