The setting does not affect lookups that are specified in the Log4j configuration file. Only lookups that are specified in the message being logged.
Ralph > On Dec 10, 2021, at 2:45 PM, Niranjan Rao <nhr...@gmail.com> wrote: > > Hello, > > It's not entirely clear to me if setting formatMsgNoLookups=true affects only > messages that are getting logged or does it affect appenders declared using > similar syntax. > > Taking example from log4j appender documentation, will affect any $ entries > declared here? > > <RollingFile > name="Rolling-${mdc:UserId}" > fileName="${mdc:UserId}.log" > filePattern="${mdc:UserId}.%i.log.gz"> > ..... > > > I tried to lookup documentation of the variable, but unfortunately failed. > > Regards, > > Niranjan > > On 12/10/21 2:08 AM, Ralph Goers wrote: >> The Apache Log4j 2 team is pleased to announce the Log4j 2.15.0 release! >> >> Apache Log4j is a well known framework for logging application behavior. >> Log4j 2 is an upgrade to Log4j that provides significant improvements over >> its predecessor, Log4j 1.x, and provides many other modern features such as >> support for Markers, lambda expressions for lazy logging, property >> substitution using Lookups, multiple patterns on a PatternLayout and >> asynchronous Loggers. Another notable Log4j 2 feature is the ability to be >> "garbage-free" (avoid allocating temporary objects) while logging. In >> addition, Log4j 2 will not lose events while reconfiguring. >> >> The artifacts may be downloaded from >> https://logging.apache.org/log4j/2.x/download.html >> <https://logging.apache.org/log4j/2.x/download.html> >> <https://logging.apache.org/log4j/2.x/download.html >> <https://logging.apache.org/log4j/2.x/download.html>> >> <https://logging.apache.org/log4j/2.x/download.html >> <https://logging.apache.org/log4j/2.x/download.html> >> <https://logging.apache.org/log4j/2.x/download.html >> <https://logging.apache.org/log4j/2.x/download.html>>>. >> >> This release contains a number of bug fixes and minor enhancements which are >> listed below. >> >> The Log4j team has been made aware of a security vulnerability, >> CVE-2021-44228, that has been addressed in Log4j 2.15.0. >> >> Log4j’s JNDI support has not restricted what names could be resolved. Some >> protocols are unsafe or can allow remote code execution. Log4j now limits >> the protocols by default to only java, ldap, and ldaps and limits the ldap >> protocols to only accessing Java primitive objects by default served on the >> local host. >> >> One vector that allowed exposure to this vulnerability was Log4j’s allowance >> of Lookups to appear in log messages. As of Log4j 2.15.0 this feature is now >> disabled by default. While an option has been provided to enable Lookups in >> this fashion, users are strongly discouraged from enabling it. >> >> Users who cannot upgrade to 2.15.0 can mitigate the exposure by: >> >> a) Users of Log4j 2.10 or greater may add -Dlog4j.formatMsgNoLookups=true as >> a command line option or add log4j.formatMsgNoLookups=true to a >> log4j2.component.properties file on the classpath to prevent lookups in log >> event messages. >> b) Users since Log4j 2.7 may specify %m{nolookups} in the PatternLayout >> configuration to prevent lookups in log event messages. >> c) Remove the JndiLookup and JndiManager classes from the log4j-core jar. >> Removal of the JndiManager will cause the JndiContextSelector and >> JMSAppender to no longer function. >> >> Due to a break in compatibility in the SLF4J binding, Log4j now ships with >> two versions of the SLF4J to Log4j adapters. log4j-slf4j-impl should be used >> with SLF4J 1.7.x and earlier and log4j-slf4j18-impl should be used with >> SLF4J 1.8.x and later. SLF4J-2.0.0 alpha releases are not fully supported. >> See https://issues.apache.org/jira/browse/LOG4J2-2975 >> <https://issues.apache.org/jira/browse/LOG4J2-2975> >> <https://issues.apache.org/jira/browse/LOG4J2-2975 >> <https://issues.apache.org/jira/browse/LOG4J2-2975>> >> <https://issues.apache.org/jira/browse/LOG4J2-2975 >> <https://issues.apache.org/jira/browse/LOG4J2-2975> >> <https://issues.apache.org/jira/browse/LOG4J2-2975 >> <https://issues.apache.org/jira/browse/LOG4J2-2975>>> and >> https://jira.qos.ch/browse/SLF4J-511 <https://jira.qos.ch/browse/SLF4J-511> >> <https://jira.qos.ch/browse/SLF4J-511 >> <https://jira.qos.ch/browse/SLF4J-511>> >> <https://jira.qos.ch/browse/SLF4J-511 <https://jira.qos.ch/browse/SLF4J-511> >> <https://jira.qos.ch/browse/SLF4J-511 >> <https://jira.qos.ch/browse/SLF4J-511>>>. >> >> Some of the new features in Log4j 2.15.0 include: >> >> • Support for Arbiters, which are conditionals that can enable sections >> of the logging configuration for inclusion or exclusion. In particular, >> SpringProfile, SystemProperty, Script, and Class Arbiters have been provided >> that use the Spring profile, System property, the result of a script, or the >> presence of a class respectively to determine whether a section of >> configuration should be included. >> • Support for Jakarta EE 9. This is functionally equivalent to Log4j's >> log4j-web module but uses the Jakarta project. >> • Various performance improvements. >> >> Key changes to note: >> >> • Prior to this release Log4j would automatically resolve Lookups >> contained in the message or its parameters in the Pattern Layout. This >> behavior is no longer the default and must be enabled by specifying >> %msg{lookup}. >> • The JNDI Lookup has been restricted to only support the java, ldap, >> and ldaps protocols by default. LDAP also no longer supports classes that >> implement the Referenceable interface and restricts the Serializable classes >> to the Java primative classes by default and requires an allow list to be >> specified to access remote LDAP servers. >> The Log4j 2.15.0 API, as well as many core components, maintains binary >> compatibility with previous releases. >> >> GA Release 2.15.0 >> >> Changes in this version include: >> >> New Features >> >> • LOG4J2-3198: Pattern layout no longer enables lookups within message >> text by default for cleaner API boundaries and reduced formatting overhead. >> The old 'log4j2.formatMsgNoLookups' which enabled this behavior has been >> removed as well as the 'nolookups' message pattern converter option. The old >> behavior can be enabled on a per-pattern basis using '%m{lookups}'. >> • LOG4J2-3194: Allow fractional attributes for size attribute of >> SizeBsaedTriggeringPolicy. Thanks to markuss. >> • LOG4J2-2978: Add support for Jakarta EE 9 (Tomcat 10 / Jetty 11) >> Thanks to Michael Seele. >> • LOG4J2-3189: Improve NameAbbreviator worst-case performance. >> • LOG4J2-3170: Make CRLF/HTML encoding run in O(n) worst-case time, >> rather than O(n^2). Thanks to Gareth Smith. >> • LOG4J2-3133: Add missing slf4j-api singleton accessors to >> log4j-slf4j-impl (1.7) StaticMarkerBinder and StaticMDCBinder. This doesn't >> impact behavior or correctness, but avoids throwing and catching >> NoSuchMethodErrors when slf4j is initialized and avoids linkage linting >> warnings. >> • LOG4J2-2885: Add support for US-style date patterns and micro/nano >> seconds to FixedDateTime. Thanks to Markus Spann. >> • LOG4J2-3116: Add JsonTemplateLayout for Google Cloud Platform >> structured logging layout. >> • LOG4J2-3067: Add CounterResolver to JsonTemplateLayout. >> • LOG4J2-3074: Add replacement parameter to ReadOnlyStringMapResolver. >> • LOG4J2-3051: Add CaseConverterResolver to JsonTemplateLayout. >> • LOG4J2-3064: Add Arbiters and SpringProfile plugin. >> • LOG4J2-3056: Refactor MD5 usage for sharing sensitive information. >> Thanks to Marcono1234. >> • LOG4J2-3004: Add plugin support to JsonTemplateLayout. >> • LOG4J2-3050: Allow AdditionalFields to be ignored if their value is >> null or a zero-length String. >> • LOG4J2-3049: Allow MapMessage and ThreadContext attributes to be >> prefixed. >> • LOG4J2=3048: Add improved MapMessge support to GelfLayout. >> • LOG4J2-3044: Add RepeatPatternConverter. >> • LOG4J2-2940: Context selectors are aware of their dependence upon the >> callers ClassLoader, allowing basic context selectors to avoid the >> unnecessary overhead of walking the stack to determine the caller's >> ClassLoader. >> • LOG4J2-2940: Add BasicAsyncLoggerContextSelector equivalent to >> AsyncLoggerContextSelector for applications with a single LoggerContext. >> This selector avoids classloader lookup overhead incurred by the existing >> AsyncLoggerContextSelector. >> • LOG4J2-3041: Allow a PatternSelector to be specified on GelfLayout. >> • LOG4J2-3141: Avoid ThreadLocal overhead in RandomAccessFileAppender, >> RollingRandomAccessFileManager, and MemoryMappedFileManager due to the >> unused setEndOfBatch and isEndOfBatch methods. The methods on LogEvent are >> preferred. >> • LOG4J2-3144: Prefer string.getBytes(Charset) over >> string.getBytes(String) based on performance improvements in modern Java >> releases. >> • LOG4J2-3171: Improve PatternLayout performance by reducing >> unnecessary indirection and branching. >> Fixed Bugs >> >> • LOG4J2-3201: Limit the protocols JNDI can use by default. Limit the >> servers and classes that can be accessed via LDAP. >> • LOG4J2-3114: Enable immediate flush on RollingFileAppender when >> buffered i/o is not enabled. Thanks to Barnabas Bodnar. >> • LOG4J2-3168: Fix bug when file names contain regex characters. Thanks >> to Benjamin Wöster. >> • LOG4J2-3110: Fix the number of {}-placeholders in the string literal >> argument does not match the number of other arguments to the logging call. >> Thanks to Arturo Bernal. >> • LOG4J2-3060: Fix thread-safety issues in DefaultErrorHandler. Thanks >> to Nikita Mikhailov. >> • LOG4J2-3185: Fix thread-safety issues in DefaultErrorHandler. Thanks >> to mzbonnt. >> • LOG4J2-3183: Avoid using MutableInstant of the event as a cache key >> in JsonTemplateLayout. >> • LOG4J2-2829: SocketAppender should propagate failures when >> reconnection fails. >> • LOG4J2-3172: Buffer immutable log events in the SmtpManager. Thanks >> to Barry Fleming. >> • LOG4J2-3175: Avoid KafkaManager override when topics differ. Thanks >> to wuqian0808. >> • LOG4J2-3160: Fix documentation on how to toggle log4j2.debug system >> property. Thanks to Lars Bohl. >> • LOG4J2-3159: Fixed an unlikely race condition in >> Log4jMarker.getParents() volatile access. >> • LOG4J2-3153: DatePatternConverter performance is not impacted by >> microsecond-precision clocks when such precision isn't required. >> • LOG4J2-2808: LoggerContext skips resolving localhost when hostName is >> configured. Thanks to Asapha Halifa. >> • LOG4J2-3150: RandomAccessFile appender uses the correct default >> buffer size of 256 kB rather than the default appender buffer size of 8 kB. >> • LOG4J2-3142: log4j-1.2-api implements LogEventAdapter.getTimestamp() >> based on the original event timestamp instead of returning zero. Thanks to >> John Meikle. >> • LOG4J2-3083: log4j-slf4j-impl and log4j-slf4j18-impl correctly detect >> the calling class using both LoggerFactory.getLogger methods as well as >> LoggerFactory.getILoggerFactory().getLogger. >> • LOG4J2-2816: Handle Disruptor event translation exceptions. Thanks to >> Jacob Shields. >> • LOG4J2-3121: log4j2 config modified at run-time may trigger >> incomplete MBean re-initialization due to InstanceAlreadyExistsException. >> Thanks to Markus Spann. >> • LOG4J2-3107: SmtpManager.createManagerName ignores port. Thanks to >> Markus Spann. >> • LOG4J2-3080: Use SimpleMessage in Log4j 1 Category whenever possible. >> • LOG4J2-3102: Fix a regression in 2.14.1 which allowed the >> AsyncAppender background thread to keep the JVM alive because the daemon >> flag was not set. >> • LOG4J2-3103: Fix race condition which can result in >> ConcurrentModificationException on context.stop. Thanks to Mike Glazer. >> • LOG4J2-3092: Fix JsonWriter memory leaks due to retained excessive >> buffer growth. Thanks to xmh51. >> • LOG4J2-3089: Fix sporadic JsonTemplateLayoutNullEventDelimiterTest >> failures on Windows. Thanks to Tim Perry. >> • LOG4J2-3075: Fix formatting of nanoseconds in JsonTemplateLayout. >> • LOG4J2-3087: Fix race in JsonTemplateLayout where a timestamp could >> end up unquoted. Thanks to Anton Klarén. >> • LOG4J2-3070: Ensure EncodingPatternConverter#handlesThrowable is >> implemented. Thanks to Romain Manni-Bucau. >> • LOG4J2-3054: BasicContextSelector hasContext and shutdown take the >> default context into account >> • LOG4J2-2940: Slf4j implementations walk the stack at most once rather >> than twice to determine the caller's class loader. >> • LOG4J2-2965: Fixed a deadlock between the AsyncLoggerContextSelector >> and java.util.logging.LogManager by updating Disruptor to 3.4.4. >> • LOG4J2-3095: Category.setLevel should accept null value. Thanks to >> Kenny MacLeod, Gary Gregory. >> • LOG4J2-3174: Wrong subject on mail when it depends on the LogEvent >> Thanks to romainmoreau. >> Changes >> >> • : Update Spring framework to 5.3.13, Spring Boot to 2.5.7, and Spring >> Cloud to 2020.0.4. >> >> • LOG4J2-2025: Provide support for overriding the Tomcat Log class in >> Tomcat 8.5+. >> >> • : Updated dependencies. >> >> - com.fasterxml.jackson.core:jackson-annotations ................. 2.12.2 -> >> 2.12.4 >> - com.fasterxml.jackson.core:jackson-core ........................ 2.12.2 -> >> 2.12.4 >> - com.fasterxml.jackson.core:jackson-databind .................... 2.12.2 -> >> 2.12.4 >> - com.fasterxml.jackson.dataformat:jackson-dataformat-xml ........ 2.12.2 -> >> 2.12.4 >> - com.fasterxml.jackson.dataformat:jackson-dataformat-yaml ....... 2.12.2 -> >> 2.12.4 >> - com.fasterxml.jackson.module:jackson-module-jaxb-annotations ... 2.12.2 -> >> 2.12.4 >> - com.fasterxml.woodstox:woodstox-core ........................... 6.2.4 -> >> 6.2.6 >> - commons-io:commons-io .......................................... 2.8.0 -> >> 2.11.0 >> - net.javacrumbs.json-unit:json-unit ............................. 2.24.0 -> >> 2.25.0 >> - net.javacrumbs.json-unit:json-unit ............................. 2.25.0 -> >> 2.27.0 >> - org.apache.activemq:activemq-broker ............................ 5.16.1 -> >> 5.16.2 >> - org.apache.activemq:activemq-broker ............................ 5.16.2 -> >> 5.16.3 >> - org.apache.commons:commons-compress ............................ 1.20 -> >> 1.21 >> - org.apache.commons:commons-csv ................................. 1.8 -> >> 1.9.0 >> - org.apache.commons:commons-dbcp2 ............................... 2.8.0 -> >> 2.9.0 >> - org.apache.commons:commons-pool2 ............................... 2.9.0 -> >> 2.11.1 >> - org.apache.maven.plugins:maven-failsafe-plugin ................. 2.22.2 -> >> 3.0.0-M5 >> - org.apache.maven.plugins:maven-surefire-plugin ................. 2.22.2 -> >> 3.0.0-M5 >> - org.apache.rat:apache-rat-plugin ............................... 0.12 -> >> 0.13 >> - org.assertj:assertj-core ....................................... 3.19.0 -> >> 3.20.2 >> - org.codehaus.groovy:groovy-dateutil ............................ 3.0.7 -> >> 3.0.8 >> - org.codehaus.groovy:groovy-jsr223 .............................. 3.0.7 -> >> 3.0.8 >> - org.codehaus.plexus:plexus-utils ............................... 3.3.0 -> >> 3.4.0 >> - org.eclipse.persistence:javax.persistence ...................... 2.1.1 -> >> 2.2.1 >> - org.eclipse.persistence:org.eclipse.persistence.jpa ............ 2.6.5 -> >> 2.6.9 >> - org.eclipse.persistence:org.eclipse.persistence.jpa ............ 2.7.8 -> >> 2.7.9 >> - org.fusesource.jansi ........................................... 2.3.2 -> >> 2.3.4 >> - org.fusesource.jansi:jansi ..................................... 2.3.1 -> >> 2.3.2 >> - org.hsqldb:hsqldb .............................................. 2.5.1 -> >> 2.5.2 >> - org.junit.jupiter:junit-jupiter-engine ......................... 5.7.1 -> >> 5.7.2 >> - org.junit.jupiter:junit-jupiter-migrationsupport ............... 5.7.1 -> >> 5.7.2 >> - org.junit.jupiter:junit-jupiter-params ......................... 5.7.1 -> >> 5.7.2 >> - org.junit.vintage:junit-vintage-engine ......................... 5.7.1 -> >> 5.7.2 >> - org.liquibase:liquibase-core ................................... 3.5.3 -> >> 3.5.5 >> - org.mockito:mockito-core ....................................... 3.8.0 -> >> 3.11.2 >> - org.mockito:mockito-junit-jupiter .............................. 3.8.0 -> >> 3.11.2 >> - org.springframework:spring-aop ................................. 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-beans ............................... 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-context ............................. 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-context-support ..................... 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-core ................................ 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-expression .......................... 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-oxm ................................. 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-test ................................ 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-web ................................. 5.3.3 -> >> 5.3.9 >> - org.springframework:spring-webmvc .............................. 5.3.3 -> >> 5.3.9 >> - org.tukaani:xz ................................................. 1.8 -> 1.9 >> >> Apache Log4j 2.15.0 requires a minimum of Java 8 to build and run. Log4j >> 2.12.1 is the last release to support Java 7. Java 7 is not longer supported >> by the Log4j team. >> >> For complete information on Apache Log4j 2, including instructions on how to >> submit bug reports, patches, or suggestions for improvement, see the Apache >> Apache Log4j 2 website: > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > <mailto:log4j-user-unsubscr...@logging.apache.org> > For additional commands, e-mail: log4j-user-h...@logging.apache.org > <mailto:log4j-user-h...@logging.apache.org>