Questa è una vecchia versione del documento!
Indice
Descrizione log applicativi di DocWay4, MSA e Equinotifier
Questo documento ha lo scopo di fornire alcune descrizioni relative alla lettura e analisi dei log prodotti dagli applicativi di 3D Informatica.
DocWay4
In DocWay la produzione dei log è affidata alla libreria di logging Apache log4j 1.2.
La configurazione di base prevede la produzione di log ciclici: docway4.log, docway4.log.1…docway4.log.<n> e docway4-service.log, docway4-service.log.1…docway4-service.log.<n>:
- docway4.log: si tratta dei log dell'applicativo DocWay vero e proprio, ossia della web application scritta utilizzando il framework Java Server Faces. Questi log sostanzialmente hanno come scopo quello di tracciare eventuali errori applicativi per facilitarne l'individuazione e la risoluzione.
- docway4-service.log: in questi log vengono tracciate tutte le richieste HTTP che vengono effettuate dalla web application DocWay4 verso la web application di backend denominata Service. Il Service identifica ossia lo strato software che riceve tutte le richieste, le elabora e restituisce il risultato. Questo log è destinato ad un utilizzo prettamente sistemistico per l'individuazione degli errori anche se traccia tutte le operazioni del sistema: utente, timestamp, parametri.
Questi log vengono creati nella directory logs di Apache Tomcat 7.
docway4.log
In questi log vengono tracciati gli accessi applicativi e il caricamento dei template utilizzati da Docway4:
Esempio accesso utente: 2017-01-24 09:44:39,096 [ajp-bio-8009-exec-24] INFO - LoginFilter.doFilter(), remoteUser caricato: GRGNNL64B56D205V Esempio caricamento home: 2017-01-24 09:44:39,111 [ajp-bio-8009-exec-24] INFO - /DocWay4/docway/home.jsf entering request #37666 Esempio caricamento template: 2017-01-24 09:44:39,111 [ajp-bio-8009-exec-25] INFO - /DocWay4/docway/showdoc@arrivo.jsf exiting request #37665 (187ms)
Non tutti gli errori riscontrati nel log sono significativi e pertanto possono essere tralasciati. Ad esempio i seguenti:
2017-01-24 09:44:40,299 [ajp-bio-8009-exec-23] ERROR - NumConverter.getAsString(): got exception... For input string: "" 2017-01-24 09:44:34,767 [ajp-bio-8009-exec-23] ERROR - ClassifConverter.getAsObject(): got exception... For input string: "A3.2"
docway4-service.log
Tutte le richieste in ingresso vengono tracciate tramite una stringa del tipo:
<acl o docway jsp (resource path)> entering request #<request number> {key-value pairs (http parameters)}
Esempio:
2017-02-13 16:49:27,646 [http-bio-8080-exec-66] INFO - /DocWay4-service/application/xdocway/engine/xdocway.jsp entering request #292 {fascicoli_MostraGerarchia=, cuttingBranch=, personalView=, physDoc_infasc=, pwdLock=, cod_uff_infasc=, resourceFileCustomDir=, pwdInfo=, hierStatus=0, soggetto_infasc=, pos=0, qopt=0, lookup_xq=, physDoc=, selid=, languageMarker=traduzione@lingua, mansioni=Checker$#$RL0035;Sviluppatore$#$RL0003;Capo progetto$#$RL0002;Archivista professionista$#$RL0036, docStart=0, groups=, opt=0, currDate=20170213, pwdChangeInfo=, pageCount=12, host=, selTable=, cName=, qadj=0, lookup_campi=, propertyEntry=, jReportInfo=, selRac=, descrizione_rep=, stpTitle=, view=, language=it, showdocUOR=, qext=, cCount=, respUOR=, dt=xdocwaydoc, port=-1, _hca=, wfId=, appStringPreferences=§10§§§§§Si§Si§Si§A§No§§§3, query=, cIsPublic=, colsSize=, hierCount=24, dw4customTemplate=, revSel=, sele=0 0 ,103979, xdocwaydoc ;0, childLast=1, _hcf=, rangeDocs=, lookup_alias=, browser=, _r=, warnings=, verbo=query, rolesManagement=true, allotri=, qord=, matricola=PI000156, keypath='', globalFormRestore=, urlToLaunch=, enableIW=false, opNomePersona=Amministratore Docway, classif_infasc=, pwd=, nome_uff_infasc=, keyCount=12, userRights=, tipo_uff_infasc=, specificDbCode=, klAll=, lookup_db=, xMode=, count=0, jsessionid=F47BA65FC3BBA5F28C42F06EFBD9247B, noRef=, thBackPage=thBackPage, bAssegnaLinkFasc=, pathFiles=, wfPos=, wfAction=, codice_rep=, lookup_fieldVal=, nome_persona_infasc=, login=, wfMode=, db=xdocwaydoc, classif_cod_infasc=, dbTable=@qmainpage, thVOptions=, relation='', fromLookup=, wfLock=, flap=, xverb=, transformJava=, uri=/DocWay4-service/application/xdocway/engine/xdocway.jsp, xslExportFilterName=, docInGestioneUOR=#|#ç00003|Servizio Tecnico Bologna, WfFunctionInteractionManagerClass=, diritto_infasc=, keylist=, opCodPersona=PI000156, toDo=, appPreferences=2, doceditUOR=, startkey='', currYear=2017, wfText=, pwdPhysdoc=, uorInGestioneSelected=00003, qordIdx1=, classifFormat=, klRac=, embeddedApp=, repVisComp=, userInfo=Amministratore Docway (Servizio Tecnico Bologna) [fgrillini@3di.it] %Programmatore%, jReportParams=, _cd=&h3Story=false&dicitCategoria=Categoria|Categorie&dicitComunicazione=Comunicazione|Comunicazioni&organi=BOL-ORG_PROVA|Organo di prova||Flusso_liquidazione_fatturaPA_asolo|01|Inserimento punto all'odg|Flusso_liquidazione_fatturaPA_asolo|delibera#|#BOL-aa|aaaaa||Flusso_di_prova|aa| Inserimento punto all odg|Flusso di prova|delibera#|#BOL-3DI|Consigli di amministrazione|1.rtf|Giunta_informativa_responsabili_area;Giunta_informativa_responsabili_area|01;02|Proposta CDA;Comunicazione CDA|Giunta informativa responsabili area;Giunta informativa responsabili area|delibera;comunicazione&lista_odg=BOL-ORG_PROVA:#|#BOL-aa:#|#BOL-3DI:ncandelora@3di.it&lista_risultati=BOL-ORG_PROVA:#|#BOL-aa:#|#BOL-3DI:ncandelora@3di.it&lista_verbali=BOL-ORG_PROVA:#|#BOL-aa:#|#BOL-3DI:ncandelora@3di.it&lista_seduta=BOL-ORG_PROVA:#|#BOL-aa:#|#BOL-3DI:ncandelora@3di.it&baseDocUrl=http://docway-test.3di.it:80/DocWay4/docway/&, acl=, hierSearchShow=none, qordIdx=, errorMsgHandType=, inclusionFields=, specificAppCode=, exclusionFields=, wfFCount=, cod_persona_infasc=, hierSearchList=, wfActive=true, selectedWfDocs=, lookup_new=, wfDoc=, lookup_titolo=, cId=, user=, wfSelId=, aclDb=acl}
La fine delle richieste viene tracciata tramite una stringa del tipo:
<acl o docway jsp (resource path)> exiting request #<request number> (<elapsed time>ms)
Esempio:
2017-02-13 16:49:29,009 [http-bio-8080-exec-66] INFO - /DocWay4-service/application/xdocway/engine/xdocway.jsp exiting request #292 (1364ms)
Anche in questo caso nel log vengono scritti errori non significativi che posso essere ignorati:
2017-02-14 16:56:22,545 [http-bio-8080-exec-388] ERROR - invalid query="" 2017-02-14 16:56:51,551 [http-bio-8080-exec-519] ERROR - 2017.02.14 16:56:51.551 conn 2 Errore di apertura 2017-02-14 16:56:51,551 [http-bio-8080-exec-519] ERROR - Error page caught an exception! java.sql.SQLException: Errore di apertura 2017-02-14 17:00:57,327 [http-bio-8080-exec-404] ERROR - 2017.02.14 17:00:57.327 conn 2 Attenzione: non trovato documento figlio java.sql.SQLException: Attenzione: non trovato documento figlio
Altre tipologie di errori sono invece gestiti applicativamente con un messaggio di errore proposto all’utente; anche questi pertanto possono essere ignorati:
2017-02-14 17:02:04,236 [http-bio-8080-exec-420] ERROR - Email.sendWithMatricola(): got exception looking for email address for matricola PI001027 java.lang.Exception: Indirizzo email non valido 2017-02-14 17:05:35,401 [http-bio-8080-exec-470] ERROR - 2017.02.14 17:05:35.401 conn 2 Valore non univoco. Value is not unique Required Append (Violate 1337639) java.sql.SQLException: Valore non univoco. Value is not unique Required Append (Violate 1337639)
MailStorage Agent
Il MailStorage è il servizio che si occupa di recuperare i messaggi di posta dalle casella configurate in ACL e generare bozze/protocolli nell’archivio Docway. I log sono ciclici e localizzati al seguente percorso:
/opt/3di.it/docway_extra/MailStorage/logs/msa_agent.log , msa_agent.log.1, …
Se fossero presenti più istanze di MSA, i log di troverebbero nella directory logs di ogni singola istanza.
La procedura di acquisizione dei messaggi inizia con l’accesso alla casella tramite le credenziali inserite in ACL; in questa fase possono verificarsi errori di autenticazione che sono mappati nel log:
Accesso a casella di posta semplice
2017-01-20 07:16:03,690 INFO - storing email for mailbox 50 2017-01-20 07:16:03,690 INFO - connected to xdocwaydoc 2017-01-20 07:16:03,690 INFO - Connessione.connect(String): dbName: xdocwaydoc 2017-01-20 07:16:03,690 INFO - Connessione.connect(String): connection already connected to db "xdocwaydoc" --> doRestore = 49 2017-01-20 07:16:03,690 INFO - Notifying User: xw.msa 2017-01-20 07:16:03,690 INFO - Connessione.notifyUser(): getting ip address of localhost… 2017-01-20 07:16:03,690 INFO - Connessione.notifyUser(): notifying user "xw.msa" with ip address 10.55.240.107 on connection 0 2017-01-20 07:16:03,690 INFO - ...checking for new mail: protocol: pop3 popHost: webmail.equitaliaonline.it popPort: 110 login: Eqtspapop000378 2017-01-20 07:16:03,766 INFO - ... found 0 new messages
Accesso a casella di posta semplice con errore di autenticazione
2017-01-19 19:36:48,286 INFO - storing email for mailbox 56 2017-01-19 19:36:48,286 INFO - connected to xdocwaydoc 2017-01-19 19:36:48,286 INFO - Connessione.connect(String): dbName: xdocwaydoc 2017-01-19 19:36:48,286 INFO - Connessione.connect(String): connection already connected to db "xdocwaydoc" --> doRestore = 10 2017-01-19 19:36:48,286 INFO - Notifying User: xw.msa 2017-01-19 19:36:48,286 INFO - Connessione.notifyUser(): getting ip address of localhost... 2017-01-19 19:36:48,286 INFO - Connessione.notifyUser(): notifying user "xw.msa" with ip address 10.55.240.107 on connection 0 2017-01-19 19:36:48,286 INFO - ...checking for new mail: protocol: pop3 popHost: webmail.equitaliaonline.it popPort: 110 login: eqtserpop000540 2017-01-19 19:36:48,417 ERROR - error retrieving mail for: protocol: pop3 popHost: webmail.equitaliaonline.it popPort: 110 login: eqtserpop000540 javax.mail.AuthenticationFailedException: Logon failure: unknown user name or bad password. at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:209) at javax.mail.Service.connect(Service.java:364) at it.highwaytech.util.mailer.ReceiveSession.<init>(ReceiveSession.java:90) at it.highwaytech.apps.generic.mailarchiver.MailBoxManager.storeEmail(MailBoxManager.java:366) at it.highwaytech.apps.generic.mailarchiver.MailStorageAgent.main(MailStorageAgent.java:308)
Accesso a casella di posta certificata
2017-01-20 07:02:33,280 INFO - storing email for interoperability mailbox 99 2017-01-20 07:02:33,280 INFO - Connessione.connect(String): dbName: acl 2017-01-20 07:02:33,280 INFO - Connessione.connect(String): connection already connected to db "acl" --> doRestore = 18 2017-01-20 07:02:33,280 INFO - Notifying User: xw.msa 2017-01-20 07:02:33,280 INFO - Connessione.notifyUser(): getting ip address of localhost... 2017-01-20 07:02:33,280 INFO - Connessione.notifyUser(): notifying user "xw.msa" with ip address 10.55.240.107 on connection 0 2017-01-20 07:02:33,280 INFO - : rateazioni.MI@pec.equitaliariscossione.it 2017-01-20 07:02:33,280 INFO - looking for interperability documentModel... 2017-01-20 07:02:33,280 INFO - ...found 2017-01-20 07:02:33,280 INFO - Selezione.Search(): querying: '[docmodelname]=rateazioni_milano-monza-brianza_prot' (sort='',sel='null',opt=0,adj=0) 2017-01-20 07:02:33,280 INFO - FindWrapper.find(): find by query [docmodelname]=rateazioni_milano-monza-brianza_prot 2017-01-20 07:02:33,281 INFO - Selezione.Search(): found 1 elements 2017-01-20 07:02:33,284 INFO - mail box manager built. 2017-01-20 07:02:37,477 INFO - Messaggi n.0 2017-01-20 07:02:37,477 INFO - No messages 2017-01-20 07:02:37,482 INFO - ...done
Accesso a casella di posta certificata con errore di autenticazione
2017-01-20 07:02:37,482 INFO - storing email for interoperability mailbox 100 2017-01-20 07:02:37,482 INFO - Connessione.connect(String): dbName: acl 2017-01-20 07:02:37,482 INFO - Connessione.connect(String): connection already connected to db "acl" --> doRestore = 19 2017-01-20 07:02:37,482 INFO - Notifying User: xw.msa 2017-01-20 07:02:37,482 INFO - Connessione.notifyUser(): getting ip address of localhost... 2017-01-20 07:02:37,482 INFO - Connessione.notifyUser(): notifying user "xw.msa" with ip address 10.55.240.107 on connection 0 2017-01-20 07:02:37,482 INFO - : rateazioni.LU_MC@pec.equitaliariscossione.it 2017-01-20 07:02:37,482 INFO - looking for interperability documentModel... 2017-01-20 07:02:37,482 INFO - ...found 2017-01-20 07:02:37,482 INFO - Selezione.Search(): querying: '[docmodelname]=rateazioni_lucca-massacarrara_prot' (sort='',sel='null',opt=0,adj=0) 2017-01-20 07:02:37,482 INFO - FindWrapper.find(): find by query [docmodelname]=rateazioni_lucca-massacarrara_prot 2017-01-20 07:02:37,484 INFO - Selezione.Search(): found 1 elements 2017-01-20 07:02:37,487 INFO - mail box manager built. 2017-01-20 07:02:39,110 ERROR - javax.mail.AuthenticationFailedException: [AUTH] Authentication failed. 2017-01-20 07:02:39,111 ERROR - error receiving session. 2017-01-20 07:02:39,111 INFO - ...done
Ci sono altri errori che è possibile ricondurre a una configurazione errata del processo di acquisizione della mail:
Errore nella configurazione della casella in ACL
2017-01-19 19:36:50,096 ERROR - com.sun.mail.util.MailConnectException: Couldn't connect to host, port: xdocwaydoc, 995; timeout 10000; nested exception is: java.net.UnknownHostException: xdocwaydoc 2017-01-19 19:36:50,096 ERROR - error receiving session.
RPA della bozza/protocollo è privo dell’indirizzo mail
2017-01-19 19:39:01,133 ERROR - EMail.getEmailWithMatricola(): wrong email address: "" 2017-01-19 19:39:01,133 ERROR - Email.sendWithMatricola(): got exception looking for email address for matricola PI001025 java.lang.Exception: Indirizzo email non valido at it.highwaytech.apps.generic.mailarchiver.mail.EMail.getEmailWithMatricola(EMail.java:411) at it.highwaytech.apps.generic.mailarchiver.mail.EMail.sendWithMatricola(EMail.java:238) at it.highwaytech.apps.generic.mailarchiver.MailBoxManager.sendNotifyMails(MailBoxManager.java:1061) at it.highwaytech.apps.generic.mailarchiver.Interoperabilita.processMessage(Interoperabilita.java:752) at it.highwaytech.apps.generic.mailarchiver.Interoperabilita.handleMessagesForInteroperabilityMailbox(Interoperabilita.java:1141) at it.highwaytech.apps.generic.mailarchiver.MailStorageAgent.main(MailStorageAgent.java:399) 2017-01-19 19:39:01,133 ERROR - Email.sendWithMatricola(): error looking for email address for matricola PI001025
EquiNotifier
Ogni procedura EquiNotifier installata produce file di log specifici nella directory logs dedicata:
..\3di.it\docway_extra\EquiNotifier\NomeProcedura\logs\NomeProcedura.log
La procedura viene avviata ad intervalli orari predefiniti, configurati nel Task Scheduler del server di Front-End (10.55.241.76). Sul log ogni esecuzione della procedura viene evidenziato come segue:
2017-01-17 12:00:00,991 INFO - starting EquiNotifier ver. 1.0.0 2017-01-17 12:00:01,007 INFO - Current Timespamp: 20170117 - 12:00:00 2017-01-17 12:00:01,022 INFO - Last Timespamp: 20170116 - 17:00:00 2017-01-17 12:00:01,054 INFO - eXtraWay parameters. Db:'xdocwaydoc' Host:'localhost' Port:'4859' 2017-01-17 12:00:01,054 INFO - SMTP parameters. Host:'smtp.equitaliaservizi.org' Port:'25' User:'/' Password:'/' Protocol:'smtp' 2017-01-17 12:00:29,009 INFO - ...found 0 documents 2017-01-17 12:00:29,009 INFO - correct termination
Il compito della procedura è quello di effettuare una ricerca sull’archivio Docway in base a determinati parametri e, per ogni documento trovato, generare un messaggio di posta elettronica da inviare ad uno specifico indirizzo.
Eventuali errori si possono verificare all’avvio della procedura (nel caso di parametri mancanti, ad esempio) oppure nell’invio dei singoli documenti. In caso di errori nell’invio dei singoli documenti viene prodotto un report che segnala ad uno specifico indirizzo di posta gli errori riscontrati sul processo.