You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Nick Kom (Jira)" <ji...@apache.org> on 2022/01/18 17:41:00 UTC

[jira] [Updated] (LOG4J2-3346) After 2.17.0 upgarde Route appenders with dynamic file writing are not working

     [ https://issues.apache.org/jira/browse/LOG4J2-3346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nick Kom updated LOG4J2-3346:
-----------------------------
    Description: 
We switched from the version 2.11.1 to 2.17.0 and writing to separate files stopped working. Configuration log4j:
{code:xml}
<Appenders>
...
<Routing name="routing">
            <Routes pattern="$${ctx:V_PID}">
                <Route>
                    <RollingFile name="rolling-${ctx:V_PID}" fileName="${logPath}/task-${ctx:V_PID}.log"
                                             filePattern="${logArchPath}/task-${ctx:V_PID}-${archFile}" ignoreExceptions="false">
                        <PatternLayout pattern="${pattern}"/>
                        <SizeBasedTriggeringPolicy size="10 MB"/>
                    </RollingFile>
                </Route>
            </Routes>
            <IdlePurgePolicy timeToLive="2" timeUnit="minutes"/>
</Routing>
...
</Appenders>

<Loggers>
    <Logger name="com.rou.let" level="trace">
            <AppenderRef ref="routing"/>
    </Logger>
</Loggers>{code}
 In code we use Slf4J logger (org.slf4j.Logger) and org.apache.logging.log4j.ThreadContext :
{code:java}
ThreadContext.put("V_PID", pid); 
org.slf4j.Logger logger =org.slf4j.LoggerFactory.getLogger(MessageFormat.format(...));
{code}
 maven dependencies in pom.xml: 
{code:xml}
....
<slf4j.version>1.7.7</slf4j.version> 
<log4j2.version>2.17.0</log4j2.version>
...
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
...
{code}
We use this in our web application which is deployed on Weblogic 12.2.1.0.0

What can be wrong? Why aren't separate files (task-${ctx:V_PID}.log) created in the folder \{logPath}? 

Before library version 2.12.2 (inclusive),it's worked!
    Environment:     (was: We switched from the version 2.11.1 to 2.17.0 and writing to separate files stopped working. Configuration log4j:
{code:xml}
<Appenders>
...
<Routing name="routing">
            <Routes pattern="$${ctx:V_PID}">
                <Route>
                    <RollingFile name="rolling-${ctx:V_PID}" fileName="${logPath}/task-${ctx:V_PID}.log"
                                             filePattern="${logArchPath}/task-${ctx:V_PID}-${archFile}" ignoreExceptions="false">
                        <PatternLayout pattern="${pattern}"/>
                        <SizeBasedTriggeringPolicy size="10 MB"/>
                    </RollingFile>
                </Route>
            </Routes>
            <IdlePurgePolicy timeToLive="2" timeUnit="minutes"/>
</Routing>
...
</Appenders>

<Loggers>
    <Logger name="com.rou.let" level="trace">
            <AppenderRef ref="routing"/>
    </Logger>
</Loggers>{code}
 In code we use Slf4J logger (org.slf4j.Logger) and org.apache.logging.log4j.ThreadContext :
{code:java}
ThreadContext.put("V_PID", pid); 
org.slf4j.Logger logger =org.slf4j.LoggerFactory.getLogger(MessageFormat.format(...));
{code}
 maven dependencies in pom.xml: 
{code:xml}
....
<slf4j.version>1.7.7</slf4j.version> 
<log4j2.version>2.17.0</log4j2.version>
...
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
...
{code}
We use this in our web application which is deployed on Weblogic 12.2.1.0.0

What can be wrong? Why aren't separate files (task-${ctx:V_PID}.log) created in the folder \{logPath}? 

Before library version 2.12.2 (inclusive),it's worked!)

> After 2.17.0 upgarde Route appenders with dynamic file writing are not working 
> -------------------------------------------------------------------------------
>
>                 Key: LOG4J2-3346
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3346
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.17.0
>            Reporter: Nick Kom
>            Priority: Major
>
> We switched from the version 2.11.1 to 2.17.0 and writing to separate files stopped working. Configuration log4j:
> {code:xml}
> <Appenders>
> ...
> <Routing name="routing">
>             <Routes pattern="$${ctx:V_PID}">
>                 <Route>
>                     <RollingFile name="rolling-${ctx:V_PID}" fileName="${logPath}/task-${ctx:V_PID}.log"
>                                              filePattern="${logArchPath}/task-${ctx:V_PID}-${archFile}" ignoreExceptions="false">
>                         <PatternLayout pattern="${pattern}"/>
>                         <SizeBasedTriggeringPolicy size="10 MB"/>
>                     </RollingFile>
>                 </Route>
>             </Routes>
>             <IdlePurgePolicy timeToLive="2" timeUnit="minutes"/>
> </Routing>
> ...
> </Appenders>
> <Loggers>
>     <Logger name="com.rou.let" level="trace">
>             <AppenderRef ref="routing"/>
>     </Logger>
> </Loggers>{code}
>  In code we use Slf4J logger (org.slf4j.Logger) and org.apache.logging.log4j.ThreadContext :
> {code:java}
> ThreadContext.put("V_PID", pid); 
> org.slf4j.Logger logger =org.slf4j.LoggerFactory.getLogger(MessageFormat.format(...));
> {code}
>  maven dependencies in pom.xml: 
> {code:xml}
> ....
> <slf4j.version>1.7.7</slf4j.version> 
> <log4j2.version>2.17.0</log4j2.version>
> ...
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>slf4j-api</artifactId>
> <version>${slf4j.version}</version>
> </dependency>
> <dependency>
> <groupId>org.apache.logging.log4j</groupId>
> <artifactId>log4j-slf4j-impl</artifactId>
> <version>${log4j2.version}</version>
> </dependency>
> <dependency>
> <groupId>org.apache.logging.log4j</groupId>
> <artifactId>log4j-api</artifactId>
> <version>${log4j2.version}</version>
> </dependency>
> <dependency>
> <groupId>org.apache.logging.log4j</groupId>
> <artifactId>log4j-core</artifactId>
> <version>${log4j2.version}</version>
> </dependency>
> ...
> {code}
> We use this in our web application which is deployed on Weblogic 12.2.1.0.0
> What can be wrong? Why aren't separate files (task-${ctx:V_PID}.log) created in the folder \{logPath}? 
> Before library version 2.12.2 (inclusive),it's worked!



--
This message was sent by Atlassian Jira
(v8.20.1#820001)