Consignation et fonction de trace

Toutes les ressources HCL Commerce peuvent utiliser la classe d'utilitaires LoggingHelper fournie dans le package com.ibm.commerce.foundation.common.util.logging pour le traçage et la journalisation. Cet utilitaire permet de résoudre l'enregistreur Java ( java.util.logging.Logger) associé au package de la classe d'appel. Une fois l'enregistreur résolu, la bibliothèque utilisée pour enregistrer les messages est java.util.logging.Logger.

L'exemple de code ci-dessous montre comment utiliser l'objet enregistreur pour le traçage. Pour plus d'informations, voir la rubrique Add logging and tracing to your application.

Remarque : L'ajout du traçage au code entraîne généralement la création de nouveaux objets. Vous devez vérifier si la journalisation est activée pour votre classe en appelant la méthode LoggingHelper.isTraceEnabled(logger) avant d'appeler les méthodes de journalisation.

Logger logger = LoggingHelper.getLogger(ExceptionData.class);
    if (LoggingHelper.isTraceEnabled(logger)) {
    StringBuffer sb = new StringBuffer(80);
    sb.append("Could not resolve message key '");
    sb.append(_strMessagekey);
    sb.append("' from the properties file ");
    sb.append(logger.getResourceBundleName());
    logger.logp(LoggingHelper.DEFAULT_TRACE_LOG_LEVEL,  CLASSNAME,
METHODNAME, sb.toString());
}

Les méthodes qui ne sont pas générées automatiquement doivent avoir des points d'entrée et de sortie de traçage. Toutes les instructions d'entrée de traçage doivent être appariées avec les instructions de sortie. Les instructions d'entrée de traçage incluent généralement des paramètres d'entrée s'il y en a, tandis que les instructions de sortie incluent les valeurs de retour. Les instructions de suivi d'entrée et de sortie doivent être mises à l'intérieur du bloc if-then pour vérifier si votre traçage de composants est activé. Vous trouverez ci-dessous un exemple de code pour tracer les points d'entrée et de sortie de la méthode :


public class GetOrderExpressionBuilder {

private static final
    String CLASSNAME =  GetOrderExpressionBuilder.class.getName();
private static final
    Logger LOGGER =
LoggingHelper.getLogger(GetOrderExpressionBuilder.class);
/**
 * Forms an expression to query orders by status.
 */
public ExpressionType findByOrderStatus(Map amNVPs) {
    final String METHODNAME = "findByOrderStatus";

     if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
        LOGGER.entering(CLASSNAME, METHODNAME, amNVPs);
    }

    ExpressionType findByOrderStatusExpression = null;
    // business logic...
    if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
        LOGGER.exiting(CLASSNAME, METHODNAME,
findByOrderStatusExpression);
   }
    return findByOrderStatusExpression;
  }
}

Masquer les données sensibles en traces

Il existe de nombreux cas où le masquage des données sensibles est nécessaire. HCL Commerce fournit un utilitaire MaskingFactory pour masquer les données sensibles.

MaskingFactory lit une liste de stratégies et de paramètres de masquage à partir du fichier suivant : workspace_dir/WC/xml/config/wc-attribute-masking.xml Il est appelé sous la forme suivante, par exemple :

String maskedValue = com.ibm.commerce.foundation.internal.common.util.masking.MaskingFactory.getInstance().mask("password", "abc123");
Lorsqu'il est appelé, il détermine si et comment les attributs sont masqués.

Dans l'exemple ci-dessus, MaskingFactory voit password comme paramètre répertorié dans le fichier de configuration. Par conséquent, il renvoie une valeur de *********** au lieu de la valeur abc123.

Le fichier wc-attribute-masking.xml contient les éléments suivants :
MaskingPolicy
Définit une stratégie de masquage à utiliser par MaskingFactory.
MaskingPolicy.classname
Définit le nom de la classe d'implémentation de la stratégie de masquage.
MaskingPolicyAttributes
Définit une liste d'attributs utilisés pour initialiser la stratégie de masquage. Cette liste est définie dans les éléments d'attribut ci-joints en tant que paires nom-valeur.
Attribute.name
Nom d'un attribut.
Attribute.value
Valeur d'un attribut.
MaskingAttributes
Définit une liste de paramètres à masquer par cette stratégie de masquage.
MaskingAttribute.name
Nom du paramètre dont la valeur correspondante doit être masquée.
MaskingAttribute.compareType
Indique si le nom exact du paramètre ou le début du nom du paramètre entraîne une correspondance. Les valeurs admises sont equals et starts. La valeur par défaut est equals.
MaskingAttribute.caseInsensitive
Indique si la correspondance de nom de paramètre est sensible ou non à la casse. Les valeurs admises sont true et false. La valeur par défaut est false lorsqu'une correspondance est trouvée si le cas correspond exactement à la configuration.
Plusieurs stratégies de masquage peuvent être définies dans le fichier wc-attribute-masking.xml. Par exemple :

<!--
		mask value is always 8 *s
	-->
	<wc:MaskingPolicy description="Replace value with 8 *s"
		classname="com.ibm.commerce.masking.impl.ReplaceCharactersMaskingPolicyImpl">
		<wc:MaskingPolicyAttributes>
			<wc:Attribute name="contentLength" value="8" />
			<wc:Attribute name="replaceCharacter" value="*" />
		</wc:MaskingPolicyAttributes>
		<wc:MaskedAttributes>
			<wc:MaskedAttribute name="logonPassword" compareType="starts" />
			<wc:MaskedAttribute name="password" caseInsensitive="true" />
			....
		</wc:MaskedAttributes>
	</wc:MaskingPolicy>

	<!--
		mask value is the first digit, last four digits and the rest
		of the middle of the string is replaced by *s.
	-->
	<wc:MaskingPolicy
		description="Shows the 1st character and the last 4 characters.
				All other characters will be replaced with *s."
		classname="com.ibm.commerce.masking.impl.ShowEndCharactersMaskingPolicyImpl">
		<wc:MaskingPolicyAttributes>
			<wc:Attribute name="showFirst" value="1" />
			<wc:Attribute name="showLast" value="4" />
			<wc:Attribute name="replaceCharacter" value="*" />
		</wc:MaskingPolicyAttributes>
		<wc:MaskedAttributes>
			<wc:MaskedAttribute name="cardNumber" compareType="starts" />
			<wc:MaskedAttribute name="pay_cardNumber"	compareType="starts" />
			....
		</wc:MaskedAttributes>
	</wc:MaskingPolicy>
Il y a deux stratégies dans l'exemple ci-dessus. La première stratégie remplace les valeurs par 8 caractères *. La deuxième stratégie affiche les 4 premiers et derniers chiffres de la valeur, tandis que le reste de la valeur est remplacé par les caractères *.