MsgDiagnostico.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2025 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.pdd.logger;
import java.sql.Connection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.Level;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaDelegata;
import org.openspcoop2.core.config.constants.Severita;
import org.openspcoop2.core.constants.Costanti;
import org.openspcoop2.core.constants.TipoPdD;
import org.openspcoop2.core.id.IDPortaApplicativa;
import org.openspcoop2.core.id.IDPortaDelegata;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.registry.driver.IDServizioFactory;
import org.openspcoop2.core.transazioni.TransazioneApplicativoServer;
import org.openspcoop2.message.constants.ServiceBinding;
import org.openspcoop2.pdd.config.ConfigurazionePdDManager;
import org.openspcoop2.pdd.config.OpenSPCoop2Properties;
import org.openspcoop2.pdd.core.CostantiPdD;
import org.openspcoop2.pdd.core.PdDContext;
import org.openspcoop2.pdd.core.handlers.GeneratoreCasualeDate;
import org.openspcoop2.pdd.core.transazioni.GestoreConsegnaMultipla;
import org.openspcoop2.pdd.core.transazioni.RepositoryGestioneStateful;
import org.openspcoop2.pdd.core.transazioni.Transaction;
import org.openspcoop2.pdd.core.transazioni.TransactionContext;
import org.openspcoop2.pdd.core.transazioni.TransactionDeletedException;
import org.openspcoop2.pdd.core.transazioni.TransactionNotExistsException;
import org.openspcoop2.pdd.services.skeleton.IntegrationManager;
import org.openspcoop2.protocol.engine.BasicProtocolFactory;
import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
import org.openspcoop2.protocol.engine.builder.DiagnosticoBuilder;
import org.openspcoop2.protocol.sdk.Busta;
import org.openspcoop2.protocol.sdk.Context;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.config.ITraduttore;
import org.openspcoop2.protocol.sdk.constants.TipoSerializzazione;
import org.openspcoop2.protocol.sdk.diagnostica.IDiagnosticProducer;
import org.openspcoop2.protocol.sdk.state.IState;
import org.openspcoop2.protocol.sdk.state.RequestInfo;
import org.openspcoop2.protocol.sdk.state.StateMessage;
import org.openspcoop2.utils.MapKey;
import org.openspcoop2.utils.Utilities;
import org.openspcoop2.utils.date.DateManager;
import org.slf4j.Logger;
/**
* Contiene la definizione un Logger utilizzato dai nodi dell'infrastruttura di OpenSPCoop2
* per la registrazione di messaggi diagnostici.
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class MsgDiagnostico {
/** Indicazione di un gestore di msg diagnostici funzionante */
public static boolean gestoreDiagnosticaDisponibile = true;
/** Primo errore avvenuto nel momento in cui è stato rilevato un malfunzionamento nel sistema di diagnostica */
public static Throwable motivoMalfunzionamentoDiagnostici = null;
/** Logger log4j utilizzato per scrivere i msgDiagnostici */
private org.apache.logging.log4j.Logger loggerMsgDiagnostico = null;
/** Logger log4j utilizzato per scrivere i msgDiagnostici HumanReadable */
private org.apache.logging.log4j.Logger loggerOpenSPCoop2 = null;
/** Logger log4j utilizzato per scrivere i msgDiagnostici HumanReadable del servìzio di IntegrationManager */
private org.apache.logging.log4j.Logger loggerIntegrationManager = null;
/** Logger log4j utilizzato per scrivere i msgDiagnostici da passare agli appender che non possiedono un id di transazione */
private org.apache.logging.log4j.Logger loggerResource = null;
/** Logger log4j utilizzato per segnalare a video errori gravi (FATAL) */
private Logger loggerOpenSPCoop2Fatal = null;
/** Logger log4j utilizzato per scrivere lo stack trace degli errore nel core logger di openspcoop */
private Logger loggerOpenSPCoop2Core = null;
/** Appender personalizzati per i messaggi diagnostici di OpenSPCoop2 */
private List<IDiagnosticProducer> loggerMsgDiagnosticoOpenSPCoopAppender = null;
private List<String> tipoMsgDiagnosticoOpenSPCoopAppender = null;
/** Soggetto che richiede il logger */
private IDSoggetto idSoggettoDominio;
/** Modulo Funzionale */
private String idModulo;
/** Identificativo della richiesta */
private String idMessaggioRichiesta;
/** Identificativo della risposta */
private String idMessaggioRisposta;
/** PdDContext */
private Context pddContext;
/** XMLBuilder */
private DiagnosticoBuilder diagnosticoBuilder;
/** Protocol Factory */
private IProtocolFactory<?> protocolFactory;
private ITraduttore traduttore;
/** ConfigurazionePdDReader */
private ConfigurazionePdDManager _configurazionePdDReader;
/** MsgDiagnosticiProperties reader */
private MsgDiagnosticiProperties msgDiagPropertiesReader;
/** OpenSPCoopProperties */
private OpenSPCoop2Properties openspcoopProperties = null;
/** Generatore di date casuali*/
private GeneratoreCasualeDate generatoreDateCasuali = null;
/** Properties da aggiungere ai diagnostici (utili nelle implementazioni handler) */
private Map<String,String> properties = new HashMap<>();
public Map<String, String> getProperties() {
return this.properties;
}
/** Keyword per i log personalizzati */
private Map<String,String> keywordLogPersonalizzati = new HashMap<>();
public Map<String, String> getKeywordLogPersonalizzati() {
return this.keywordLogPersonalizzati;
}
/** Informazioni sulla porta */
private String porta;
private boolean delegata;
@SuppressWarnings("unused")
private TipoPdD tipoPdD;
private Severita severitaPorta;
/** Stati */
private StateMessage state = null;
private StateMessage responseState = null;
/** RequestInfo */
private RequestInfo requestInfo = null;
public static MsgDiagnostico newInstance(TipoPdD tipoPdD,IDSoggetto idSoggettoDominio, String modulo,String nomePorta, RequestInfo requestInfo, ConfigurazionePdDManager configurazionePdDManager) {
return new MsgDiagnostico(tipoPdD, idSoggettoDominio, modulo, nomePorta, requestInfo,
configurazionePdDManager, null, null);
}
public static MsgDiagnostico newInstance(TipoPdD tipoPdD,IDSoggetto idSoggettoDominio, String modulo,String nomePorta, RequestInfo requestInfo, IState state) {
return new MsgDiagnostico(tipoPdD, idSoggettoDominio, modulo, nomePorta, requestInfo,
null, state, null);
}
public static MsgDiagnostico newInstance(TipoPdD tipoPdD,IDSoggetto idSoggettoDominio, String modulo,String nomePorta, RequestInfo requestInfo, IState state, IState responseState) {
return new MsgDiagnostico(tipoPdD, idSoggettoDominio, modulo, nomePorta, requestInfo,
null, state, responseState);
}
public static MsgDiagnostico newInstance(TipoPdD tipoPdD,String modulo,String nomePorta, RequestInfo requestInfo, ConfigurazionePdDManager configurazionePdDManager) {
return new MsgDiagnostico(tipoPdD, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, nomePorta, requestInfo,
configurazionePdDManager, null, null);
}
public static MsgDiagnostico newInstance(TipoPdD tipoPdD,String modulo,String nomePorta, RequestInfo requestInfo) {
return new MsgDiagnostico(tipoPdD, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, nomePorta, requestInfo,
null, null, null);
}
public static MsgDiagnostico newInstance(TipoPdD tipoPdD,String modulo,ConfigurazionePdDManager configurazionePdDManager) {
return new MsgDiagnostico(tipoPdD, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, null, null,
configurazionePdDManager, null, null);
}
public static MsgDiagnostico newInstance(TipoPdD tipoPdD,String modulo) {
return new MsgDiagnostico(tipoPdD, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, null, null,
null, null, null);
}
public static MsgDiagnostico newInstance(IDSoggetto idSoggettoDominio, String modulo,ConfigurazionePdDManager configurazionePdDManager) {
return new MsgDiagnostico(null, idSoggettoDominio, modulo, null, null,
configurazionePdDManager, null, null);
}
public static MsgDiagnostico newInstance(String modulo,ConfigurazionePdDManager configurazionePdDManager) {
return new MsgDiagnostico(null, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, null, null,
configurazionePdDManager, null, null);
}
public static MsgDiagnostico newInstance(String modulo) {
return new MsgDiagnostico(null, OpenSPCoop2Properties.getInstance().getIdentitaPortaDefaultWithoutProtocol(), modulo, null, null,
null, null, null);
}
public static MsgDiagnostico newInstance() {
return new MsgDiagnostico();
}
/**
* Costruttore.
*
* @param idSoggettoDominio Soggetto che richiede il logger
* @param modulo Funzione che richiede il logger
* @throws ProtocolException
*
*/
private MsgDiagnostico(TipoPdD tipoPdD,IDSoggetto idSoggettoDominio, String modulo,String nomePorta, RequestInfo requestInfo,
ConfigurazionePdDManager configurazionePdDManagerParam,IState stateParam, IState responseStateParam) {
this.idSoggettoDominio = idSoggettoDominio;
this.idModulo = modulo;
this.loggerMsgDiagnostico = OpenSPCoop2Logger.loggerMsgDiagnostico;
this.loggerOpenSPCoop2 = OpenSPCoop2Logger.loggerOpenSPCoop2;
this.loggerIntegrationManager = OpenSPCoop2Logger.loggerIntegrationManager;
this.loggerResource = OpenSPCoop2Logger.loggerOpenSPCoopResourcesAsLoggerImpl;
this.loggerOpenSPCoop2Fatal = OpenSPCoop2Logger.loggerOpenSPCoopConsole;
this.loggerMsgDiagnosticoOpenSPCoopAppender = OpenSPCoop2Logger.loggerMsgDiagnosticoOpenSPCoopAppender;
this.tipoMsgDiagnosticoOpenSPCoopAppender = OpenSPCoop2Logger.tipoMsgDiagnosticoOpenSPCoopAppender;
this.loggerOpenSPCoop2Core = OpenSPCoop2Logger.loggerOpenSPCoopCore;
if(configurazionePdDManagerParam!=null) {
this._configurazionePdDReader = configurazionePdDManagerParam;
this.state = this._configurazionePdDReader.getState();
this.responseState = this._configurazionePdDReader.getResponseState();
}
else {
if(stateParam!=null && stateParam instanceof StateMessage){
this.state = (StateMessage) stateParam;
}
if(responseStateParam!=null && responseStateParam instanceof StateMessage){
this.responseState = (StateMessage) responseStateParam;
}
this._configurazionePdDReader = ConfigurazionePdDManager.getInstance(this.state, this.responseState);
}
this.msgDiagPropertiesReader = MsgDiagnosticiProperties.getInstance();
this.openspcoopProperties = OpenSPCoop2Properties.getInstance();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato()){
this.generatoreDateCasuali = GeneratoreCasualeDate.getGeneratoreCasualeDate();
}
try{
if(requestInfo!=null && requestInfo.getProtocolFactory()!=null) {
this.protocolFactory = requestInfo.getProtocolFactory();
}
else {
throw new Exception("ProtocolFactory unknow");
}
this.traduttore = this.protocolFactory.createTraduttore();
} catch(Throwable e){
// Succede quando non appartiene a nessun protocollo, ad esempio i diagnostici di startup
this.protocolFactory = new BasicProtocolFactory(this.loggerOpenSPCoop2Core);
try{
this.traduttore = this.protocolFactory.createTraduttore();
} catch(Throwable eClose){}
//this.protocolFactory = null;
}
this.diagnosticoBuilder = new DiagnosticoBuilder(this.protocolFactory);
// Impostazione filtri
// Il filtro viene effettuato a livello di programma.
this.requestInfo = requestInfo;
this.porta = nomePorta;
this.tipoPdD = tipoPdD;
if(tipoPdD!=null) {
if(TipoPdD.DELEGATA.equals(tipoPdD)) {
this.delegata = true;
}
else {
this.delegata = false;
}
}
this.setPorta(this.requestInfo);
}
private ConfigurazionePdDManager getConfigurazionePdDManager() {
if(this._configurazionePdDReader!=null) {
return this._configurazionePdDReader;
}
if(this.state!=null || this.responseState!=null) {
return ConfigurazionePdDManager.getInstance(this.state, this.responseState);
}
return ConfigurazionePdDManager.getInstance();
}
private MsgDiagnostico(){
this.msgDiagPropertiesReader = MsgDiagnosticiProperties.getInstance();
}
private void setPorta(RequestInfo requestInfo) {
if(this.porta!=null) {
if(this.delegata) {
try {
IDPortaDelegata idPD = new IDPortaDelegata();
idPD.setNome(this.porta);
PortaDelegata pd = this.getConfigurazionePdDManager().getPortaDelegataSafeMethod(idPD, requestInfo);
if(pd!=null && pd.getTracciamento()!=null) {
this.severitaPorta = pd.getTracciamento().getSeverita();
}
}
catch(Throwable e){}
}
else {
try {
IDPortaApplicativa idPA = new IDPortaApplicativa();
idPA.setNome(this.porta);
PortaApplicativa pa = this.getConfigurazionePdDManager().getPortaApplicativaSafeMethod(idPA, requestInfo);
if(pa!=null && pa.getTracciamento()!=null) {
this.severitaPorta = pa.getTracciamento().getSeverita();
}
}
catch(Throwable e){}
}
}
}
public void updateRequestInfo(RequestInfo requestInfo) {
this.requestInfo = requestInfo;
}
public void updatePorta(String porta, RequestInfo requestInfo) {
this.updatePorta(null, porta, requestInfo);
}
public void updatePorta(TipoPdD tipoPdD, String porta, RequestInfo requestInfo) {
if(tipoPdD!=null) {
this.tipoPdD = tipoPdD;
if(TipoPdD.DELEGATA.equals(tipoPdD)) {
this.delegata = true;
}
else {
this.delegata = false;
}
}
this.porta = porta;
this.setPorta(requestInfo);
}
public String getPorta() {
return this.porta;
}
public void updateState(IState requestStateParam, IState responseStateParam) {
StateMessage requestState = null;
StateMessage responseState = null;
if(requestStateParam!=null && requestStateParam instanceof StateMessage) {
requestState = (StateMessage) requestStateParam;
}
if(responseStateParam!=null && responseStateParam instanceof StateMessage) {
responseState = (StateMessage) responseStateParam;
}
updateState(requestState, responseState);
}
public void updateState(StateMessage requestState, StateMessage responseState){
this.state = requestState;
this.responseState = responseState;
if(this.state!=null || this.responseState!=null) {
if(this._configurazionePdDReader!=null) {
this._configurazionePdDReader = this._configurazionePdDReader.refreshState(this.state, this.responseState);
}
else {
this._configurazionePdDReader = ConfigurazionePdDManager.getInstance(this.state, this.responseState);
}
}
else {
this._configurazionePdDReader = ConfigurazionePdDManager.getInstance();
}
}
public void updateState(ConfigurazionePdDManager configurazionePdDManager){
this._configurazionePdDReader = configurazionePdDManager;
if(this._configurazionePdDReader!=null) {
this.state = this._configurazionePdDReader.getState();
this.responseState = this._configurazionePdDReader.getResponseState();
}
else {
this._configurazionePdDReader = ConfigurazionePdDManager.getInstance();
}
}
private Connection getConnectionFromState(){
if(this.state!=null) {
Connection c = StateMessage.getConnection(this.state);
if(c!=null) {
return c;
}
}
if(this.responseState!=null) {
Connection c = StateMessage.getConnection(this.responseState);
if(c!=null) {
return c;
}
}
return null;
}
private IState getValidConnectionState(){
if(this.state!=null) {
Connection c = StateMessage.getConnection(this.state);
if(c!=null) {
return this.state;
}
}
if(this.responseState!=null) {
Connection c = StateMessage.getConnection(this.responseState);
if(c!=null) {
return this.responseState;
}
}
return null;
}
/**
* Il Metodo si occupa di impostare il dominio del Soggetto che utilizza il logger.
*
* @param idSoggettoDominio Soggetto che richiede il logger
*
*/
public void setDominio(IDSoggetto idSoggettoDominio){
this.idSoggettoDominio = idSoggettoDominio;
}
public IDSoggetto getDominio() {
return this.idSoggettoDominio;
}
/**
* Il Metodo si occupa di impostare il contesto della PdD
*
* @param pddContext Contesto della PdD
*
*/
public void setPddContext(Context pddContext, IProtocolFactory<?> protocolFactory) {
this.pddContext = pddContext;
this.protocolFactory = protocolFactory;
try{
this.traduttore = this.protocolFactory.createTraduttore();
}catch(Exception e){
// ignore
}
this.diagnosticoBuilder = new DiagnosticoBuilder(protocolFactory);
this.addKeywords(protocolFactory);
}
/**
* Il Metodo si occupa di impostare il modulo funzionale che che utilizza il logger.
*
* @param modulo Funzione che richiede il logger
*
*/
public void setFunzione(String modulo){
this.idModulo = modulo;
}
public String getFunzione() {
return this.idModulo;
}
/**
* Il Metodo si occupa di impostare l'identificativo della richiesta in gestione.
*
* @param id Identificativo
*/
public void setIdMessaggioRichiesta(String id){
this.idMessaggioRichiesta = id;
}
/**
* Il Metodo si occupa di impostare l'identificativo della risposta in gestione.
*
* @param id Identificativo
*/
public void setIdMessaggioRisposta(String id){
this.idMessaggioRisposta = id;
}
/**
* Il Metodo si occupa di impostare i filtri sui logger.
*
*
*/
public void aggiornaFiltri(){
// Il filtro viene effettuato a livello di programma.
}
/**
* Filter.
*
*
* @deprecated utility che elimina i caratteri XML codificati
*/
@Deprecated public String filter(String msg){
String xml = msg.replaceAll("<","<");
xml = xml.replaceAll(""","\"");
xml = xml.replaceAll(">",">");
return xml;
}
/** -----------------Impostazione Identificatori nei messaggi ---------------- */
private IDSoggetto fruitore;
private IDServizio servizio;
private String servizioApplicativo;
private String idCorrelazioneApplicativa;
private String idCorrelazioneRisposta;
public void setFruitore(IDSoggetto fruitore) {
this.fruitore = fruitore;
}
public void setServizio(IDServizio servizio) {
this.servizio = servizio;
}
public void setServizioApplicativo(String servizioApplicativo) {
this.servizioApplicativo = servizioApplicativo;
}
public void setIdCorrelazioneApplicativa(String idCorrelazioneApplicativa) {
this.idCorrelazioneApplicativa = idCorrelazioneApplicativa;
}
public void setIdCorrelazioneRisposta(String idCorrelazioneRisposta) {
this.idCorrelazioneRisposta = idCorrelazioneRisposta;
}
/** -----------------Impostazione TransazioneApplicativoServer ---------------- */
private TransazioneApplicativoServer transazioneApplicativoServer;
private IDPortaApplicativa idPortaApplicativa;
public void setTransazioneApplicativoServer(TransazioneApplicativoServer transazioneApplicativoServer, IDPortaApplicativa idPortaApplicativa) {
this.transazioneApplicativoServer = transazioneApplicativoServer;
this.idPortaApplicativa = idPortaApplicativa;
}
/*---------- Livelli/Messaggi personalizzati -------------*/
/** Keyword replace per msg personalizzati */
public void addKeyword(String key,String value){
if(key!=null){
String tmpValue = value;
if(tmpValue == null)
tmpValue = "";
this.keywordLogPersonalizzati.put(key, tmpValue);
}
}
public void addKeywordErroreProcessamento(Throwable t) {
this.addKeywordErroreProcessamento(t, null);
}
public void addKeywordErroreProcessamento(Throwable t,String prefix) {
String eccezione = t!=null ? Utilities.readFirstErrorValidMessageFromException(t) : "Internal Error";
if(prefix!=null) {
prefix = prefix.trim();
if(prefix.endsWith(":")==false) {
prefix = prefix +":";
}
prefix = prefix +" ";
this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO ,prefix +eccezione);
}
else {
this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO ,eccezione);
}
}
public void addKeywords(IProtocolFactory<?> protocolFactory){
this.addKeyword(CostantiPdD.KEY_PROTOCOLLO, protocolFactory.getProtocol());
try{
this.addKeyword(CostantiPdD.KEY_PROTOCOLLO_TIPI_SOGGETTI, protocolFactory.createProtocolConfiguration().getTipiSoggetti().toString());
}catch(Exception e){
// ignore
}
try{
RequestInfo requestInfoParam = null;
if(this.pddContext!=null && this.pddContext.containsKey(Costanti.REQUEST_INFO)){
requestInfoParam = (RequestInfo) this.pddContext.getObject(Costanti.REQUEST_INFO);
}
else{
requestInfoParam = this.requestInfo;
}
ServiceBinding serviceBinding = null;
if(requestInfoParam!=null) {
if(requestInfoParam.getProtocolContext().isPortaApplicativaService()) {
serviceBinding = requestInfoParam.getProtocolServiceBinding();
}
else{
serviceBinding = requestInfoParam.getIntegrationServiceBinding();
}
}
this.addKeyword(CostantiPdD.KEY_PROTOCOLLO_TIPI_SERVIZI, protocolFactory.createProtocolConfiguration().getTipiServizi(serviceBinding).toString());
}catch(Exception e){
// ignore
}
}
public void addKeywords(Busta busta,boolean richiesta){
if(busta!=null){
if(richiesta){
if(busta.getID()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RICHIESTA, busta.getID());
else
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RICHIESTA, "N.D.");
if(busta.getProfiloDiCollaborazione()!=null){
String profilo = null;
if(this.traduttore!=null){
profilo = this.traduttore.toString(busta.getProfiloDiCollaborazione());
}
else if(busta.getProtocollo()!=null){
try{
IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(busta.getProtocollo());
ITraduttore traduttore = protocolFactory.createTraduttore();
profilo = traduttore.toString(busta.getProfiloDiCollaborazione());
}catch(Exception e){
profilo = busta.getProfiloDiCollaborazione().name();
}
}else{
profilo = busta.getProfiloDiCollaborazione().name();
}
if(profilo==null){
profilo = busta.getProfiloDiCollaborazione().getEngineValue();
}
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_PROFILO_COLLABORAZIONE, profilo);
}
if(busta.getTipoMittente()!=null) {
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RICHIESTA, busta.getTipoMittente());
}
else {
try{
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RICHIESTA, ProtocolFactoryManager.getInstance().getDefaultOrganizationTypes().get(busta.getProtocollo()));
}catch(Exception e){}
}
if(busta.getMittente()!=null) {
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA, busta.getMittente());
}else {
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA, CostantiPdD.SOGGETTO_ANONIMO);
}
if(busta.getTipoDestinatario()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_DESTINATARIO_BUSTA_RICHIESTA, busta.getTipoDestinatario());
if(busta.getDestinatario()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_DESTINATARIO_BUSTA_RICHIESTA, busta.getDestinatario());
if(busta.getTipoServizio()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_SERVIZIO_BUSTA_RICHIESTA, busta.getTipoServizio());
if(busta.getServizio()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SERVIZIO_BUSTA_RICHIESTA, busta.getServizio());
if(busta.getVersioneServizio()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_VERSIONE_SERVIZIO_BUSTA_RICHIESTA, busta.getVersioneServizio().intValue()+"");
if(busta.getAzione()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RICHIESTA, busta.getAzione());
else
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RICHIESTA, "");
if(busta.getRiferimentoMessaggio()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_RIFERIMENTO_MESSAGGIO_RICHIESTA, busta.getRiferimentoMessaggio());
if(busta.getSequenza()>0){
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SEQUENZA, busta.getSequenza()+"");
}
if(busta.getIndirizzoMittente()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_INDIRIZZO_TELEMATICO_MITTENTE_RICHIESTA, busta.getIndirizzoMittente());
if(busta.getIndirizzoDestinatario()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_INDIRIZZO_TELEMATICO_DESTINATARIO_RICHIESTA, busta.getIndirizzoDestinatario());
if(busta.getScadenza()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SCADENZA_BUSTA_RICHIESTA, busta.getScadenza().toString());
if(busta.getTipoDestinatario()!=null && busta.getDestinatario()!=null &&
busta.getTipoServizio()!=null && busta.getServizio()!=null && busta.getVersioneServizio()!=null){
try{
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_URI_ACCORDO_PARTE_SPECIFICA,
IDServizioFactory.getInstance().getUriFromValues(busta.getTipoServizio(), busta.getServizio(),
busta.getTipoDestinatario(), busta.getDestinatario(), busta.getVersioneServizio()));
}catch(Exception e){
throw new RuntimeException(e.getMessage(),e);
}
}
}
else{
if(busta.getID()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RISPOSTA, busta.getID());
else
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RISPOSTA, "N.D.");
if(busta.getProfiloDiCollaborazione()!=null){
String profilo = null;
if(this.traduttore!=null){
profilo = this.traduttore.toString(busta.getProfiloDiCollaborazione());
}
else if(busta.getProtocollo()!=null){
try{
IProtocolFactory<?> protocolFactory = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(busta.getProtocollo());
ITraduttore traduttore = protocolFactory.createTraduttore();
profilo = traduttore.toString(busta.getProfiloDiCollaborazione());
}catch(Exception e){
profilo = busta.getProfiloDiCollaborazione().getEngineValue();
}
}else{
profilo = busta.getProfiloDiCollaborazione().getEngineValue();
}
if(profilo==null){
profilo = busta.getProfiloDiCollaborazione().getEngineValue();
}
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_PROFILO_COLLABORAZIONE, profilo);
}
if(busta.getTipoMittente()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RISPOSTA, busta.getTipoMittente());
if(busta.getMittente()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RISPOSTA, busta.getMittente());
if(busta.getTipoDestinatario()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_DESTINATARIO_BUSTA_RISPOSTA, busta.getTipoDestinatario());
if(busta.getDestinatario()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_DESTINATARIO_BUSTA_RISPOSTA, busta.getDestinatario());
if(busta.getTipoServizio()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_SERVIZIO_BUSTA_RISPOSTA, busta.getTipoServizio());
if(busta.getServizio()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SERVIZIO_BUSTA_RISPOSTA, busta.getServizio());
if(busta.getVersioneServizio()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_VERSIONE_SERVIZIO_BUSTA_RISPOSTA, busta.getVersioneServizio().intValue()+"");
if(busta.getAzione()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RISPOSTA, busta.getAzione());
else
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RISPOSTA, "");
if(busta.getRiferimentoMessaggio()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_RIFERIMENTO_MESSAGGIO_RISPOSTA, busta.getRiferimentoMessaggio());
if(busta.getSequenza()>0){
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SEQUENZA, busta.getSequenza()+"");
}
if(busta.getIndirizzoMittente()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_INDIRIZZO_TELEMATICO_MITTENTE_RISPOSTA, busta.getIndirizzoMittente());
if(busta.getIndirizzoDestinatario()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_INDIRIZZO_TELEMATICO_DESTINATARIO_RISPOSTA, busta.getIndirizzoDestinatario());
if(busta.getScadenza()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SCADENZA_BUSTA_RISPOSTA, busta.getScadenza().toString());
}
}
}
public void addKeywords(IDSoggetto soggettoFruitore){
this.addKeywords(soggettoFruitore,null,null);
}
public void addKeywords(IDServizio idServizio){
this.addKeywords(null,idServizio,null);
}
public void addKeywords(IDSoggetto soggettoFruitore,IDServizio idServizio,String idMessaggio){
if(idMessaggio!=null){
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RICHIESTA, idMessaggio);
}
if(soggettoFruitore!=null){
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RICHIESTA, soggettoFruitore.getTipo());
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA, soggettoFruitore.getNome());
}
else {
if(idServizio!=null && idServizio.getTipo()!=null) {
try{
String protocollo = ProtocolFactoryManager.getInstance().getProtocolByServiceType(idServizio.getTipo());
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_MITTENTE_BUSTA_RICHIESTA, ProtocolFactoryManager.getInstance().getDefaultOrganizationTypes().get(protocollo));
}catch(Exception e){
// ignore
}
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA, CostantiPdD.SOGGETTO_ANONIMO);
}
}
if(idServizio!=null){
if(idServizio.getSoggettoErogatore()!=null){
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_DESTINATARIO_BUSTA_RICHIESTA, idServizio.getSoggettoErogatore().getTipo());
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_DESTINATARIO_BUSTA_RICHIESTA, idServizio.getSoggettoErogatore().getNome());
}
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_TIPO_SERVIZIO_BUSTA_RICHIESTA, idServizio.getTipo());
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_SERVIZIO_BUSTA_RICHIESTA, idServizio.getNome());
if(idServizio.getVersione()!=null){
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_VERSIONE_SERVIZIO_BUSTA_RICHIESTA, idServizio.getVersione().intValue()+"");
}
if(idServizio.getAzione()!=null)
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_AZIONE_BUSTA_RICHIESTA, idServizio.getAzione());
try{
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_URI_ACCORDO_PARTE_SPECIFICA, IDServizioFactory.getInstance().getUriFromIDServizio(idServizio));
}catch(Exception e){
throw new RuntimeException(e.getMessage(),e);
}
}
}
public void updateKeywordIdMessaggioRichiesta(String idMessaggio){
if(idMessaggio!=null){
this.keywordLogPersonalizzati.put(CostantiPdD.KEY_ID_MESSAGGIO_RICHIESTA, idMessaggio);
}
}
public String replaceKeywords(String msg){
/* Potenzialmente N^2
String tmp = msg;
Enumeration<String> keys = this.keywordLogPersonalizzati.keys();
while(keys.hasMoreElements()){
String key = keys.nextElement();
tmp = tmp.replace(key, this.keywordLogPersonalizzati.get(key));
}
return tmp;
*/
/* Costoso e inutile per quasi tutti i diagnostici
// Check di esistenza di almeno 2 '@'
if(msg!=null && msg.length()>2){
int index1 = msg.indexOf("@");
int index2 = msg.indexOf("@",index1+1);
if(index1<0 || index2<0){
return msg; // non serve il replace
}
}
*/
StringBuilder bf = new StringBuilder();
StringBuilder keyword = new StringBuilder();
boolean separator = false;
char separatorChar = '@';
for(int i=0; i<msg.length(); i++){
char ch = msg.charAt(i);
if(separatorChar == ch){
if(separator==false){
// inizio keyword
keyword.append(separatorChar);
separator = true;
}
else{
// fine keyword
keyword.append(separatorChar);
String valoreRimpiazzato = this.keywordLogPersonalizzati.get(keyword.toString());
if(valoreRimpiazzato==null){
// keyword non esistente, devo utilizzare l'originale
bf.append(keyword.toString());
}else{
bf.append(valoreRimpiazzato);
}
keyword.setLength(0);
separator=false;
}
}else{
if(separator){
// sto scrivendo la keyword
keyword.append(ch);
}else{
bf.append(ch);
}
}
}
if ( separator )
bf.append(keyword.toString());
return bf.toString();
}
private String prefixMsgPersonalizzati = null;
public String getPrefixMsgPersonalizzati() {
return this.prefixMsgPersonalizzati;
}
public void setPrefixMsgPersonalizzati(String v){
this.prefixMsgPersonalizzati = v;
}
public int getLivello(String keyLivelloPersonalizzato){
return getLivello(this.prefixMsgPersonalizzati, keyLivelloPersonalizzato);
}
public int getLivello(String prefix,String keyLivelloPersonalizzato){
if(this.msgDiagPropertiesReader==null){
return -1;
}
Integer livello = this.msgDiagPropertiesReader.getLivello(prefix,keyLivelloPersonalizzato);
if(livello!=null){
return livello;
} else{
return -1;
}
}
public String getCodice(String keyCodicePersonalizzato){
return getCodice(this.prefixMsgPersonalizzati, keyCodicePersonalizzato);
}
public String getCodice(String prefix,String keyCodicePersonalizzato){
if(this.msgDiagPropertiesReader==null){
return "PropertiesReader dei Messaggi Diagnostici non inizializzato";
}
return this.msgDiagPropertiesReader.getCodice(prefix,keyCodicePersonalizzato);
}
public String getMessaggio(String keyMsgPersonalizzato){
return this.getMessaggio(this.prefixMsgPersonalizzati, keyMsgPersonalizzato, false);
}
public String getMessaggio(String prefix,String keyMsgPersonalizzato){
return this.getMessaggio(prefix, keyMsgPersonalizzato, false);
}
public String getMessaggio_replaceKeywords(String keyMsgPersonalizzato){
return this.getMessaggio(this.prefixMsgPersonalizzati, keyMsgPersonalizzato, true);
}
public String getMessaggio_replaceKeywords(String prefix,String keyMsgPersonalizzato){
return this.getMessaggio(prefix, keyMsgPersonalizzato, true);
}
private String getMessaggio(String prefix,String keyMsgPersonalizzato,boolean replaceKeywords){
if(this.msgDiagPropertiesReader==null){
return "PropertiesReader dei Messaggi Diagnostici non inizializzato";
}
String msgTmp = this.msgDiagPropertiesReader.getMessaggio(prefix,keyMsgPersonalizzato);
if(msgTmp==null){
msgTmp = "Messaggio diagnostico ["+prefix+keyMsgPersonalizzato+"] non definito nella configurazione della porta di dominio??";
}
if(replaceKeywords){
String msgReplaceKey = this.replaceKeywords(msgTmp);
return msgReplaceKey;
}else{
return msgTmp;
}
}
/** ----------------- METODI DI LOGGING (Messaggi Diagnostici) ---------------- */
private void setEmitErrorConditionInContext(int livelloLog){
if(this.pddContext!=null){
if(livelloLog<=LogLevels.SEVERITA_ERROR_INTEGRATION){
if(this.pddContext.containsKey(Costanti.EMESSI_DIAGNOSTICI_ERRORE)==false){
this.pddContext.addObject(Costanti.EMESSI_DIAGNOSTICI_ERRORE, "true");
}
}
}
}
public void emitRicezioneMessaggioModuloBuste(MsgDiagnostico msgDiag, PdDContext pddContext, boolean mittenteAnonimo) {
if(mittenteAnonimo) {
msgDiag.logPersonalizzato("ricezioneMessaggio.mittenteAnonimo");
}
else {
// verifico che l'identita sia stata definita nel contesto del diagnostico non come 'Anonimo'
if(this.keywordLogPersonalizzati!=null) {
String v = this.keywordLogPersonalizzati.get(CostantiPdD.KEY_MITTENTE_BUSTA_RICHIESTA);
if(v==null || "".equals(v) || CostantiPdD.SOGGETTO_ANONIMO.equals(v)) {
mittenteAnonimo = true;
}
}
if(mittenteAnonimo) {
msgDiag.logPersonalizzato("ricezioneMessaggio.mittenteAnonimo");
}
else {
msgDiag.logPersonalizzato("ricezioneMessaggio");
}
}
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'Personalizzato'.
*
*
*/
public void logPersonalizzato_custom(String messaggio, int livelloLog, String codiceDiagnostico){
_logPersonalizzato(null, null, null,
messaggio, livelloLog, codiceDiagnostico);
}
public void logPersonalizzato_custom(String prefix, String messaggio, int livelloLog, String codiceDiagnostico){
_logPersonalizzato(prefix, null, null,
messaggio, livelloLog, codiceDiagnostico);
}
public void logPersonalizzato_prefix(String prefix, String idModuloFunzionale,String idDiagnostico){
_logPersonalizzato(prefix, idModuloFunzionale, idDiagnostico,
null,null,null);
}
public void logPersonalizzato_prefix(String prefix, String idDiagnostico){
_logPersonalizzato(prefix, null, idDiagnostico,
null,null,null);
}
public void logPersonalizzato(String idModuloFunzionale,String idDiagnostico){
_logPersonalizzato(null, idModuloFunzionale, idDiagnostico,
null,null,null);
}
public void logPersonalizzato(String idDiagnostico){
_logPersonalizzato(null, null, idDiagnostico,
null,null,null);
}
private void _logPersonalizzato(String prefix, String idModuloFunzionale,String idDiagnostico,
String messaggioFromParam, Integer livelloLogFromParam, String codiceDiagnosticoFromParam) {
if(this.msgDiagPropertiesReader==null){
logError("MsgDiagnostico.logPersonalizzato [Risorsa non inizializzata], messaggio per idModuloFunzionale["+idModuloFunzionale+"] idDiagnostico["+idDiagnostico+"]");
return;
}
int livelloLog = -1;
if(livelloLogFromParam!=null) {
livelloLog = livelloLogFromParam;
}
else {
if(idModuloFunzionale!=null) {
livelloLog = this.getLivello(idModuloFunzionale,idDiagnostico);
}
else {
livelloLog = this.getLivello(idDiagnostico);
}
}
int severitaLogEmessoPerFiltro = livelloLog;
int severitaLivelloOpenSPCoop2 = LogLevels.toIntervalloOpenSPCoop2(livelloLog);
if(severitaLivelloOpenSPCoop2<0 || severitaLivelloOpenSPCoop2>7){
logError("MsgDiagnostico.logPersonalizzato error, conversione a livello OpenSPCoop non riuscita ["+severitaLivelloOpenSPCoop2+"]");
return;
}
this.setEmitErrorConditionInContext(severitaLivelloOpenSPCoop2);
Level logLevelseveritaLivelloLog4J = LogLevels.toLog4J(severitaLivelloOpenSPCoop2);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
String messaggio = null;
String codiceDiagnostico = null;
if(messaggioFromParam!=null) {
messaggio = messaggioFromParam;
codiceDiagnostico = codiceDiagnosticoFromParam;
}
else {
if(idModuloFunzionale!=null) {
messaggio = this.getMessaggio(idModuloFunzionale,idDiagnostico);
codiceDiagnostico = this.getCodice(idModuloFunzionale,idDiagnostico);
}
else {
messaggio = this.getMessaggio(idDiagnostico);
codiceDiagnostico = this.getCodice(idDiagnostico);
}
}
if(messaggio==null){
logError("MsgDiagnostico.logPersonalizzato error, messaggio non definito.");
return;
}
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
// Replace keyword
String msgReplaceKey = this.replaceKeywords(messaggio);
if(prefix!=null) {
msgReplaceKey = prefix + msgReplaceKey;
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = this.getMsgDiagnostico(gdo, severitaLivelloOpenSPCoop2, msgReplaceKey, codiceDiagnostico);
// Messaggio diagnostici
//System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile ){
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(logLevelseveritaLivelloLog4J,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
//System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog ){
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(logLevelseveritaLivelloLog4J,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
//ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(logLevelseveritaLivelloLog4J,message);
}else{
this.loggerOpenSPCoop2.log(logLevelseveritaLivelloLog4J,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
// Log fatal emesso su console jboss
if(msgReplaceKey!=null && severitaLivelloOpenSPCoop2==0){
// dalla versione 2.3, essendo utilizzato slf4j, si converte fatal in error.
//this.loggerOpenSPCoop2Fatal.log(LogLevels.LOG_LEVEL_FATAL,msgReplaceKey);
this.loggerOpenSPCoop2Fatal.error(msgReplaceKey);
}
}catch(Exception e){
logError("MsgDiagnostico.logPersonalizzato error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
public void addLogPersonalizzato(String idModuloFunzionale,String idDiagnostico, Transaction transaction, StringBuilder errorLog){
if(this.msgDiagPropertiesReader==null){
logError("MsgDiagnostico.logPersonalizzato [Risorsa non inizializzata], messaggio per idModuloFunzionale["+idModuloFunzionale+"] idDiagnostico["+idDiagnostico+"]");
return;
}
int livelloLog = -1;
if(idModuloFunzionale!=null) {
livelloLog = this.getLivello(idModuloFunzionale,idDiagnostico);
}
else {
livelloLog = this.getLivello(idDiagnostico);
}
int severitaLogEmessoPerFiltro = livelloLog;
int severitaLivelloOpenSPCoop2 = LogLevels.toIntervalloOpenSPCoop2(livelloLog);
if(severitaLivelloOpenSPCoop2<0 || severitaLivelloOpenSPCoop2>7){
logError("MsgDiagnostico.logPersonalizzato error, conversione a livello OpenSPCoop non riuscita ["+severitaLivelloOpenSPCoop2+"]");
return;
}
this.setEmitErrorConditionInContext(severitaLivelloOpenSPCoop2);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLog) {
return;
}
String messaggio = null;
String codiceDiagnostico = null;
if(idModuloFunzionale!=null) {
messaggio = this.getMessaggio(idModuloFunzionale,idDiagnostico);
codiceDiagnostico = this.getCodice(idModuloFunzionale,idDiagnostico);
}
else {
messaggio = this.getMessaggio(idDiagnostico);
codiceDiagnostico = this.getCodice(idDiagnostico);
}
if(messaggio==null){
logError("MsgDiagnostico.logPersonalizzato error, messaggio non definito.");
return;
}
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
// Replace keyword
String msgReplaceKey = this.replaceKeywords(messaggio);
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = this.getMsgDiagnostico(gdo, severitaLivelloOpenSPCoop2, msgReplaceKey, codiceDiagnostico);
if(errorLog!=null) {
errorLog.append(msgDiag.getMessaggio());
}
transaction.addMsgDiagnostico(msgDiag);
}catch(Exception e){
logError("MsgDiagnostico.logPersonalizzato error "+e.getMessage(),e);
// log su core solamente
/**gestioneErroreDiagnostica(e);*/
}
}
public void logErroreGenerico(Throwable e, String posizioneErrore) {
String msg = e!=null ? Utilities.readFirstErrorValidMessageFromException(e) : "Internal Error";
this.logErroreGenerico(msg,posizioneErrore);
// inoltre registro l'errore nel logger_core di openspcoop
if(this.loggerOpenSPCoop2Core!=null)
this.loggerOpenSPCoop2Core.error(posizioneErrore+": "+msg,e);
}
public void logErroreGenerico(String message, String posizioneErrore) {
this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO, message);
this.addKeyword(CostantiPdD.KEY_POSIZIONE_ERRORE, posizioneErrore);
this.logPersonalizzato(MsgDiagnosticiProperties.MSG_DIAG_ALL,"erroreGenerico");
}
public void logFatalError(Throwable e, String posizioneErrore) {
String msg = e!=null ? Utilities.readFirstErrorValidMessageFromException(e) : "Internal Error";
this.logFatalError(msg,posizioneErrore);
// inoltre registro l'errore nel logger_core di openspcoop
if(this.loggerOpenSPCoop2Core!=null){
// dalla versione 2.3, essendo utilizzato slf4j, si converte fatal in error.
//this.loggerOpenSPCoop2Core.fatal(posizioneErrore+": "+msg,e);
this.loggerOpenSPCoop2Core.error(posizioneErrore+": "+msg,e);
}
}
public void logFatalError(String message, String posizioneErrore) {
this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO, message);
this.addKeyword(CostantiPdD.KEY_POSIZIONE_ERRORE, posizioneErrore);
this.logPersonalizzato(MsgDiagnosticiProperties.MSG_DIAG_ALL,"erroreGenericoMalfunzionamentoPdD");
}
public void logStartupError(Throwable e, String posizioneErrore) {
String msg = null;
if(e instanceof NullPointerException)
msg = "NullPointerException";
else
msg = e.getMessage();
this.logStartupError(msg,posizioneErrore);
// inoltre registro l'errore nel logger_core di openspcoop
if(this.loggerOpenSPCoop2Core!=null){
// dalla versione 2.3, essendo utilizzato slf4j, si converte fatal in error.
//this.loggerOpenSPCoop2Core.fatal(posizioneErrore+": "+msg,e);
this.loggerOpenSPCoop2Core.error(posizioneErrore+": "+msg,e);
}
}
public void logStartupError(String message, String posizioneErrore) {
this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO, message);
this.addKeyword(CostantiPdD.KEY_POSIZIONE_ERRORE, posizioneErrore);
this.logPersonalizzato(MsgDiagnosticiProperties.MSG_DIAG_OPENSPCOOP_STARTUP,"erroreGenerico");
}
public void logDisconnectError(Throwable e, String url) {
String msg = null;
if(e instanceof NullPointerException)
msg = "NullPointerException";
else
msg = e.getMessage();
this.logDisconnectError(msg,url);
// inoltre registro l'errore nel logger_core di openspcoop
if(this.loggerOpenSPCoop2Core!=null)
this.loggerOpenSPCoop2Core.error(url+": "+msg,e);
}
public void logDisconnectError(String message, String url) {
this.addKeyword(CostantiPdD.KEY_ERRORE_PROCESSAMENTO, message);
this.addKeyword(CostantiPdD.KEY_POSIZIONE_ERRORE, url);
this.logPersonalizzato(MsgDiagnosticiProperties.MSG_DIAG_ALL,"connessioneUscita.disconnectError");
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'FATAL'.
* @deprecated in funzione del metodo logPersonalizzato
*
* @param msg Messaggio da registrare
*
*/
@Deprecated
public void fatal(String msg) {
String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
this.setEmitErrorConditionInContext(LogLevels.SEVERITA_FATAL);
int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_FATAL);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoFatal();
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_FATAL, msg, codiceDiagnostico);
}
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_FATAL,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_FATAL, msg, codiceDiagnostico);
}
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(LogLevels.LOG_LEVEL_FATAL,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_FATAL, msg, codiceDiagnostico);
}
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo, this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_FATAL,message);
}else{
this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_FATAL,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
// Log emesso su console jboss
// dalla versione 2.3, essendo utilizzato slf4j, si converte fatal in error.
//this.loggerOpenSPCoop2Fatal.log(LogLevels.LOG_LEVEL_FATAL,msg);
this.loggerOpenSPCoop2Fatal.error(msg);
}catch(Exception e){
logError("MsgDiagnostico.fatalOpenSPCoop error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'ERROR-PROTOCOL'.
* @deprecated in funzione del metodo logPersonalizzato
*
* @param msg Messaggio da registrare
*
*/
@Deprecated
public void errorProtocol(String msg) {
String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
this.setEmitErrorConditionInContext(LogLevels.SEVERITA_ERROR_PROTOCOL);
int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_ERROR_PROTOCOL);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoErrorProtocol();
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_PROTOCOL, msg, codiceDiagnostico);
}
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_ERROR_PROTOCOL,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_PROTOCOL, msg, codiceDiagnostico);
}
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(LogLevels.LOG_LEVEL_ERROR_PROTOCOL,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_PROTOCOL, msg, codiceDiagnostico);
}
//ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_ERROR_PROTOCOL,message);
}else{
this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_ERROR_PROTOCOL,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}catch(Exception e){
logError("MsgDiagnostico.errorProtocol error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'ERROR-INTEGRATION'.
* @deprecated in funzione del metodo logPersonalizzato
*
* @param msg Messaggio da registrare
*
*/
@Deprecated
public void errorIntegration(String msg) {
String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
this.setEmitErrorConditionInContext(LogLevels.SEVERITA_ERROR_INTEGRATION);
int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_ERROR_INTEGRATION);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoErrorIntegration();
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_INTEGRATION, msg, codiceDiagnostico);
}
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_ERROR_INTEGRATION,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_INTEGRATION, msg, codiceDiagnostico);
}
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(LogLevels.LOG_LEVEL_ERROR_INTEGRATION,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_ERROR_INTEGRATION, msg, codiceDiagnostico);
}
//ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_ERROR_INTEGRATION,message);
}else{
this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_ERROR_INTEGRATION,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}catch(Exception e){
logError("MsgDiagnostico.errorIntegration error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'INFO-PROTOCOL'.
* @deprecated in funzione del metodo logPersonalizzato
*
* @param msg Messaggio da registrare
*
*/
@Deprecated
public void infoProtocol(String msg) {
String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
this.setEmitErrorConditionInContext(LogLevels.SEVERITA_INFO_PROTOCOL);
int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_INFO_PROTOCOL);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoInfoProtocol();
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_PROTOCOL, msg, codiceDiagnostico);
}
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_INFO_PROTOCOL,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_PROTOCOL, msg, codiceDiagnostico);
}
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(LogLevels.LOG_LEVEL_INFO_PROTOCOL,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_PROTOCOL, msg, codiceDiagnostico);
}
//ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_INFO_PROTOCOL,message);
}else{
this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_INFO_PROTOCOL,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}catch(Exception e){
logError("MsgDiagnostico.infoProtocol error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'INFO-INTEGRATION'.
* @deprecated in funzione del metodo logPersonalizzato
*
* @param msg Messaggio da registrare
*
*/
@Deprecated
public void infoIntegration(String msg) {
String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
this.setEmitErrorConditionInContext(LogLevels.SEVERITA_INFO_INTEGRATION);
int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_INFO_INTEGRATION);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoInfoIntegration();
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_INTEGRATION, msg, codiceDiagnostico);
}
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_INFO_INTEGRATION,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_INTEGRATION, msg, codiceDiagnostico);
}
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(LogLevels.LOG_LEVEL_INFO_INTEGRATION,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_INFO_INTEGRATION, msg, codiceDiagnostico);
}
//ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_INFO_INTEGRATION,message);
}else{
this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_INFO_INTEGRATION,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}catch(Exception e){
logError("MsgDiagnostico.infoIntegration error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'DEBUG-LOW'.
* @deprecated in funzione del metodo logPersonalizzato
* @param msg Messaggio da registrare
*
*/
@Deprecated
public void lowDebug(String msg){
String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
this.setEmitErrorConditionInContext(LogLevels.SEVERITA_DEBUG_LOW);
int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_DEBUG_LOW);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoDebugLow();
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_LOW, msg, codiceDiagnostico);
}
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_DEBUG_LOW,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_LOW, msg, codiceDiagnostico);
}
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(LogLevels.LOG_LEVEL_DEBUG_LOW,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_LOW, msg, codiceDiagnostico);
}
//ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_DEBUG_LOW,message);
}else{
this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_DEBUG_LOW,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}catch(Exception e){
logError("MsgDiagnostico.lowDebug error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'DEBUG-MEDIUM'.
*
* @param msg Messaggio da registrare
*
*/
public void mediumDebug(String msg) {
String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
this.setEmitErrorConditionInContext(LogLevels.SEVERITA_DEBUG_MEDIUM);
int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_DEBUG_MEDIUM);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoDebugMedium();
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_MEDIUM, msg, codiceDiagnostico);
}
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_DEBUG_MEDIUM,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_MEDIUM, msg, codiceDiagnostico);
}
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(LogLevels.LOG_LEVEL_DEBUG_MEDIUM,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_MEDIUM, msg, codiceDiagnostico);
}
//ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_DEBUG_MEDIUM,message);
}else{
this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_DEBUG_MEDIUM,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}catch(Exception e){
logError("MsgDiagnostico.mediumDebug error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
/**
* Il Metodo si occupa di creare un messaggio di livello 'DEBUG-HIGH'.
*
* @param msg Messaggio da registrare
*
*/
public void highDebug(String msg){
String codiceDiagnostico = null; // con questi metodi viene fornito un unico codice diagnostico associato ad ogni messaggio di questo livello
this.setEmitErrorConditionInContext(LogLevels.SEVERITA_DEBUG_HIGH);
int severitaLogEmessoPerFiltro = LogLevels.toIntervalloLog4J(LogLevels.SEVERITA_DEBUG_HIGH);
int severitaRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
int severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getFiltroMsgDiagnosticoOpenSPCoop2level7();
ConfigurazionePdDManager configurazionePdDReader = getConfigurazionePdDManager();
if(configurazionePdDReader!=null && configurazionePdDReader.isInitializedConfigurazionePdDReader()){
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaMessaggiDiagnostici());
severitaLog4JRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(configurazionePdDReader.getSeveritaLog4JMessaggiDiagnostici());
}
if(this.severitaPorta!=null) {
severitaRichiestaPdD = this.msgDiagPropertiesReader.getValoreFiltroFromValoreOpenSPCoop2(LogLevels.toOpenSPCoop2(this.severitaPorta.getValue()));
}
try{
boolean emettiLogSuFile = (severitaLogEmessoPerFiltro <= severitaLog4JRichiestaPdD);
boolean emettiLog = (severitaLogEmessoPerFiltro <= severitaRichiestaPdD);
if(!emettiLogSuFile && !emettiLog) {
return;
}
codiceDiagnostico = this.msgDiagPropertiesReader.getCodiceDiagnosticoDebugHigh();
// Data
Date gdo = DateManager.getDate();
if(this.openspcoopProperties.generazioneDateCasualiLogAbilitato() && this.pddContext!=null && this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)!=null){
gdo = this.generatoreDateCasuali.getProssimaData((String)this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag = null;
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLogSuFile){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_HIGH, msg, codiceDiagnostico);
}
if(OpenSPCoop2Logger.loggerMsgDiagnosticoAbilitato){
try{
String xml = this.diagnosticoBuilder.toString(msgDiag,TipoSerializzazione.DEFAULT);
this.loggerMsgDiagnostico.log(LogLevels.LOG_LEVEL_DEBUG_HIGH,xml);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico su log4j (struttura xml): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Messaggio diagnostici
// System.out.println("1. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaRichiestaPdD+"]");
if( emettiLog){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_HIGH, msg, codiceDiagnostico);
}
if(msgDiag.getIdTransazione()!=null) {
// TransazioneContext
if(this.openspcoopProperties.isTransazioniSaveDiagnosticiInUniqueTransaction()) {
this.logMsgDiagnosticoInTransactionContext(msgDiag);
}
// Msg Diagnostico personalizzato
for(int i=0; i<this.loggerMsgDiagnosticoOpenSPCoopAppender.size();i++){
try{
this.loggerMsgDiagnosticoOpenSPCoopAppender.get(i).log(this.getConnectionFromState(),msgDiag);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico personalizzato ["+this.tipoMsgDiagnosticoOpenSPCoopAppender.get(i)+"]: "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
else {
// i diagnostici di sistema comunque non li registro sugli appender personalizzati.
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
this.loggerResource.log(LogLevels.LOG_LEVEL_DEBUG_HIGH,message);
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable' nel log delle risorse (id transazione non fornito): "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}
// Human Readable
// System.out.println("2. ["+severitaLogEmessoPerFiltro+"] <= ["+severitaOpenSPCoopRichiestaPdD+"]");
boolean humanReadableAbilitato = false;
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
humanReadableAbilitato = OpenSPCoop2Logger.loggerIntegrationManagerAbilitato;
}else{
humanReadableAbilitato = OpenSPCoop2Logger.loggerMsgDiagnosticoReadableAbilitato;
}
if( humanReadableAbilitato && (emettiLogSuFile) ){
if(msgDiag==null){
msgDiag = this.getMsgDiagnostico(gdo, LogLevels.SEVERITA_DEBUG_HIGH, msg, codiceDiagnostico);
}
//ProtocolFactory protocolFactory = ProtocolFactoryManager.getInstance((String) this.pddContext.getObject(CostantiPdD.PROTOCOLLO));
String message = OpenSPCoop2Logger.humanReadable(msgDiag,this.idCorrelazioneApplicativa,this.idCorrelazioneRisposta,
this.porta,this.delegata,
this.fruitore,this.servizio,this.servizioApplicativo,this.protocolFactory);
try{
if( IntegrationManager.ID_MODULO.equals(this.idModulo)){
this.loggerIntegrationManager.log(LogLevels.LOG_LEVEL_DEBUG_HIGH,message);
}else{
this.loggerOpenSPCoop2.log(LogLevels.LOG_LEVEL_DEBUG_HIGH,message);
}
}catch(Exception e){
logError("Errore durante l'emissione del msg diagnostico 'human readable': "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
}catch(Exception e){
logError("MsgDiagnostico.highDebug error "+e.getMessage(),e);
gestioneErroreDiagnostica(e);
}
}
private void logMsgDiagnosticoInTransactionContext(org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiag) {
if(this.transazioneApplicativoServer!=null) {
try {
// forzo
msgDiag.setIdTransazione(this.transazioneApplicativoServer.getIdTransazione());
msgDiag.setApplicativo(this.transazioneApplicativoServer.getServizioApplicativoErogatore());
GestoreConsegnaMultipla.getInstance().safeSave(msgDiag, this.idPortaApplicativa, this.getValidConnectionState(), this.requestInfo, this.pddContext);
}catch(Throwable t) {
logError("Errore durante il salvataggio delle informazioni relative al servizio applicativo: "+t.getMessage(),t);
gestioneErroreDiagnostica(t);
}
}
else {
Exception exc = null;
boolean gestioneStateful = false;
try {
Transaction tr = TransactionContext.getTransaction(msgDiag.getIdTransazione());
tr.addMsgDiagnostico(msgDiag);
}catch(TransactionDeletedException e){
gestioneStateful = true;
}catch(TransactionNotExistsException e){
gestioneStateful = true;
}catch(Exception e){
exc = e;
}
if(gestioneStateful){
try{
//System.out.println("@@@@@REPOSITORY@@@@@ LOG MSG DIAG ID TRANSAZIONE ["+idTransazione+"] ADD");
RepositoryGestioneStateful.addMsgDiagnostico(msgDiag.getIdTransazione(), msgDiag);
}catch(Exception e){
if(!IntegrationManager.ID_MODULO.equals(this.idModulo) &&
!("["+org.openspcoop2.pdd.core.handlers.transazioni.PostOutResponseHandler.class.getName()+"] invocazione terminata").equals(msgDiag.getMessaggio())
) { //
exc = e;
}
}
}
if(exc!=null) {
logError("Errore durante l'emissione del msg diagnostico nel contesto della transazione: "+exc.getMessage(),exc);
gestioneErroreDiagnostica(exc);
}
}
}
private org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico getMsgDiagnostico(Date gdo,int severitaLivelloOpenSPCoop2,String msg,String codiceDiagnostico){
org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico msgDiagnostico = new org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico();
if(this.pddContext!=null && this.pddContext.containsKey(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE)) {
msgDiagnostico.setIdTransazione((String) this.pddContext.getObject(org.openspcoop2.core.constants.Costanti.ID_TRANSAZIONE));
}
msgDiagnostico.setGdo(gdo);
msgDiagnostico.setIdSoggetto(this.idSoggettoDominio);
msgDiagnostico.setIdFunzione(this.idModulo);
msgDiagnostico.setSeverita(severitaLivelloOpenSPCoop2);
msgDiagnostico.setMessaggio(msg);
msgDiagnostico.setIdBusta(this.idMessaggioRichiesta);
msgDiagnostico.setIdBustaRisposta(this.idMessaggioRisposta);
msgDiagnostico.setCodice(codiceDiagnostico);
msgDiagnostico.setApplicativo(this.servizioApplicativo);
msgDiagnostico.setProtocollo(this.protocolFactory.getProtocol());
if(this.pddContext!=null){
List<MapKey<String>> keys = org.openspcoop2.core.constants.Costanti.CONTEXT_OBJECT;
if(keys!=null){
for (int j = 0; j < keys.size(); j++) {
MapKey<String> mapKey = keys.get(j);
Object o = this.pddContext.getObject(mapKey);
if(o!=null && o instanceof String){
msgDiagnostico.addProperty(mapKey.getValue(), (String)o);
}
}
}
}
if(this.properties!=null){
this.properties.forEach( (k,v) -> msgDiagnostico.addProperty(k, v) );
}
return msgDiagnostico;
}
private void gestioneErroreDiagnostica(Throwable e) {
if(this.openspcoopProperties.isRegistrazioneDiagnosticaFallita_BloccoServiziPdD()){
MsgDiagnostico.gestoreDiagnosticaDisponibile=false;
MsgDiagnostico.motivoMalfunzionamentoDiagnostici=e;
logError("Il Sistema di gestione della diagnostica ha rilevato un errore durante la registrazione di un messaggio diagnostico,"+
" tutti i servizi/moduli della porta di dominio sono sospesi. Si richiede un intervento sistemistico per la risoluzione del problema "+
"e il riavvio di GovWay. Errore rilevato: ",e);
}
}
private void logError(String msgErrore,Throwable e){
if(this.loggerOpenSPCoop2Core!=null){
this.loggerOpenSPCoop2Core.error(msgErrore,e);
}
else if(OpenSPCoop2Logger.loggerOpenSPCoopCore!=null){
OpenSPCoop2Logger.loggerOpenSPCoopCore.error(msgErrore,e);
}
// Registro l'errore anche in questo logger.
if(OpenSPCoop2Logger.loggerOpenSPCoopResources!=null){
OpenSPCoop2Logger.loggerOpenSPCoopResources.error(msgErrore,e);
}
}
private void logError(String msgErrore){
if(this.loggerOpenSPCoop2Core!=null){
this.loggerOpenSPCoop2Core.error(msgErrore);
}
else if(OpenSPCoop2Logger.loggerOpenSPCoopCore!=null){
OpenSPCoop2Logger.loggerOpenSPCoopCore.error(msgErrore);
}
// Registro l'errore anche in questo logger.
if(OpenSPCoop2Logger.loggerOpenSPCoopResources!=null){
OpenSPCoop2Logger.loggerOpenSPCoopResources.error(msgErrore);
}
}
}