1

I have log4j2 xml configuration but I want to convert this configuration as programaticly

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration xmlns="http://logging.apache.org/log4j/2.x/config" packages="org.graylog2.log4j2">
    <Appenders>
      <GELF name="gelfAppender" server="graylog.XXX.com" port="12212" hostname="wskurumsaltest.XXX.com" protocol="UDP" includeThreadContext="true">
       <KeyValuePair key="grayloggroup" value="TEST_GROUP" />
       <KeyValuePair key="application" value="TEST" />
       <KeyValuePair key="environment" value="TEST" />
         <PatternLayout pattern="%X{applicationNames} - %m%n"/>
      </GELF>

                  <RollingFile name="activityStatusFileAppender"
                         fileName="${filePath}/activityStatus.out"
                          <PatternLayout>
                               <Pattern>%d - %m%n</Pattern>
                         </PatternLayout>

                  </RollingFile>            
        </Appenders>
<Logger name="activityStatusFileLogger" level="debug">
  <AppenderRef ref="activityStatusFileAppender" /> 
 <AppenderRef ref="gelfAppender" />
</Logger>

    </Loggers>
    </Configuration>

I want to add gelFAppender to "activityStatusFileLogger" as programmacticly not using xml

        GelfAppender gelfAppender = new GelfAppender();
        gelfAppender.setGraylogHost("graylog.xxx.com");
        gelfAppender.setGraylogPort(12212);
        gelfAppender.setOriginHost("graylog.xxx.com");
        gelfAppender.setAdditionalFields("{\"grayloggroup\": \"group\", \"application\": \"test\", \"environment\": \"test\"}");
        gelfAppender.activateOptions();//
        Logger x= LogManager.getLogger("activityStatusFileLogger");
        x.addAppender(gelfAppender);

But LogManager.getLogger() not contains "addAppenders()" method. LogManager is include in log4j-api-2.10.0. jar and org.apache.logging.log4j package.

yasin
  • 11
  • 2
  • May we ask why you don't want to just use the compile time XML files? – Tim Biegeleisen Aug 29 '19 at 11:18
  • Because I have different environments for example environment1 is name: "TestSream" and other environment: "ProdStream". I don't want use system parameter in xml file for KeyValuePair – yasin Aug 29 '19 at 11:24

0 Answers0