Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/09/2011, 00h37   #1
Nouveau Membre du Club
 
Inscription : mai 2011
Messages : 104
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 104
Points : 25
Points : 25
Par défaut Logging avec Flash/Flex

bonjour,

je teste actuellement les outils me permettant de debugger et de faire des logs facilement. Je teste donc pour le moment l'API du package mx.logging mais je trouve les fonctionnalités finalement assez peu évoluées par rapport à ce que sa cousine de Java permet notamment de faire.

Peut on me confirmer qu'on ne peut pas définir de level de log directement sur le logger ? En Java, c'est pratique de mettre un level OFF afin de ne plus loguer du tout. Cela nous permet notamment de ne pas avoir à définir un level de log à OFF à tous les handlers sous Flash/Flex nommés targets.

Ainsi, ma question est simple : comment arrêter le logging rapidement de tous les targets sous Flash/Flex ? Si ce n'est pas possible, que me conseillez vous comme framework de logging (ie: lequel utilisez vous^^) ?

Merci de vos éclaircissements
jecomprendsrien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 10h05   #2
Membre habitué
 
Homme Nicolas
Développeur informatique
Inscription : juillet 2007
Messages : 229
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : Luxembourg

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2007
Messages : 229
Points : 137
Points : 137
Tu peux peut-être regarder du côté de "flex.messaging.log.ConsoleTarget".

Nous on utilise flex avec BlazeDS et je ne sais plus si c'est uniquement avec Blaze que l'on peut utiiser cette classe. En tout cas tu peux gérer un niveau de log côté client...

A+
npirard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 23h08   #3
Nouveau Membre du Club
 
Inscription : mai 2011
Messages : 104
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 104
Points : 25
Points : 25
Hello

Citation:
Envoyé par npirard Voir le message
Tu peux peut-être regarder du côté de "flex.messaging.log.ConsoleTarget".
en fait, je ne cherche pas à rendre muet les targets mais plutôt le logger afin de ne justement pas devoir modifier tous les targets. Dans l'absolu, je peux avoir 1000 targets et un logger donc...
jecomprendsrien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 14h32   #4
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 194
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 194
Points : 3 377
Points : 3 377
Salut,

il est tout a fait possible de gérer des niveaux (info, warn, error, ...).

voici une classe rapidos que j'utilise sur mes projets :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.utils
{
	import flash.utils.getQualifiedClassName;
 
	import mx.logging.ILogger;
	import mx.logging.Log;
 
	public class LogUtil
	{
		/** 
		 * getLogger method: 
		 * 
		 * @param Class , type of class 
		 * @return ILogger the logger that correspond to the class
		 */
		public static function getLogger(c:Class):ILogger 
		{
			var className:String = getQualifiedClassName(c).replace("::", ".");
			return Log.getLogger(className);
		}
	}
}
Ensuite, tu initialise ton logger :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
var logTarget:TraceTarget = new TraceTarget();
logTarget.filters=["*"];
 
// Log all log levels.
logTarget.level = LogEventLevel.ALL;
 
// Add date, time, category, and log level to the output.
logTarget.includeDate = true;
logTarget.includeTime = true;
logTarget.includeCategory = true;
logTarget.includeLevel = true;
 
// Begin logging.
Log.addTarget(logTarget);
Enfin, n'importe ou dans ton code tu utilises ta classe LogUtil:

Code :
1
2
3
4
5
 
LogUtil.getLogger(MaClasse).info("une info à afficher");
LogUtil.getLogger(MaClasse).error("une erreur à afficher");
LogUtil.getLogger(MaClasse).warn("un warn à afficher");
LogUtil.getLogger(MaClasse).fatal("fatal erreur à afficher");
__________________

Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
Pensez au tag

Mon Blog sur la techno Flex
Ma page sur Developpez.com

Jim_Nastiq
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 15h43   #5
Nouveau Membre du Club
 
Inscription : mai 2011
Messages : 104
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 104
Points : 25
Points : 25
Salut,

en fait je crois pas que j'ai été compris. Je voudrais transcrire ce code JAVA par exemple en AS3 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
 
 
public class Main {
 
	protected static Logger logger;
	protected Handler handler1;
	protected Handler handler2;
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new Main();
	}
 
	public Main(){
		logger = Logger.getLogger("main");
		logger.setLevel(Level.ALL);
 
		try {
			handler1 = new FileHandler("C:/myLog.log");
			handler2 = new FileHandler("C:/myLog2.log");
			handler1.setLevel(Level.INFO);
			handler2.setLevel(Level.ALL);	
			logger.addHandler(handler1);
			logger.addHandler(handler2);
		} catch (Exception e) {			
			e.printStackTrace();
		} 
 
		logger.info("un message de log");
 
		logger.setLevel(Level.OFF);
 
		logger.info("un autre message de log");		
	}
 
}
en fait j'ai donc un Logger nommé logger et 2 Handler nommé handler1 et handler2 correspondant donc en AS3 aux targets. Je cherche donc à pouvoir désactiver l'écriture dans les fichiers en jouant sur le level (OFF) du logger directement ET NON PAS en jouant sur les levels des targets. Apparemment la classe Log ne permet pas de changer le level pour la bonne et simple raison qu'il n'y a pas de level sur cette classe

C'est...étonnant...

Va donc falloir étendre cette classe à minima pour lui implémenter la possibilité de journaliser ou non, en somme implémenter un level ON/OFF (les levels intermédiaires étant gérés par les targets).
jecomprendsrien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h38.


 
 
 
 
Partenaires

Hébergement Web