Skip to main content
Announcements
A fresh, new look for the Data Integration & Quality forums and navigation! Read more about what's changed.
cancel
Showing results for 
Search instead for 
Did you mean: 
UName1615412505
Contributor

Change log4j log level with context variable

Hello everyone,

I'm trying to configure my log4j file in order to change the level and directory of my logs using context parameters. I've managed to change the directory but not the level. Here's what I've done so far :

--------------------------------------------------------xml file in File => Edite project properties --------------------------------------

<?xml version="1.0" encoding="UTF-8"?>

<Configuration > 

    <Appenders> 

        <Console name="Console" target="SYSTEM_OUT"> 

            <PatternLayout pattern="[%-5level] %d{HH:mm:ss} %logger{36}- %msg%n" />

       </Console>

 

                              <File name="File" fileName="${sys:TalendJob.log}" >

           <PatternLayout>

               <pattern>[%highlight{%-5level}] %d{HH:mm:ss} %logger{36}- %msg%n</pattern>

           </PatternLayout>

          <DynamicThresholdFilter key="myLogLvl" defaultThreshold="WARN"

                                     onMatch="ACCEPT" onMismatch="DENY">

               <KeyValuePair key="TRACE" value="TRACE"/>

               <KeyValuePair key="DEBUG" value="DEBUG"/>

               <KeyValuePair key="INFO" value="INFO"/>

               <KeyValuePair key="WARN" value="WARN"/>

               <KeyValuePair key="FATAL" value="FATAL"/>

             </DynamicThresholdFilter>

       </File>

   </Appenders> 

    

    <Loggers>

    <Logger name="logFile">

     <AppenderRef ref="File"/>

   </Logger>

 

    <Root>

       <AppenderRef ref="Console"/>

       </Root>

 

   </Loggers> 

</Configuration>

-------------------------------------------------------- a tJava component in my jobs --------------------------------------

import org.apache.logging.log4j.ThreadContext

import org.apache.logging.log4j.LogManager

ThreadContext.put("myLogLvl", "TRACE");

 

String fileName = context.LogPath + jobName + "_" + TalendDate.formatDate("yyyyMMdd_HHmmss", TalendDate.getCurrentDate()) + context.fileType;

 

System.setProperty("TalendJob.log",fileName);

 

org.apache.logging.log4j.core.LoggerContext ctx =(org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);

 

ctx.reconfigure();

The log level doesn't seem to be affect on the file when changing ThreadContext.

Labels (4)
0 Replies