Hi

As of version 4.1 Karaf will use Log4J 2 as logging backend (thanx, Guillaume). 
It’s very good news, because it greatly simplify configuration of robust 
production logging - compression, flexible rotation rules, async, fallback 
logging. All this features comes out of the box with Log4J 2. No more custom 
appenders needs to be installed at first start time to achieve basic production 
quality configuration.

But for advanced production logging one option is missing out of the box - 
logging analysis tools integration, line ELK, Fluentd, Graylog, Splunk. To 
achieve this capability in robust way we should again install custom appender ( 
like https://github.com/Graylog2/log4j2-gelf 
<https://github.com/Graylog2/log4j2-gelf> ) at first start time.

I know, it can be installed as regular bundle fragment after first startup. But 
installing appender this way has some drawbacks that make it unacceptable for 
production usage:
1. First startup logs not coming in appender installed after start. (stopper 
for automated deployments)
2. If appender configured before bundle cache initialization - there is errors 
in file logs about missing appender class. Cache clean up is not so rare on 
production deployment, usually it is simpler to clean cache before some major 
software update that dealing with deps conflicts on upgrade.
3. After installation of custom appender bundle host bundle should be refreshed 
(some log entries may be lost).

If custom appender is MAIN logging channel restriction above not acceptable for 
us. Workaround is simple but very inconvenient to support for different 
versions of Karaf:
 - add appender jar to system lib
 - modify startup.properties to incude appender bundle

My proposal: include GELF Log4J 2 appender in standart distribution. In such 
way we provide log streaming capability to all major logging analysis tools. 
Because of growing adoption of log analysis tools it may be good addition to 
Karaf feature portfolio in addition to own solution Decanter.

I can provide PR on Github with carefully repackaged appender lib that not 
export anything to other bundles.

What do you think?

Thanx,
Vladimir Konkov

Reply via email to