[
https://issues.apache.org/jira/browse/LOG4J2-3468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pooja Pandey updated LOG4J2-3468:
---------------------------------
Description:
In my application where I am using custom logger and custom ContextSelector
log4j2 2.17.2 version, I have 2 processes running and there are 3 webapps war
files which get deployed in tomcat version 9.0.60. Out of these 3 war files,
one war file is internal to my application while other 2 are coming as final
artifacts from artifiactory.
My war uses a custom logger and custom ContextSelector, however other 2 wars
from artifactory use standard logger and standard ContextSelector.
I have defined below system property as a static block in custom logger.
_*static {*_
_*System.setProperty("Log4jContextSelector",
"logger.log4j2.CustomLog4j2ContextSelector");*_
_*}*_
However, logger gets initialized before the execution of above static block in
custom logger and before the deployment of wars. And due to this log4j jars
which are kept outside of war, don't find this property and during the
deployment of my internal war file leads to ClassCastException
"java.lang.ClassCastException:
org.apache.logging.log4j.core.selector.ContextSelector cannot be cast to
logger.log4j2.CustomLog4j2ContextSelector". To fix this I have placed
'log4j2.component.properties' file on log4j jars class path.
Content of file 'log4j2.component.properties' ->
_*Log4jContextSelector=logger.log4j2.CustomLog4j2ContextSelector*_
But with this fix, for other 2 wars I get following below harmless error(wars
functionality works fine) when I keep 'log4j2.component.properties' file on
log4j jars class path.
_*ERROR StatusLogger Unable to create custom ContextSelector. Falling back to
default.*_
_*"java.lang.ClassCastException: Cannot cast
logger.log4j2.CustomLog4j2ContextSelector to
org.apache.logging.log4j.core.selector.ContextSelector".*_
I am looking for help to come up with a solution where, when my war gets
deployed then custom logger context "logger.log4j2.CustomLog4j2ContextSelector"
should be used while when other 2 wars get deployed then
"org.apache.logging.log4j.core.selector.ContextSelector" should be used. Please
let me know if you have any idea on this.
was:
In my application where I am using custom logger and custom ContextSelector
log4j2 2.17.2 version, I have 2 processes running and there are 3 webapps war
files which get deployed in tomcat version 9.0.60. Out of these 3 war files,
one war file is internal to my application while other 2 are coming as final
artifacts from artifiactory.
My war uses a custom logger and custom ContextSelector, however other 2 wars
from artifactory use standard logger and standard ContextSelector.
I have defined below system property as a static block in custom logger.
_*static {*_
_*System.setProperty("Log4jContextSelector",
"logger.log4j2.CustomLog4j2ContextSelector");*_
_*}*_
However for some unknown reason when my war gets deployed this log4j jars don't
find this property and leads to ClassCastException
"java.lang.ClassCastException:
org.apache.logging.log4j.core.selector.ContextSelector cannot be cast to
logger.log4j2.CustomLog4j2ContextSelector". To fix this I have placed
'log4j2.component.properties' file on log4j jars class path.
Content of file 'log4j2.component.properties' ->
_*Log4jContextSelector=logger.log4j2.CustomLog4j2ContextSelector*_
But with this fix, for other 2 wars I get following below harmless error(wars
functionality works fine) when I keep 'log4j2.component.properties' file on
log4j jars class path, to fix class cast exception which I was getting earlier
during deployment of my war file.
_*ERROR StatusLogger Unable to create custom ContextSelector. Falling back to
default.*_
_*"java.lang.ClassCastException: Cannot cast
logger.log4j2.CustomLog4j2ContextSelector to
org.apache.logging.log4j.core.selector.ContextSelector".*_
I am looking for help to come up with a solution where, when my war gets
deployed then custom logger context "logger.log4j2.CustomLog4j2ContextSelector"
should be used while when other 2 wars get deployed then
"org.apache.logging.log4j.core.selector.ContextSelector" should be used. Please
let me know if you have any idea on this.
> can we set log4j property 'Log4jContextSelector' per webapps war deployment
> ---------------------------------------------------------------------------
>
> Key: LOG4J2-3468
> URL: https://issues.apache.org/jira/browse/LOG4J2-3468
> Project: Log4j 2
> Issue Type: Question
> Components: Log4j 1.2 bridge
> Affects Versions: 2.17.2
> Reporter: Pooja Pandey
> Priority: Major
>
> In my application where I am using custom logger and custom ContextSelector
> log4j2 2.17.2 version, I have 2 processes running and there are 3 webapps war
> files which get deployed in tomcat version 9.0.60. Out of these 3 war files,
> one war file is internal to my application while other 2 are coming as final
> artifacts from artifiactory.
> My war uses a custom logger and custom ContextSelector, however other 2 wars
> from artifactory use standard logger and standard ContextSelector.
>
> I have defined below system property as a static block in custom logger.
> _*static {*_
> _*System.setProperty("Log4jContextSelector",
> "logger.log4j2.CustomLog4j2ContextSelector");*_
> _*}*_
> However, logger gets initialized before the execution of above static block
> in custom logger and before the deployment of wars. And due to this log4j
> jars which are kept outside of war, don't find this property and during the
> deployment of my internal war file leads to ClassCastException
> "java.lang.ClassCastException:
> org.apache.logging.log4j.core.selector.ContextSelector cannot be cast to
> logger.log4j2.CustomLog4j2ContextSelector". To fix this I have placed
> 'log4j2.component.properties' file on log4j jars class path.
> Content of file 'log4j2.component.properties' ->
> _*Log4jContextSelector=logger.log4j2.CustomLog4j2ContextSelector*_
> But with this fix, for other 2 wars I get following below harmless error(wars
> functionality works fine) when I keep 'log4j2.component.properties' file on
> log4j jars class path.
> _*ERROR StatusLogger Unable to create custom ContextSelector. Falling back to
> default.*_
> _*"java.lang.ClassCastException: Cannot cast
> logger.log4j2.CustomLog4j2ContextSelector to
> org.apache.logging.log4j.core.selector.ContextSelector".*_
>
> I am looking for help to come up with a solution where, when my war gets
> deployed then custom logger context
> "logger.log4j2.CustomLog4j2ContextSelector" should be used while when other 2
> wars get deployed then
> "org.apache.logging.log4j.core.selector.ContextSelector" should be used.
> Please let me know if you have any idea on this.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)