• Treat each line as a log message. • Parseable by a well defined GROK pattern. • Pass offset with each log message. • Ability to read JSON logs. • Ability to stitch stack traces. {"log":"2017/06/30 23:01:57 [I] Completed 10.64.244.96 - \"GET /kietu/ HTTP/1.0\" 404 Not Found 2931 bytes in 524us\n","stream":"stderr","time":"2017-06- 30T23:01:57.557914444Z"} {"log":"2017/06/30 23:01:57 [I] Completed 10.64.244.96 - \"GET /sf2k/ HTTP/1.0\" 404 Not Found 2931 bytes in 360us\n","stream":"stderr","time":"2017-06- 30T23:01:57.557918844Z"} root@localhost:/home/vija# tail -F /var/log/syslog Jul 29 07:17:01 tess-7829 CRON[6772]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Jul 29 08:17:01 tess-7829 CRON[6775]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) 28-Jul-2017 15:14:28.527 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-8080]] org.apache.catalina.LifecycleException: Protocol handler initialization failed at org.apache.catalina.connector.Connector.initInternal(Connector.java:935) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)