MohammadNC opened a new issue, #2765:
URL: https://github.com/apache/logging-log4j2/issues/2765

   Hi Team,
   
   Debug level logs are getting printed when log level is set WARN, please 
refer the below log4j configs and sample java code where Debug logs are getting 
printed.
   
   
   <?xml version="1.0" encoding="UTF-8"?>
   <Configuration>
        <Properties>
           <Property 
name="sourceApp">${bundle:application:spring.application.name}</Property>
           <Property 
name="sourceAppVersion">${bundle:application:spring.application.version}</Property>
           <Property 
name="subsystem">${bundle:application:spring.module.name}</Property>
      </Properties>
      <Appenders>
         <Console name="console" target="SYSTEM_OUT">
             <JsonTemplateLayout eventTemplateUri="classpath:JsonLayout.json">
                 <EventTemplateAdditionalField key="messageId" 
value="$${ctx:x-request-id:-}" />
                 <EventTemplateAdditionalField key="messageTimestamp" 
value="$${date:YYYY-MM-dd'T'HH:mm:ss.SSSZ}" />
                 <EventTemplateAdditionalField key="application" 
value="$${env:APP_NAME}" />
                 <EventTemplateAdditionalField key="microservice" 
value="$${env:MICROSERVICE_NAME}" />
                 <EventTemplateAdditionalField key="engVersion" 
value="$${env:ENGINEERING_VERSION}" />
                 <EventTemplateAdditionalField key="mktgVersion" 
value="$${env:MARKETING_VERSION}" />
                 <EventTemplateAdditionalField key="vendor" value="oracle" />
                 <EventTemplateAdditionalField key="namespace" 
value="$${env:K8S_NAMESPACE}" />
                 <EventTemplateAdditionalField key="node" 
value="$${env:K8S_NODE}" />
                 <EventTemplateAdditionalField key="pod" 
value="$${env:POD_NAME}" />
                 <EventTemplateAdditionalField key="subsystem" 
value="${subsystem}" />
                 <EventTemplateAdditionalField key="instanceType" value="prod" 
/>
                 <EventTemplateAdditionalField key="processId" 
