WSO2 producten gebruiken log4j2 voor hun logsysteem, dus je kunt altijd alle ingeschakelde logging samengevoegd vinden in de wso2carbon.log. Log4j2 is zeer krachtig en het bekijken waard. In deze blog willen we een deel van deze logging op API/Proxy-niveau splitsen naar een apart logbestand.
De WSO2 Micro Integrator 4.1.0 (evenals WSO2 EI) ondersteunt logging per API of Proxy in hun respectievelijke bestanden en ik ben hier om je te vertellen hoe je dat doet!
WSO2 producten gebruiken Apache Log4j2 om logging van de componenten in het product mogelijk te maken, dit laat veel optionele aanpassingen door de gebruiker toe. Voor meer informatie over Apache Log4j2 en de versie die WSO2 gebruikt kun je de apache log4j2 documentatie raadplegen.
LOG4J2
Binnen de Micro Integrator bevindt het configuratiebestand voor Log4j2 zich in de [MI-HOME]/conf directory met de bestandsnaam log4j2.properties. Dit bestand bevat de basisconfiguratie van log4j2 die door het product wordt gebruikt en van hieruit kun je deze naar wens wijzigen. Ik laat dit zien met de Micro Integrator, maar het werkt ook op de Enterprise Integrator (6.x.0).
Laten we twee eenvoudige proxy’s maken die we kunnen gebruiken. Omdat de Micro Integrator niet beschikt over de Echo Service die standaard beschikbaar is op de Enterprise Integrator, maak ik een heel eenvoudige proxy die het bericht dat er naar toe wordt gestuurd beantwoordt met een Log Mediator.
Ik gebruik Integration Studio 8.1.0 om dit te implementeren en ga ook de geïntegreerde Micro Integrator gebruiken die bij het product wordt geleverd.
Ik ga niet volledig laten zien hoe je Integration Studio installeert, je kunt het downloaden van WSO2 en installeren op je apparaat met Windows/Mac of Linux.
Bekijk enkele van onze blogs over het werken met Integration Studio of bezoek een van onze trainingen.
Integratieproject
Ik gebruik een integratieproject om de twee proxy’s te maken. Het project zal Log4J2 heten, maar je kunt het noemen zoals je wilt.
Het mooie van een integratieproject is dat het een config en composite exporter maakt om de proxies die je ontwikkelt te kunnen inzetten. Ik ga het eenvoudig houden en ga uit van de voorgestelde naamgeving van de modules op basis van de projectnaam.
Navigeer naar projectweergave
Ik ben een nieuwe proxy aan het maken.
Ik noem het EchoProxy en gebruik de Custom Proxy-template.
De inhoud is eenvoudig
Een volledige log en een Respond sturen het bericht terug naar de afzender.
De code is ook eenvoudig
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="EchoProxy" startOnLoad="true" transports="http https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="full"/>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
</proxy>
De tweede proxy roept deze proxy aan en is even eenvoudig.
Dit is de code:
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="CallProxy" startOnLoad="true" transports="http https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<endpoint name="Echopoint">
<address uri="http://localhost:8290/services/EchoProxy">
<suspendOnFailure>
<initialDuration>-1</initialDuration>
<progressionFactor>1</progressionFactor>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</address>
</endpoint>
<inSequence/>
<outSequence>
<log level="full">
<property name="Log From " value="CallProxy"/>
</log>
<send/>
</outSequence>
<faultSequence/>
</target>
</proxy>
Sla beide proxy’s op en in de Composite Exporter (het pom-bestand) Selecteer de twee Artifacts. Sla ook dit bestand op.
Voeg de server toe
Omdat er een geïntegreerde MI 4.1.0 is, zou die al zichtbaar moeten zijn. Als je het tabblad Server niet ziet, klik dan op Window/Show View/Other en typ server in.
Klik op Open. Klik met de rechtermuisknop op de server en Add en Remove.
Klik op Finish.
Een apart logbestand maken voor aangewezen proxyservices
Om het aanmaken van een extra logbestand voor een specifieke proxy mogelijk te maken hoef je maar een paar regels toe te voegen aan het bestand log4j2.properties. Deze regels bevatten verschillende parameters die ik hieronder zal toelichten. Het bestand is te vinden op [INT810-HOME]/runtime/microesb/conf
De Appender
Voeg deze regels toe aan de log4j2-eigenschappen als eerste appender (dus vóór # CARBON_CONSOLE)
appender.ECHO_PROXY_APPENDER.type = RollingFile
appender.ECHO_PROXY_APPENDER.name = ECHO_PROXY_APPENDER
appender.ECHO_PROXY_APPENDER.fileName = ${sys:carbon.home}/repository/logs/EchoProxy.log
appender.ECHO_PROXY_APPENDER.filePattern = ${sys:carbon.home}/repository/logs/EchoProxy-%d{MM-dd-yyyy}.log
appender.ECHO_PROXY_APPENDER.layout.type = PatternLayout
appender.ECHO_PROXY_APPENDER.layout.pattern = TID: [%tenantId] [%d] %5p {%c} - %m%ex%n
appender.ECHO_PROXY_APPENDER.policies.type = Policies
appender.ECHO_PROXY_APPENDER.policies.time.type = TimeBasedTriggeringPolicy
appender.ECHO_PROXY_APPENDER.policies.time.interval = 1
appender.ECHO_PROXY_APPENDER.policies.time.modulate = true
appender.ECHO_PROXY_APPENDER.policies.size.type = SizeBasedTriggeringPolicy
appender.ECHO_PROXY_APPENDER.policies.size.size=10MB
appender.ECHO_PROXY_APPENDER.strategy.type = DefaultRolloverStrategy
appender.ECHO_PROXY_APPENDER.strategy.max = 20
appender.ECHO_PROXY_APPENDER.filter.threshold.type = ThresholdFilter
appender.ECHO_PROXY_APPENDER.filter.threshold.level = INFO
appender.CALL_PROXY_APPENDER.type = RollingFile
appender.CALL_PROXY_APPENDER.name = CALL_PROXY_APPENDER
appender.CALL_PROXY_APPENDER.fileName = ${sys:carbon.home}/repository/logs/CallProxy.log
appender.CALL_PROXY_APPENDER.filePattern = ${sys:carbon.home}/repository/logs/EchoProxy-%d{MM-dd-yyyy}.log
appender.CALL_PROXY_APPENDER.layout.type = PatternLayout
appender.CALL_PROXY_APPENDER.layout.pattern = TID: [%tenantId] [%d] %5p {%c} - %m%ex%n
appender.CALL_PROXY_APPENDER.policies.type = Policies
appender.CALL_PROXY_APPENDER.policies.time.type = TimeBasedTriggeringPolicy
appender.CALL_PROXY_APPENDER.policies.time.interval = 1
appender.CALL_PROXY_APPENDER.policies.time.modulate = true
appender.CALL_PROXY_APPENDER.policies.size.type = SizeBasedTriggeringPolicy
appender.CALL_PROXY_APPENDER.policies.size.size=10MB
appender.CALL_PROXY_APPENDER.strategy.type = DefaultRolloverStrategy
appender.CALL_PROXY_APPENDER.strategy.max = 20
appender.CALL_PROXY_APPENDER.filter.threshold.type = ThresholdFilter
appender.CALL_PROXY_APPENDER.filter.threshold.level = INFO
And add the Appender to the list
# list of all appenders
#add entry "syslog" to use the syslog appender
appenders = CARBON_CONSOLE, CARBON_LOGFILE, AUDIT_LOGFILE, ATOMIKOS_LOGFILE, CARBON_TRACE_LOGFILE, osgi, SERVICE_LOGFILE, API_LOGFILE, ERROR_LOGFILE, CORRELATION , ECHO_PROXY_APPENDER
#, syslog
Dit beschrijft het mechanisme van de RollingFile-appender en de andere mechanismen.
Het ziet er zo uit
De logger
Voeg deze regel toe aan de loggers
, SERVICE_LOGGER_EchoProxy
En deze snippet er vervolgens onder
logger.SERVICE_LOGGER_EchoProxy.name = SERVICE_LOGGER.EchoProxy
logger.SERVICE_LOGGER_EchoProxy.level = INFO
logger.SERVICE_LOGGER_EchoProxy.additivity = false
logger.SERVICE_LOGGER_EchoProxy.appenderRef.ECHO_PROXY_APPENDER.ref = ECHO_PROXY_APPENDER
Het zal er als volgt uitzien:
Sla het log4j2-bestand op. Start de server met rechtermuisknop/Start. De wijzigingen worden direct doorgevoerd.
Maak een nieuw SOAP-project in SoapUI op basis van dehttp://localhost:8290/services/CallProxy?wsdl
Open de service
En verander het bericht
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<message>
<text>Hello World</text>
</message>
</soapenv:Body>
</soapenv:Envelope>
Voer uit. De response is identiek.
Roep in SoapUI de proxy een aantal keren aan.
Ga nu naar INT810-HOME]/runtime/microesb/repository/logs en bekijk het nieuwe CALLProxy-logbestand
Open het bestand en bekijk de logs erin.
Ik hoop dat deze informatie van waarde is en een aantal van jullie helpt met projecten. Mochten er vragen zijn, neem contact op met ons.