
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