value="$${sys:PID}" />             
             </JsonTemplateLayout>
         </Console>
      </Appenders>
        <Loggers>
                <Root level="info" additivity="false">
                        <AppenderRef ref="console" />
                </Root>
        </Loggers>
   </Configuration>
   
   java code:
   
   `
   import java.util.List;
   import java.util.Map;
   import java.util.Objects;
   import java.util.Set;
   
   import org.apache.logging.log4j.LogManager;
   import org.apache.logging.log4j.Logger;
   import org.springframework.http.HttpHeaders;
   
   
   
   public class LciUtility {
   
        private static final Logger logger = 
LogManager.getLogger(LciUtility.class.getClass());
   
        static PeerLciLocalCache peerLciLocalCache = null;
        
        /**
         * populateRelCapacityInPriorityMap method updates the priority map in 
which it calculates the
         * effective and relative capacity of each destination weight and puts 
it back
         * in the map.
         * 
         * @param priorityMap
         * @param routeList
         * @param isInterPlmn
         */
        public static void populateRelCapacityInPriorityMap(Map<Integer, 
Set<DestinationIndexAndCapacity>> priorityMap,
                        List<DestinationWeight> routeList, boolean isInterPlmn, 
StreamInfo streamInfo) {
   
                if (logger.isDebugEnabled()) {
                        logger.debug("IN: 
LciUtility::populateRelCapacityInPriorityMap() priorityMap before update ::{} 
", priorityMap);
                }
   
                int index = 0;
                DestinationWeight destWt = null;
                //int load = 0;
                PeerLciData data = null;
                int totalCapacity = 0;
                DestinationIndexAndCapacity forwardRouteIndex = 
streamInfo.getDestinationList().getFwdRouteIndex();
                boolean needForwardRouteIndexUpdate = false;
                
                if(Objects.nonNull(forwardRouteIndex))
                {
                        needForwardRouteIndexUpdate = true;
                }
   
                peerLciLocalCache = BeanUtil.getBean(PeerLciLocalCache.class);
                for (Map.Entry<Integer, Set<DestinationIndexAndCapacity>> entry 
: priorityMap.entrySet()) {
   
                        totalCapacity = 0;
                        Set<DestinationIndexAndCapacity> indexCapSet = 
entry.getValue();
                        
                        //Skipping the relative capacity calculation if set has 
only one element. Relative capacity for single member will
                        //always be 100
                        if(indexCapSet.size() == 1) {
                                if (logger.isDebugEnabled()) {
                                        
logger.debug("DestinationIndexAndCapacity set size is 1 for priority :{}", 
entry.getKey());
                                }
                                
//indexCapSet.stream().findFirst().get().setCapacity(100);
                                DestinationIndexAndCapacity indexCap = 
indexCapSet.stream().findFirst().get();
                                indexCap.setCapacity(100);
                                if(needForwardRouteIndexUpdate && 
forwardRouteIndex.getIndex().equals(indexCap.getIndex())) {
                                        
forwardRouteIndex.setCapacity(indexCap.getCapacity());
                                        if (logger.isDebugEnabled()) {
                                                logger.debug(
                                                                
"LciUtility::populateRelCapacityInPriorityMap()::forwardRouteIndex After update 
: {}",
                                                                
forwardRouteIndex);
                                        }
                                        needForwardRouteIndexUpdate = false;
                                }
                                continue;
                        }
                        
                        for (DestinationIndexAndCapacity destIndexCapcity : 
indexCapSet) {
                                index = destIndexCapcity.getIndex();
                                destWt = routeList.get(index);
                                
                                if (logger.isDebugEnabled()) {
                                        
                                        logger.debug("Host is {} RemoteHost {}, 
isInterPlmn {}", 
destWt.getDestination().getHost(),destWt.getIsRemoteapp(),isInterPlmn);
                                }
                                
                                data = getPeerLciData(destWt, isInterPlmn, 
streamInfo.getNfServiceType());
   
                                if (Objects.isNull(data)) {
                                        logger.debug("OUT: 
LciUtility::populateRelCapacityInPriorityMap():: LCI data is not present. ");
                                        continue;
                                } else {
                                        
                                        if (logger.isDebugEnabled()) {
                                                
logger.debug("LciUtility::populateRelCapacityInPriorityMap():: value of load 
from cache is :: {} ", data);
                                                }
                                        
destIndexCapcity.setCapacity(calculateEffectiveCapacity(data.getP().getL(), 
destIndexCapcity.getCapacity()));
                                        totalCapacity = totalCapacity + 
destIndexCapcity.getCapacity();
                                }
                        }
   
                        // setting the relative capacity of all weights
                        if (totalCapacity > 0) {
                                for (DestinationIndexAndCapacity 
destIndexCapcity : indexCapSet) {
                                        
destIndexCapcity.populateRelativeCapacity(totalCapacity);
                                        if(needForwardRouteIndexUpdate && 
forwardRouteIndex.getIndex().equals(destIndexCapcity.getIndex())) {
                                                
forwardRouteIndex.setCapacity(destIndexCapcity.getCapacity());
                                                if (logger.isDebugEnabled()) {
                                                        logger.debug(
                                                                        
"LciUtility::populateRelCapacityInPriorityMap()::forwardRouteIndex After update 
: {}",
                                                                        
forwardRouteIndex);
                                                }
                                                needForwardRouteIndexUpdate = 
false;
                                        }
                                }
                        }
                }
   
                if (logger.isDebugEnabled()) {
                        logger.debug("OUT: 
LciUtility::populateRelCapacityInPriorityMap() priorityMap after update ::{} ",
                                        priorityMap);
                }
        }
        
        /**
         * This method is calculating the effective capacity.
         * 
         * @param load
         * @param capacity
         * @return
         */
        private static int calculateEffectiveCapacity(int load, int capacity) {
                        int effectiveCapacity = ((100 - load) * capacity) / 
100;  // 50*5000/100
                        logger.debug("Original Calacity is {}, Effective 
Capacity is {}", capacity,     effectiveCapacity);
                        return effectiveCapacity;
        }
   
        /**
         * This method is fetch the LCI data from local cache for different 
request type.
         * 
         * @param destWt
         * @param isInterPlmn
         * @return
         */
        public static PeerLciData getPeerLciData(DestinationWeight destWt, 
boolean isInterPlmn, String srvName) {
                logger.debug("IN: LciUtility::getPeerLciData()");
                
                if(Objects.isNull(peerLciLocalCache)) {
                        peerLciLocalCache = 
BeanUtil.getBean(PeerLciLocalCache.class);
                }
                
                PeerLciData data = null;
                if(isInterPlmn) {
                        data = 
peerLciLocalCache.getPeerLciBySeppFqdn(destWt.getDestination().getHost());
                        
                        if (logger.isDebugEnabled()) {
                                logger.debug("PeerLciData for InterPLMN {}", 
data);
                                }
                } else if (destWt.getIsRemoteapp() == true) {
                        data = 
peerLciLocalCache.getPeerLciByappFqdn(CommonUtils.getSelectedDestinationFqdn(destWt.getDestination().getHost()));
                        
                        if (logger.isDebugEnabled()) {
                        logger.debug("PeerLciData for Interapp {}", data);
                        }
                } else if (destWt.getIsRemoteapp() == false) {
                        if (logger.isDebugEnabled()) {
                                logger.debug("instanceId is {} , svcInstanceId 
is {}, srvName : {}", destWt.getOcappw_nf_instance_id(),
                                                
destWt.getOcappw_service_instance_id(), srvName);
                        }
                        
                        
if(srvName.equalsIgnoreCase(CommonConstants.getDefaultServiceType()) || 
srvName.equalsIgnoreCase(CommonConstants.getUnknown())) {
                                data = 
peerLciLocalCache.getPeerLciByNfInstAndSvcInst(destWt.getOcappw_nf_instance_id(),
 null);
                        } else {
                                data = 
peerLciLocalCache.getPeerLciByNfInstAndSvcInst(destWt.getOcappw_nf_instance_id(),
                                                
destWt.getOcappw_service_instance_id());
                        }
                        
                } 
                if (logger.isDebugEnabled()) {
                        logger.debug("OUT: LciUtility::getPeerLciData(), 
PeerLciData fetched::{}", data);
                }
                return data;
        }
   
        public static PeerLciData getPeerLciData(LciHeader lciHeader, String 
instanceId) {
   
                Map<String, String> lcScope = lciHeader.getLcScope();
                if (lcScope == null || lcScope.size() < 1) {
   
                        logger.debug("OUT: LciUtility::getPeerLciData() lcScope 
is Null or Empty key");
                        return null;
                } else {
                        String lcScopeKey = null;
                        String nfInstId = instanceId;
                        String svcInstId = CommonConstants.DEFAULT;
                        String lcScopeValue = null;
   
                        for (Map.Entry<String, String> entry : 
lcScope.entrySet()) {
                                lcScopeKey = entry.getKey();
   
                                if 
(lcScopeKey.equals(CommonConstants.app_FQDN)) {
   
                                        lcScopeValue = entry.getValue();
   
                                        if (logger.isDebugEnabled()) {
                                                logger.debug(
                                                                "OUT: 
LciUtility::getPeerLciData(lciHeader, instanceId). Lci scope is  {}, value : 
{}",
                                                                lcScopeKey, 
lcScopeValue);
                                        }
                                        return 
peerLciLocalCache.getPeerLciByappFqdn(lcScopeValue);
                                }
                                if 
(lcScopeKey.equals(CommonConstants.SEPP_FQDN)) {
                                        lcScopeValue = entry.getValue();
                                        if (logger.isDebugEnabled()) {
                                                logger.debug(
                                                                "OUT: 
LciUtility::getPeerLciData(lciHeader, instanceId). Lci scope is  {}, value : 
{}",
                                                                lcScopeKey, 
lcScopeValue);
                                        }
                                        return 
peerLciLocalCache.getPeerLciBySeppFqdn(lcScopeValue);
                                } else {
                                        if 
(lcScopeKey.equals(CommonConstants.NF_INSTANCE)) {
                                                nfInstId = entry.getValue();
                                                
logger.debug("LciUtility::getPeerLciData(lciHeader, instanceId). nfInstId : 
{}", nfInstId);
                                                if 
(StringUtils.isEmpty(nfInstId)) {
                                                        nfInstId = instanceId;
                                                }
   
                                        } else if (lcScopeKey
                                                        
.equals(CommonConstants.NF_SVC_INSTANCE)) {
                                                svcInstId = entry.getValue();
                                                
logger.debug("LciUtility::getPeerLciData(lciHeader, instanceId). svcInstId : 
{}", svcInstId);
                                        }
   
                                }
   
                        }
                        
                        if (StringUtils.isEmpty(nfInstId)) {
                                nfInstId = instanceId;
                        }
                        logger.debug("OUT: 
LciUtility::getPeerLciData(lciHeader, instanceId)");
                        return 
peerLciLocalCache.getPeerLciByNfInstAndSvcInst(nfInstId, svcInstId);
                }
   
        }
        
        public static void updateLciHeader(StreamInfo streamInfo, HttpHeaders 
headers, Event eventType) {
   
                logger.debug("IN: LciUtility::updateLciHeader()");
   
                LciConfiguration lciConfiguration = 
BeanUtil.getBean(LciConfiguration.class);
   
                if (headers.containsKey(CommonConstants.LCI_HEADER_NAME) == 
false) {
                        logger.debug("OUT: LciUtility::updateLciHeader()");
                        return;
                }
   
                if (lciConfiguration.isRelayPeerLci() == false) {
                        headers.remove(CommonConstants.LCI_HEADER_NAME);
                        logger.debug("OUT: LciUtility::updateLciHeader()");
                        return;
                }
   
                
                LciContext lciContext = streamInfo.getLciContext();
                List<LciHeader> lciHeaders = eventType.equals(Event.Request) ? 
lciContext.getReqLciHeader()
                                : lciContext.getRspLciHeader();
                
                if(lciHeaders == null || lciHeaders.isEmpty()) {
                        logger.debug("OUT: LciUtility::lciHeaders is null or 
Empty");
                        return;
                }
                
                headers.remove(CommonConstants.LCI_HEADER_NAME);
   
                Map<String, String> lcScope;
                String lcScopeKey;
                String lciheader;
                //boolean isPeerLciHeaderForwarded=false;
                for (LciHeader lciHeader : lciHeaders) {
                         lcScope = lciHeader.getLcScope();
                        if(lcScope == null || lcScope.size() < 1) {
                                continue;
                        }
                        Map.Entry<String, String> entry = 
lcScope.entrySet().stream().findFirst().get();
                        lcScopeKey = entry.getKey();
                        lciheader = lciHeader.getRcvHeaderValue();
                        if (!lcScopeKey.equals(CommonConstants.LCI_app_FQDN) && 
!lcScopeKey.equals(CommonConstants.LCI_SEPP_FQDN)) {
                                headers.add(CommonConstants.LCI_HEADER_NAME, 
lciheader);
                                
                                                         
                        }
                }
                
                logger.debug("OUT: LciUtility::updateLciHeader()");
        }
        
        public static void updatelciHeaders(HttpHeaders httpHeaders, StreamInfo 
streamInfo,
                        LciConfiguration lciConfiguration, SutLciCacheMgr 
sutLciCacheMgr) {
   
                if (logger.isDebugEnabled()) {
                        logger.debug("IN: LciUtility::updatelciHeaders() : 
IsRemoteappSelected : {}, TargetPlmnType() : {}",
                                        streamInfo.getIsRemoteappSelected(), 
streamInfo.getTargetPlmnType());
                }
                if (lciConfiguration.isLciFeatureEnabled()) {
                        logger.debug("LciUtility::updatelciHeaders(). Lci 
feature is enabled so handling the lci response headers");
                        //app-C handling - this condition will true only for 
sepp-C
                        if (streamInfo.getIsRemoteappSelected() || 
streamInfo.getTargetPlmnType() == TargetPlmnType.TPT_INTER_PLMN) {
                                LciUtility.updateLciHeader(streamInfo, 
httpHeaders, Event.Response);
                                if (logger.isDebugEnabled()) {
                                        
logger.debug("LciUtility::updatelciHeaders() LciFeature is Enabled : headrrs 
:{}", httpHeaders);
                                }
                        }
                        //app-P handling - this condition will true only for 
sepp-p
                        else if (streamInfo.getIsReceivedInterappMessage() || 
streamInfo.isMessageReceivedFromSepp()) {
                                //do nothing
                                logger.debug("lci headers is not required to 
update");
                        }
                        else if (lciConfiguration.isRelayPeerLci() == false) {
                                logger.debug("lci relay flag is false ... so 
removing all lci headers from response");
                                
httpHeaders.remove(CommonConstants.LCI_HEADER_NAME);
                        }
                        
                        if 
(Objects.nonNull(httpHeaders.getFirst(CommonConstants.LCI_HEADER_NAME))) {
                                logger.debug("LciUtility::updatelciHeaders(). 
Pegging the nf_lci_tx header towards consumer");
                        }
                }
                populateSutLciForConsumer(streamInfo, httpHeaders, 
sutLciCacheMgr);
   
                if (logger.isDebugEnabled()) {
                        logger.debug("OUT: LciUtility::updatelciHeaders() : 
headers: {}", httpHeaders);
                }
        }
        
        public static void populateSutLciForConsumer(StreamInfo streamInfo, 
HttpHeaders httpHeaders,
                        SutLciCacheMgr sutLciCacheMgr) {
   
                logger.debug("IN: LciUtility::populateSutLciForConsumer()");
   
                sutLciCacheMgr.populateLciHeaderForConsumer(streamInfo);
                LciHeader lciHeader = streamInfo.getSutLciForConsumer();
                if (lciHeader == null) {
                        logger.debug("OUT: 
LciUtility::populateSutLciForConsumer() - null");
                        return;
                }
   
                String lciHeaderStr = LciHeader.encode(lciHeader);
                if (StringUtils.isEmpty(lciHeaderStr))  {
                        logger.debug("OUT: 
LciUtility::populateSutLciForConsumer() - empty");
                        return;
                }
   
                httpHeaders.add(CommonConstants.LCI_HEADER_NAME,lciHeaderStr);
   
                if (logger.isDebugEnabled()) {
                        logger.debug("OUT: 
LciUtility::populateSutLciForConsumer() : lciHeaderStr: {}", lciHeaderStr);
                }
        }
        
   }`
   
   I am updating log level dynamically and log controller with below code 
