{"action":"created","issue":{"url":"https://api.github.com/repos/docker/docker/issues/22920","repository_url":"https://api.github.com/repos/docker/docker","labels_url":"https://api.github.com/repos/docker/docker/issues/22920/labels{/name}","comments_url":"https://api.github.com/repos/docker/docker/issues/22920/comments","events_url":"https://api.github.com/repos/docker/docker/issues/22920/events","html_url":"https://github.com/docker/docker/issues/22920","id":156362925,"number":22920,"title":"log driver should support multiline","user":{"login":"wjimenez5271","id":322834,"avatar_url":"https://avatars.githubusercontent.com/u/322834?v=3","gravatar_id":"","url":"https://api.github.com/users/wjimenez5271","html_url":"https://github.com/wjimenez5271","followers_url":"https://api.github.com/users/wjimenez5271/followers","following_url":"https://api.github.com/users/wjimenez5271/following{/other_user}","gists_url":"https://api.github.com/users/wjimenez5271/gists{/gist_id}","starred_url":"https://api.github.com/users/wjimenez5271/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wjimenez5271/subscriptions","organizations_url":"https://api.github.com/users/wjimenez5271/orgs","repos_url":"https://api.github.com/users/wjimenez5271/repos","events_url":"https://api.github.com/users/wjimenez5271/events{/privacy}","received_events_url":"https://api.github.com/users/wjimenez5271/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/docker/docker/labels/area/logging","name":"area/logging","color":"207de5"},{"url":"https://api.github.com/repos/docker/docker/labels/kind/feature","name":"kind/feature","color":"AAB3AB"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2016-05-23T20:45:34Z","updated_at":"2016-05-24T18:40:58Z","closed_at":"2016-05-24T12:02:33Z","body":"A significant use case of docker logs with Java applications is the stack trace, which is by nature multiline. Right now each line becomes a new event, and while this can theoretically be pieced together by later stream processing, it is a much more complex problem to solve there than at the source of the serialized output of `stdout` or `stderrr` (which is where the docker log driver is located)."},"comment":{"url":"https://api.github.com/repos/docker/docker/issues/comments/221364631","html_url":"https://github.com/docker/docker/issues/22920#issuecomment-221364631","issue_url":"https://api.github.com/repos/docker/docker/issues/22920","id":221364631,"user":{"login":"wjimenez5271","id":322834,"avatar_url":"https://avatars.githubusercontent.com/u/322834?v=3","gravatar_id":"","url":"https://api.github.com/users/wjimenez5271","html_url":"https://github.com/wjimenez5271","followers_url":"https://api.github.com/users/wjimenez5271/followers","following_url":"https://api.github.com/users/wjimenez5271/following{/other_user}","gists_url":"https://api.github.com/users/wjimenez5271/gists{/gist_id}","starred_url":"https://api.github.com/users/wjimenez5271/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wjimenez5271/subscriptions","organizations_url":"https://api.github.com/users/wjimenez5271/orgs","repos_url":"https://api.github.com/users/wjimenez5271/repos","events_url":"https://api.github.com/users/wjimenez5271/events{/privacy}","received_events_url":"https://api.github.com/users/wjimenez5271/received_events","type":"User","site_admin":false},"created_at":"2016-05-24T18:40:58Z","updated_at":"2016-05-24T18:40:58Z","body":"I don't think its that difficult to accomplish, but perhaps I am missing some piece of the equation. Mutliline would require a configurable of some regex that describes the beginning of a log line for a given container, and then the driver would need to concat lines that don't start with that regex with the previous line until it sees the regex match again. It would be important to have some limit on this string buffer to protect against memory usage.\r\n\r\nAgreed it can be done downstream by other tools, but keep in mind its much more complex when you have multiplexed streams to do this work.\r\n\r\nI can also understand the responsibility argument, but keep in mind the message you're sending to customers. To this end my team recently suggested that maybe Docker's logging solution wasn't the right choice for the problem and instead we should build log shippers into our container runtime to send to the collection tool over the network. This means we now have to manage log tooling that can work with a variety of application stacks and also manage config of where to make network connections to inside the container vs the elegance of a well defined serial channel that almost every language knows how to log to (namely `stdout`, `sterr`). So by making the logging features of Docker decidedly limited, you've weakened the promise of Docker making complexities of many different applications at scale easier. \r\n\r\nJust some food for thought, I respect you have your own set of priorities to manage :)"}}
{"actor":{"display_login":"wjimenez5271"}}