UNDER UPPBYGGNAD!
Loggning
Applikationsloggar
Virtualiseringsplattformens applikationsloggar återfinns default under <MULE-HOME>/logs/mule-app-vp.log.
Konfiguration av applikationsloggar i Runtime
För att konfigurera loggning i VP under runtime (applikation i drifts) behöver dess log4j.xml (mule 3.3.1) eller log4j2.xml (mule 3.7.0) uppdateras. Observera att en ändring i log4j.xml slår direkt, dvs inga omstarter av applikationer eller mule. Detta gäller generellt inte i mule 3.7.0 med log4j2.xml. Man kan istället använda jmx för att ändra i runtime.
Kodblock |
---|
vi /home/mule/mule-standalone-3.3.1/apps/vp-services-2.2.1/classes/log4j.xml |
Uppdatera storlek på logfiler och inställningar för hur många logfiler som skall sparas.
Storlek på filer hanteras i parametern MaxFileSize.
Antal filer som skall sparas hanteras i parametern MaxBackupIndex.
Nedan exempel definierar en storlek på loggar med 50MB och att 10 filer skall sparas innan den äldsta tas bort.
Kodblock |
---|
language | xml |
---|
title | Mule 3.2.1 och log4j.xml |
---|
|
<appender name="ROLLINGFILE" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${mule.home}/logs/mule-app-vp.log"/>
<param name="MaxBackupIndex" value="10" />
<param name="MaxFileSize" value="50MB" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %-30C - %m%n" />
</layout>
</appender> |
Kodblock |
---|
language | xml |
---|
title | Mule 3.7.0 och log4j2.xml |
---|
|
<RollingRandomAccessFile name="RollingRandomAccessFile"
fileName="${log.dir}/mule-app-vp.log"
filePattern="${log.dir}/mule-app-vp.log.%i">
<PatternLayout>
<Pattern>%d %-5p [%t] %-30c - %m%n</Pattern>
</PatternLayout>
<Policies>
<!-- KB, MB -->
<SizeBasedTriggeringPolicy size="50 MB"/>
</Policies>
<DefaultRolloverStrategy fileIndex="min" max="10"/>
</RollingRandomAccessFile> |
Det finns ockås möjligheter att under runtime (applikation i drift) uppdatera lognivåer på specifika delar av applikationen. Detta görs genom att ändra lognivå (TRACE, DEBUG, INFO, WARN, ERROR, FATAL), där TRACE loggar detaljerat och FATAL loggar enbart fel.
Kodblock |
---|
language | xml |
---|
title | Mule 3.3.1 och log4j.xml |
---|
|
<!-- Level INFO will give log output for reset cache to selected appender -->
<logger name="se.skl.tp.vp.vagvalagent.VagvalAgent">
<level value="INFO"/>
</logger> |
Kodblock |
---|
language | xml |
---|
title | Mule 3.7.0 och log4j2.xml |
---|
|
<!-- Level INFO will give log output for reset cache -->
<AsyncLogger name="se.skl.tp.vp.vagvalagent.VagvalAgent" level="INFO"/> |
Viktigt är att förändringar i konfiguration för loggning återrapporteras till applikationsförvaltning så att förändringen införs permanent i kommande releaser.
Konfiguration av applikationsloggar i källkod
Skulle det finnas behov av att uppdatera inställningar för loggning i källkoden, tex om det finns en inställning som är felaktig eller där det finns inställningar som borde vara default. I detta fallet behöver källkoden för VP uppdateras med de nya inställningarna för att komma med i nästa release. För att få med en sådan permanent ändring skapa ett ärende i Jira och beskriv ändringen.
Asynkron loggning av meddelanden
För att avlasta så mycket som möjligt så sker kan loggning asynkront till meddelandeköer användas, och implementationen är baserad på soi-toolkit och Apache ActiveMQ.
...
SOITOOLKIT.LOG.STORE
- Normala händelser avseende virtuella tjänster (request och response)SOITOOLKIT.LOG.ERROR
- FelhändelserSOITOOLKIT.LOG.INFO
- Särskilda händelser angående aktiv övervakning av producentsystem
I de senaste versionerna av VP används Mule 3.7.0 och asynkron loggning som konfigureras direkt i log4j2.xml utan activeMQ.
Kodblock |
---|
<AsyncLogger name="se.skl.tp.vp.vagvalagent.VagvalAgent" level="INFO"/> |
Meddelande logpost
Själva nyckeln till en loggpost är en korrelationsidentitet på formatet UUID. Denna identitet exponeras också till konsumenter och producenter via en HTTP header x-vpskltp-correlation-id
, vilket möjliggör att snabbt kunna hitta till exakt rätt loggpost för enskilda händelser.
...
Följande information kan förväntas i en loggpost, men observera att vilken information som för tillfället finns har med vilken typ (level) av händelse som rapporteras:
Element | Beskrivning |
---|
messageInfo.level | Anger vad det är för loggpost och antingen INFO eller ERROR är aktuella i VP 2.0 |
messageInfo.message | Om det är INFO loggpost indikeras om det är ett request xreq-in eller ett response xreq-out . Om det är en ERROR loggpost indikeras felmeddelandet i detta element. |
runtimeInfo.businessCorrelationId | Nyckeln till loggposten |
runtimeInfo.timestamp | Tidstämpel för när loggposten skapades |
|
|
extraInfo.contract | Indikerar tjänstekontraktets namnrymdElement i extra information | Beskrivning |
---|
extraInfo. |
sendersenderid | Indikerar avsändarens logiska adress (konsument) |
extraInforeceiveroriginalServiceconsumerHsaid | Indikerar |
mottagarens ursprunglig avsändarens logiska adress ( |
producentkonsument som ursprungligen gjorde anropet i en komplexare kedja avanrop) |
extraInfoin_timestampIndikerar tid för anropshändelsen (request) | extraInfo.out_timestamp | Indikerar tid för svarshändelsen (response) |
extraInfo.err_timestamp | Indikerar tid för felhändelsen (endast för ERROR ) |
extraInfo.in_payload | Indikerar meddelande-innehåll för anropet |
extraInfo.out_payload | Indikerar meddelande-innehåll för svaret |
extraInfo.err_payload | Indikerar meddelande-innehåll för felhändelser |
extraInfo.in_riv_version | RIV version för anropet i versaler, tex RIVTABP21 |
extraInfo.out_riv_version | RIV version för svaret i versaler |
extraInfo.err_flag | Flagga som ska vara satt till true om det är ett fel |
extraInfo.err_message | Felmeddelande på applikationsnivå |
extraInfo.err_description | Beskrivning av felet |
extraInfo.err_detail | Mer tekniska detaljer om felet |
extraInfo.source | Java komponenten (klassen) som genererade loggposten |
extraInfo.endpoint_time | Tid i milli-sekunder för att anropa producenten |
extraInfo.endpoint_url | Den aktuella URL:en som anropar producenten source | Java komponenten (klassen) som genererade loggposten |
extrainfo.rivversion | RIV version för anropet i versaler, tex RIVTABP21 |
extrainfo.senderIpAdress | Konsumentens up adress |
extrainfo.wsdl_namespace | Indikerar tjänsteinteraktionens (wsdl) namnrymd |
extrainfo.receiverid | Indikerar mottagarens logiska adress (producent) |
extrainfo.statusCode | Redovisar html statuskod vid VP009-fel. Typiskt visas 404, 500,501, 502, 503. Finns from v 2.3.0 av VP. |
Kodblock |
---|
title | Exempel på riktiga log events från mule-app-vp.log |
---|
|
2014-04-03 09:09:24,852 DEBUG org.mule.module.logging.DispatchingLogger - soi-toolkit.log
** logEvent-debug.start ***********************************************************
IntegrationScenarioId=
ContractId=
LogMessage=xreq-in
ServiceImpl=vagval-dynamic-routing-flow
Host=svr-vp-qa (192.168.16.210)
ComponentId=vp-services-2.2.6-RC2
Endpoint=https://192.168.16.210:20000/vp/Ping/1/rivtabp20
MessageId=e34228dd-bafe-11e3-8954-8120699098bb
BusinessCorrelationId=e342ec3a-bafe-11e3-8954-8120699098bb
BusinessContextId=
ExtraInfo=
-senderid=HSASERVICES-100M
-originalServiceconsumerHsaid=null
-source=se.skl.tp.vp.util.LogTransformer
-cxf_service=urn:riv:itinfra:tp:Ping:1:rivtabp20
-rivversion=RIVTABP20
-senderIpAdress=172.16.0.10
-wsdl_namespace=urn:riv:itinfra:tp:Ping:1:rivtabp20
-receiverid=Ping
Payload=<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:add="http://www.w3.org/2005/08/addressing" xmlns:urn="urn:riv:itinfra:tp:PingResponder:1">
<soapenv:Header>
<add:To>Ping</add:To>
</soapenv:Header>
<soapenv:Body>
<urn:ping>
<urn:pingIn/>
</urn:ping>
</soapenv:Body>
</soapenv:Envelope>
** logEvent-debug.end *************************************************************
** logEvent-debug.start ***********************************************************
IntegrationScenarioId=
ContractId=
LogMessage=xresp-out
ServiceImpl=vagval-dynamic-routing-flow
Host=svr-vp-qa (192.168.16.210)
ComponentId=vp-services-2.2.6-RC2
Endpoint=https://192.168.16.210:20000/vp/Ping/1/rivtabp20
MessageId=e3455c43-bafe-11e3-8954-8120699098bb
BusinessCorrelationId=e342ec3a-bafe-11e3-8954-8120699098bb
BusinessContextId=
ExtraInfo=
-senderid=HSASERVICES-100M
-originalServiceconsumerHsaid=HSASERVICES-100M
-source=se.skl.tp.vp.util.LogTransformer
-cxf_service=urn:riv:itinfra:tp:Ping:1:rivtabp20
-rivversion=RIVTABP20
-senderIpAdress=172.16.0.10
-wsdl_namespace=urn:riv:itinfra:tp:Ping:1:rivtabp20
-time.producer=14
-endpoint_url=http://localhost:10000/test/Ping_Service
-receiverid=Ping
Payload=<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><mule:header xmlns:mule="http://www.muleumo.org/providers/soap/1.0"><mule:MULE_CORRELATION_ID>e34228dd-bafe-11e3-8954-8120699098bb</mule:MULE_CORRELATION_ID><mule:MULE_CORRELATION_GROUP_SIZE>1</mule:MULE_CORRELATION_GROUP_SIZE><mule:MULE_CORRELATION_SEQUENCE>-1</mule:MULE_CORRELATION_SEQUENCE></mule:header></soap:Header><soap:Body><pingResponse xmlns="urn:riv:itinfra:tp:PingResponder:1" xmlns:ns2="http://www.w3.org/2005/08/addressing"><pingUt>Ping response from: </pingUt></pingResponse></soap:Body></soap:Envelope>
** logEvent-debug.end ************************************************************* |
Loggpunkter
Loggposter skapas med hjälp av Mule transformatorer och i flödet för virtuella tjänster och aktiv övervakning ligger dessa som loggpunkter i standardflödena, och i den inbäddade Mule konfigurationen vp-common.xml
finns 4 namngivna transformatorer för logg ändamål:
Namn | Beskrivning |
---|
logReqIn | Används för inkommande anrop |
logReqOut | Används för utgående svar |
monitorLogRequest | Används för aktiv övervakning och utgående request |
monitorLogResponse | Används för aktiv övervakning och inkommande svar |
Konfigurera asynkron loggning med ActiveMQ
Inställningar för ActiveMQ anges i gängse konfigurationsfil vp-config.properties
och följande standardinställningar används:
Info |
---|
|
SOITOOLKIT_MULE_AMQ_BROKER_URL=failover:(tcp://localhost:61616) SOITOOLKIT_MULE_AMQ_MAX_REDELIVERIES=3 SOITOOLKIT_MULE_AMQ_REDELIVERY_DELAY=10000 SOITOOLKIT_MULE_AMQ_NO_OF_CONSUMERS=2 |
Socketloggning (fr.o.m VP 3.2.0)
En logger är konfigurerad för att ta hand om loggning till socket i log4j2.xml . Denna använder en egenutvecklad appender som kan konfigureras i filen "${sys:mule.home}/conf/vp-socketappender.properties" till vilken server/port den skall logga, se SKLTP VP (Mule) - Konfiguration. Om inget är konfigurerat i filen eller den saknas kommer loggningen vara avslagen.
Kodblock |
---|
theme | Eclipse |
---|
title | log4j2.xml |
---|
|
<SocketLoggerAppender name="SocketLoggerAppender" configFile="${sys:mule.home}/conf/vp-socketappender.properties"></SocketLoggerAppender>
...
<AsyncLogger name="se.skltp.mule.logging.socketLogger" level="DEBUG" additivity="false">
<AppenderRef ref="SocketLoggerAppender"></AppenderRef>
</AsyncLogger>
|