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

Volkan Yazici updated LOG4J2-3009:
----------------------------------
    Description: 
I have Java based application with a single thread connected to JBOSS MQ. 
Whenever there is a message in the queue then it pulls the message and sets the 
thread name with one of the message's attribute (REQUEST_ID) and continues 
processing. After application startup, the logging is fine for the first 
message. But from the second message, the change in the thread name is not 
reflecting in the logs.
h2. Example code
{code:java}
private static Logger logger = 
LogManager.getLogger(EngineManager.class.getName());

private synchronized void onMessage(javax.jms.Message msg) {
    Thread.currentThread().setName(msg.getStringProperty("REQUEST_ID"));
    logger.info("Received a Message Event: Time spent:" + 
(System.currentTimeMillis()-msg.getJMSTimestamp()) + "ms");
    // ...
}
{code}
h2. Configuration
{code:java}
appender.console.layout.pattern = %d\{ABSOLUTE} %c{1} [%t] - %m%n
{code}
h2. Output
{code:java}
19:29:52,726 EngineManager [sddsdsdgdd-dfvdddbfvs-2343412] - Received a Message 
Event: Time spent: 44ms
{code}
 

Rest everything is fine that's why I have given small portion of the code. What 
I need is when there is a second message (so on) in the queue then above 
REQUEST_ID should change in the logs. It is always same for all the messages. I 
tried different ways like {{LoggerContext.reconfigure()}}, 
{{LogManager.shutdown()}} and then {{getLogger()}} etc but couldn't succeed.

  was:
I have Java based application with a single thread connected to JBOSS MQ. 
Whenever there is a message in the queue then it pulls the message and sets the 
thread name with one of the message's attribute (transactionid) and continues 
processing. After application startup, the logging is fine for the first 
message. But from the second message, the change in the thread name is not 
reflecting in the logs.

Example code:
 
{{private static Logger logger = 
LogManager.getLogger(EngineManager.class.getName());}}

{{private synchronized void onMessage(javax.jms.Message msg)}}

{{{}}

{{Thread.currentThread().setName(msg.getStringProperty("REQUEST_ID"));
logger.info("Received a Message Event: Time spent:" + 
(System.currentTimeMillis()-msg.getJMSTimestamp()) + "ms");
...

}}}

{{}}

{{log4j2.properties:}}

{{...}}

{{appender.console.layout.pattern = %d\{ABSOLUTE} %c{1} [%t] - %m%n}}

{{...}}

Output:
{quote}19:29:52,726 EngineManager [sddsdsdgdd-dfvdddbfvs-2343412] - Received a 
Message Event: Time spent: 44ms
{quote}
 

Rest everything is fine that's why I have given small portion of the code. What 
I need is when there is a second message (so on) in the queue then above 
transactionid (the one in []) should change in the logs. It is always same for 
all the messages. I tried different ways like {{LoggerContext.reconfigure()}}, 
{{LogManager.shutdowm()}} and then {{getLogger}} etc but couldn't succeed. 
Please help.


> Change of java Thread name is not reflecting in log4j2 logs (pattern %t)
> ------------------------------------------------------------------------
>
>                 Key: LOG4J2-3009
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3009
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core, Pattern Converters
>    Affects Versions: 2.8.2
>            Reporter: Rohan Ramchander
>            Priority: Major
>   Original Estimate: 336h
>  Remaining Estimate: 336h
>
> I have Java based application with a single thread connected to JBOSS MQ. 
> Whenever there is a message in the queue then it pulls the message and sets 
> the thread name with one of the message's attribute (REQUEST_ID) and 
> continues processing. After application startup, the logging is fine for the 
> first message. But from the second message, the change in the thread name is 
> not reflecting in the logs.
> h2. Example code
> {code:java}
> private static Logger logger = 
> LogManager.getLogger(EngineManager.class.getName());
> private synchronized void onMessage(javax.jms.Message msg) {
>     Thread.currentThread().setName(msg.getStringProperty("REQUEST_ID"));
>     logger.info("Received a Message Event: Time spent:" + 
> (System.currentTimeMillis()-msg.getJMSTimestamp()) + "ms");
>     // ...
> }
> {code}
> h2. Configuration
> {code:java}
> appender.console.layout.pattern = %d\{ABSOLUTE} %c{1} [%t] - %m%n
> {code}
> h2. Output
> {code:java}
> 19:29:52,726 EngineManager [sddsdsdgdd-dfvdddbfvs-2343412] - Received a 
> Message Event: Time spent: 44ms
> {code}
>  
> Rest everything is fine that's why I have given small portion of the code. 
> What I need is when there is a second message (so on) in the queue then above 
> REQUEST_ID should change in the logs. It is always same for all the messages. 
> I tried different ways like {{LoggerContext.reconfigure()}}, 
> {{LogManager.shutdown()}} and then {{getLogger()}} etc but couldn't succeed.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to