Conversation

Replying to
Certainly they’re not doing anything newly wrong, but in general having eval() in any logging library would have people aghast if it was newly created now. Sadly it slipped by unnoticed for years
1
9
Replying to and
It wasn't added that long ago and I don't think they had any intention of removing it. It was regarded as a useful feature and definitely wasn't just kept around for backwards compatibility. log4j1 didn't have the feature and it's one of many things that got added with log4j2.
2
log4 was very complex and duplicates the functionality of system logging services like rsyslog. The original developer left Apache and continued their work with SLF4J and logback. Apache decided to continue using the valuable log4j brand name for a much more complex rewrite.
1
1
One of the features they added to their rewrite was this misguided in-band string interpolation. It would be a really bad idea even if it only supported variables, environment variables, etc. because it's in-band instead of using a properly separate format string with parameters.