WSO2-Produkte verwenden log4j2 für ihr Protokollierungssystem, so dass Sie immer alle aktivierten Protokollierungen aggregiert in wso2carbon.log finden können. Log4j2 ist sehr leistungsfähig und einen Blick wert. In diesem Blog möchten wir einen Teil dieser Protokollierung auf der API-/Proxy-Ebene in eine separate Logdatei abspalten.
Der WSO2 Micro Integrator 4.1.0 (sowie WSO2 EI) unterstützt die Protokollierung per API oder Proxy in ihre jeweiligen Dateien und ich werde Ihnen zeigen, wie das geht!
WSO2-Produkte verwenden Apache Log4j2, um das Logging der Komponenten innerhalb des Produkts zu ermöglichen. Dies ermöglicht eine Vielzahl von optionalen Anpassungen durch den Benutzer. Weitere Informationen über Apache Log4j2 und die von WSO2 verwendete Version finden Sie in der apache log4j2 Dokumentation.
LOG4J2
Die Konfigurationsdatei für Log4j2 befindet sich im Micro Integrator in [MI-HOME]/conf directory mit dem Dateinamen log4j2.properties. Diese Datei enthält die vom Produkt verwendete grundlegende log4j2-Konfiguration, die Sie dort beliebig modifizieren können. Ich zeige das mit dem Micro Integrator, aber es funktioniert genauso mit dem Enterprise Integrator (6.x.0).
Erstellen wir zwei einfache Proxys, die wir verwenden können. Da der Micro Integrator keinen Echo-Dienst hat, der im Enterprise Integrator standardmäßig enthalten ist, erstelle ich einen sehr einfachen Proxy, der die an ihn gesendete Nachricht mit einem Log Mediator beantwortet.
Ich verwende Integration Studio 8.1.0 für die Bereitstellung und werde auch den eingebetteten Micro Integrator verwenden, der im Lieferumfang des Produkts enthalten ist.
Ich werde nicht die vollständige Installation von Integration Studio zeigen. Sie können es bei WSO2 herunterladen und auf Ihrem Windows-/Mac- oder Linux-Computer installieren.
Lesen Sie sich bitte ein paar unserer Blogs zur Arbeit mit Integration Studio durch.
Integrationsprojekt
Ich verwende ein Integrationsprojekt, um die beiden Proxys zu erstellen. Das Projekt wird Log4J2 heißen, aber Sie können es nennen, wie Sie möchten.
Das Schöne an einem Integrationsprojekt ist, dass es eine Config und einen Composite Exporter erstellt, um die von Ihnen entwickelten Proxys bereitstellen zu können. Ich werde es einfach halten und die vorgeschlagene Benennung der Module basierend auf dem Projektnamen übernehmen.
Navigieren Sie zur Projektansicht
Ich erstelle einen neuen Proxy.
Ich nenne ihn EchoProxy und verwende die benutzerdefinierte Proxy-Vorlage.
Der Inhalt ist einfach gehalten
Ein vollständiges Protokoll und eine Antwort senden die Nachricht an den Absender zurück.
Der Code ist auch einfach gehalten
<?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>
Der zweite Proxy ruft diesen Proxy auf und ist ebenso einfach gehalten.
Das ist der 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>
Speichern Sie beide Proxys und wählen Sie im Composite Exporter (pom-Datei) die beiden Artefakte aus. Speichern Sie auch diese Datei.
Fügen Sie den Server hinzu
Da MI 4.1.0 eingebettet ist, sollte es bereits sichtbar sein. Wenn Sie die Registerkarte Server nicht sehen, klicken Sie auf Window (Fenster) / Show View (Ansicht anzeigen) / Other (Sonstiges) und geben Server ein.
Klicken Sie auf Öffnen. Klicken Sie mit der rechten Maustaste auf Server und dann auf Hinzufügen und Entfernen.
Klicken Sie auf Fertig stellen.
Erstellen einer separaten Logdatei für bestimmte Proxy-Dienste
Um die Erstellung einer zusätzlichen Logdatei für einen bestimmten Proxy zu ermöglichen, müssen Sie der Datei log4j2.properties nur ein paar Zeilen hinzufügen. Diese Zeilen enthalten verschiedene Parameter, die ich im Folgenden erläutern werde. Die Datei befindet sich unter [INT810-HOME]/runtime/microesb/conf
Der Appender
Fügen Sie diese Zeilen den log4j2-Eigenschaften als ersten Appender hinzu (also vor # 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
Dies beschreibt den Mechanismus des RollingFile-Appenders und die anderen Mechanismen.
Es sieht folgendermaßen aus
Der Logger
Fügen Sie den Loggern diese Zeile hinzu
, SERVICE_LOGGER_EchoProxy
Und dann dieser Ausschnitt darunter
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
Es wird so aussehen:
Speichern Sie die log4j2-Datei. Starten Sie den Server mit einem Klick auf die rechte Maustaste / Start. Die Änderungen werden sofort bereitgestellt.
Erstellen Sie ein neues SOAP-Projekt in SoapUI basierend auf http://localhost:8290/services/CallProxy?wsdl
Öffnen Sie den Dienst
Und ändern Sie die Nachricht
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<message>
<text>Hello World</text>
</message>
</soapenv:Body>
</soapenv:Envelope>
Ausführen. Die Antwort ist identisch.
Rufen Sie den Proxy in SoapUI mehrmals auf.
Gehen Sie nun zu INT810-HOME]/runtime/microesb/repository/logs und sehen Sie sich die neue CALLProxy-Logdatei an.
Öffnen Sie die Datei und sehen Sie sich die darin enthaltenen Protokolle an.
Ich hoffe, dass diese Informationen von nutzen sind und einigen von Ihnen bei ihren projekten helfen. Sollten Sie noch fragen haben, kontaktieren Sie uns bitte.