reference.
   
   Configurator.setLevel("com.oracle.cgbu.cne", 
Level.toLevel(loggingLevels.getAppLogLevel()));  --> 
org.apache.logging.log4j.core.config.Configurator#setLevel(java.lang.String, 
org.apache.logging.log4j.Level)
   
   `private void updateFilter(int rate, String filterNewLoglevel) {
                LoggerContext ctx = (LoggerContext) 
LogManager.getContext(false);
                Configuration config = ctx.getConfiguration();
                LoggerConfig loggerConfig = 
config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
   
                Filter filter = loggerConfig.getFilter();
   
                if (logger.isLogLevelEnabled(LOGLEVEL.DEBUG)) {
                        logger.construct("logMsg", "updateFilter .");
                        logger.construct("rate: ", rate);
                        logger.construct("filterLoglevel: ", filterNewLoglevel);
                        logger.submit();
                }
                
                
                // Remove Filter:
                if (filter != null) {
                        if (logger.isLogLevelEnabled(LOGLEVEL.DEBUG)) {
                                logger.construct("logMsg",
                                                "filter to be removed.");
                                logger.construct("filter: ", filter);
                                logger.submit();
                        }
                        // in case of more than one filter, remove the burst 
filter only
                        if (filter instanceof CompositeFilter) {
                                CompositeFilter compositeFilter = 
(CompositeFilter) filter;
                                compositeFilter.iterator().forEachRemaining(ftr 
-> {
                                        if (ftr instanceof BurstFilter) {
                                                loggerConfig.removeFilter(ftr);
                                        }
                                });
                        } else {
                                 //remove only if the type is burst filter
                                if (filter instanceof BurstFilter) {
                                        loggerConfig.removeFilter(filter);
                                }
                        }
                        
                } 
                
                //Adding filter
                addFilter(loggerConfig, rate, filterNewLoglevel);
                                if ( 
!filterNewLoglevel.equals(Level.OFF.toString()) ) {
                        
                        BurstFilter burstFilter = 
BurstFilter.newBuilder().setLevel(Level.toLevel(filterNewLoglevel)).setRate(rate).setMaxBurst(rate)
                                        
.setOnMatch(Result.ACCEPT).setOnMismatch(Result.DENY).build();
                        loggerConfig.addFilter(burstFilter);
   
                        if (logger.isLogLevelEnabled(LOGLEVEL.DEBUG)) {
                                logger.construct("logMsg", "BrustFilter 
added.");
                                logger.construct("BrustFilter: ", burstFilter);
                                logger.submit();
                        }
                } else {
                        if (logger.isLogLevelEnabled(LOGLEVEL.DEBUG)) {
                                logger.construct("logMsg",
                                                "Level set as OFF, BrustFilter 
not added.");
                                logger.submit();
                        }
                }
                
                
                //updating loggers
                ctx.updateLoggers(config);
        }`
   
   Kindly suggest how we can to prevent this behaviour.
   
   Regards,
   Mohammad.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to