Customisation des business logs

Bonjour,

par défaut sur la plateforme Simplicite, il existe déjà des logs event et des logs activable et paramétrable à notre convenance.

est ce qu’il est possible de créer nos propres logs events et si oui comment les appeler via AppLog

Cordialement,
Olivier Migliorini

Bonjour Olivier, bienvenue sur community!

Oui, il est possible de créer ses propres log events via le menu opérations (étendu) :

L’utilisation se fait via AppLog, cf la javadoc, en particulier les méthodes log(...)


Je ne sais pas quel est le besoin derrière la question; en général on a tendance à utiliser les évènements génériques debug / info / warning / error / fatal, et des code d’erreur spécifiques (!= code d’évènement). Les codes d’erreurs sont loggés, et peuvent être traduits pour être retournés par les méthodes .

Cliquer ici pour voir un exemple
@Override
public List<String> postValidate() {
	List<String> msgs = new ArrayList<>();
	
	//NB: use formatError with null as a second param to get a translated error message from the Static Text list
	
	// ==== without exceptions
	msgs.add(Message.formatError("ERROR_MYAPP_CUSTOMCODE", null, "myField"));
	
	// ==== with custom exceptions
	try{
		throw new MyAppException("ERROR_MYAPP_CUSTOMCODE");
	}
	catch(MyAppException e){
		AppLog.error(e.getMessage(), e, getGrant());
		msgs.add(Message.formatError(e.getMessage(), null, "myField"));
	}
	
	return msgs;
}

public class MyAppException extends Exception{
	String code;
	public MyAppException(String code){
		this.code=code;
		super();
	}
	public String getMessage(){
		return code;
	}
}

Bonjour,

merci pour ces premiers retours.

j’ai bien crée un event log et j’essayé de le déclencher via AppLog.log
j’ai essayer plusieurs signatures mais aucune n’a abouti à faire afficher l’event log ni dans les logs, ni le stocker en base malgré le paramétrage.

Auriez vous un exemple de création d’event log spécifique et de son déclenchement via Applog.
Si ce custom est possible

Cordialement,
Olivier Migliorini

Le XML du module

Click to open
<?xml version="1.0" encoding="UTF-8"?>
<simplicite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.simplicite.fr/base" xsi:schemaLocation="http://www.simplicite.fr/base https://www.simplicite.io/resources/schemas/base.xsd">
<object>
	<name>Module</name>
	<action>upsert</action>
	<data>
		<mdl_name>TstLog</mdl_name>
		<mdl_version>0.1</mdl_version>
		<mdl_prefix>log</mdl_prefix>
		<mdl_url/>
		<mdl_type>S</mdl_type>
		<mdl_comment/>
	</data>
</object>
<object>
	<name>LogEvent</name>
	<action>upsert</action>
	<data>
		<lev_code>TST_LOG_EVENT</lev_code>
		<lev_type>M</lev_type>
		<lev_level>I</lev_level>
		<lev_canal>L</lev_canal>
		<lev_label>Example Log Event</lev_label>
		<lev_enabled>1</lev_enabled>
		<lev_depth/>
		<row_module_id.mdl_name>TstLog</row_module_id.mdl_name>
	</data>
</object>
<object>
	<name>ListOfValue</name>
	<action>upsert</action>
	<data>
		<lov_name>TEXT</lov_name>
		<lov_code>TST_LOG_EVENT</lov_code>
		<lov_lang>ENU</lov_lang>
		<lov_value><![CDATA[Log parameter : [1]]]></lov_value>
		<lov_order_by>1</lov_order_by>
		<lov_event_id.lev_code>TST_LOG_EVENT</lov_event_id.lev_code>
		<row_module_id.mdl_name>TstLog</row_module_id.mdl_name>
	</data>
</object>
<object>
	<name>Script</name>
	<action>upsert</action>
	<data>
		<scr_code>LogTests</scr_code>
		<scr_file><![CDATA[DATA:LogTests.java:package com.simplicite.tests.TstLog;
import com.simplicite.util.*;
import org.junit.Test;

public class LogTests {
	@Test
	public void test() {
		AppLog.log("TST_LOG_EVENT", this.getClass(), "test", "{this text was passed as a parameter to the log function}");
	}
}
]]></scr_file>
		<scr_type>TST</scr_type>
		<row_module_id.mdl_name>TstLog</row_module_id.mdl_name>
	</data>
</object>
</simplicite>

Le AppLog

AppLog.log("TST_LOG_EVENT", this.getClass(), "methodName", "{this text was passed as a parameter to the log function}");

Le résultat

2 Likes

Bonjour @OlivierM ,

Cela répond-il à votre question? Avez-vous réussi à logger votre event?

Cordialement,

malheureusement non. j’ai déjà mis en pratique tout ce que vous avez mentionné dans vos pots avant même de poster mon message sur le forum.

Mais il m’a été impossible de faire apparaitre le Log event spécifique ni dans les logs, ni en base.

Je suis arrivé à simuler le Applog.info en utilisant Applog.log afin de partir d’un appel sain, mais pour mon log event spécifique impossible de la faire afficher où que ce soit

Alors il nous faut comprendre pourquoi mon exemple (testé par moi-même et par un collègue) fonctionne sur nos instances et pas sur la vôtre. Avez-vous testé mon exemple (import XML, clear cache, lancement du test unitaire), ou l’avez-vous lu et jugé que c’est ce que vous aviez fait?

Sur quelle version de Simplicité travaillez-vous? Pouvez-vous me fournir le contenu de votre page /health ?

Merci de me contacter par MP si vous souhaitez un accompagnement personnalisé.

@OlivierM question complémentaire, avez-vous bien un Texte associé au Log Event, comme c’est le cas dans mon exemple?

Bonjour,
Nous faisons le check et nous revenons rapidement vers vous.

cdt

Bonjour @thierry.balla

Suite à votre relance par, pourriez-vous nous donner un retour sur cette dernière question?

Merci

Bonjour @scampano,

J’ai repris la suite du post.

J’arrive bien à faire sortir l’event dans les logs, et celui-ci est bien créé dans la base :

J’ai cependant une petite question concernant les settings, quel est l’impact du setting “Targets” suivant :

Merci d’avance,

Benoît

  • Logger => envoie le log à Log4j pour inscription dans le simplicite.log
  • Database => envoie le log dans la table m_log de l’objet Logs (Operation > Logs)
1 Like

@Benoit avez-vous testé et réussi à implémenter ce dont vous aviez besoin? :slight_smile:

Bonjour @scampano,

Oui j’ai suivi le tutoriel et je retrouve bien le log :slight_smile: .

Merci pour ton aide !

1 Like

[Predefined Message]

In order for our support team to bring you a better service, and for the rest of the community to find the significant answers more easily, we kindly ask our user to mark as “solved” once a solution has been found.

Your messages indicating that the issue was fixed, we’ve realized this action on your behalf.