h1

The fastest way to log4j …

mai 9, 2008

.. ou 30s pour une webapp journalisée par Log4j

Depuis la version 5.5, le logger interne de tomcat est remplacé par log4j.

Quel intérêt à utiliser un systeme de logging externe ?

Si on utilise System.out.println(); , les sorties sont redirigées dans le cas d’une webapp vers le fichier catalina.out. Si on peut se contenter de cette méthode pour tester une webapp sur son pc, il est est autrement plus compliqué si l’on veut s’y retrouver sur un Tomcat contenant plusieurs webapps! De plus, la concurrence sur la sortie standard n’est pas gérée par System.out, et il n’est donc pas rare d’avoir deux applications mélangeant allègrement leurs logs en éditant simultanément catalina.out.

Log4j est populaire car il permet tres facilement de:
Séparer les fichiers de logs ( y compris pour une seule et meme application)
Hierarchiser les logs
Définir rapidement le niveau d’alerte souhaité (une infos de debug n’a pas la meme criticité qu’une alerte d’erreurs)

Voici un moyen rapide pour l’utiliser:

1 télécharger log4j ici :

http://logging.apache.org/log4j/1.2/download.html


2 recuperer le fichier log4j-*VERSION*.jar et le placer dans les librairies
- de la web app
- ou du serveur ( non testé)
(Dans le code faire attention lors en utilisant import à ne pas utiliser les librairies de java.util)

La programmation se fait en 3 lignes:

Code:

// initialisation du logger

Logger log = Logger.getLogger(”toto”); //toto est l’identifiant du logger

// définition de la criticité

log.setLevel(Level.INFO);

// ce qui remplace un appel a System.out.print();

log.info(”temps de requete pour rechercher les mesages:”+mytime );

Explication du niveau de log:
Une fois le niveau de log fixé, seul les traces d’un niveau de priorité supérieures au niveau fixé seront tracées.
Par exemple avec un setLevel= level.INFO, les log.debug(”message”) seront inactifs. (car level.DEBUG<level.INFO)

Ou placer ce code ?
L’initialisation du logger peut se faire dans une classe dédié, en la plaçant de manière statique dans le constructeur:Les appels se feront en tapant LogUtil.log.xxx();

public class LogUtil {
public static Logger log = Logger.getLogger(”main”);
}

Utiliser un fichier de properties:
Au lieu de définir les paramètres par programmation, il est recommandé d’utiliser un fichier de configuration. Voici a quoi ressemble mon Log4j.properties:

#définition du niveau et des Appender du rootLogger
log4j.rootLogger=DEBUG, monAppender

#configuration de “monAppender”
#nous allons envoyer les messages dans la console de Tomcat
#log4j.appender.monAppender=org.apache.log4j.ConsoleAppender

log4j.appender.monAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.monAppender.File=/home/mulder/logdev.log
log4j.appender.monAppender.DatePattern=’.'yyyy-MM-dd

#définition du Layout pour “monAppender”
log4j.appender.monAppender.layout=org.apache.log4j.PatternLayout

#définition du pattern d’affichage pour “monAppender”
#voici un exemple de sortie que l’on va obtenir : 2005-06-18 14:53:37 DEBUG [Main] Hello World
log4j.appender.monAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%c{1}] %m%n

Le fichier est automatiquement chargé s’il est placé dans le dossier WEB-ING/classes/ de la WEBAPP, ou COMMON/classes/ du serveur tomcat.

h1

messagerie instantanée et privacité…

novembre 30, 2007

J’ai été confronté il y a peu au problème suivant:

Connecté en wifi sur un réseau avec plusieurs dizaines d’utilisateurs inconnus, je devais échanger les mots de passe du serveur sur lequel je travaille…

Sans être paranoïaque, l’idée me dérangeait un peu: on n’envoie pas les clés de son appartement par un courrier simple !

Et la, le trio gagnant c’est Jabber + Kopete + GnuPG !

Jabber est le protocole libre de messagerie instantanée. Gnupg permet d’effecteur le cryptage asymétrique. Kopete est le client d’instant messaging proposé par KDE (a quand les applications livrées en kit MVC…)
Dans les faits, c(est aussi simple que ca:

- dans kopete, on déclare qu’on veut utiliser le module crypto.

Configuration -> Configurer les modules -> Cryptographie
Sélectionner sa clé
Chiffrer les messages en sortie

- kopete va chercher dans le home les clés dont on dispose (je ne detaillerai pas ici comment créer ca paire de clé, on peut utiliser Kgpg en interface graphique ou utiliser le client en ligne de commande gpg –gen-key )

- lorsqu’on recoit un message qu’un utilisateur a codé avec notre clé publique, kopete nous demande le mot de passse qui permet de décrypter le message grace a notre clé privée …

Simple; rapide, efficace et sûr pour échanger avec vos proches mots de passe ou numéros de carte bleue !

h1

Ouverture de Have a Cafe …

novembre 25, 2007

Beeerk un blog de plus. Pourquoi beeerk ? J’ai connu le blog d’abord par les skyblogs, et ensuite par le tapage médiatique et l’ensemble des néologismes créés par les mass médias ( blogosphère, blogueur…). Quelques mois plus tôt, je n’aurais jamais pensé être moi même un de ces blogueurs! Et pourtant me voila ;-) Je passe donc de “un blog…pfff, c’est un artifice de mode” à “wordpress, c’est bon, mangez en!”…

Bref vous ne trouverez pas mes photos de vacances ici, ni les photos de mes stars préférées… en revanche j’essaierai de rédiger un ensemble de billets sur les dernières technos sympas concernant le monde de la programmation web (et l’inévitable 2.0), avec java, javascript et plein d’autres mots très tendances ;-)… et a coté de ca, parce que le role d’un blog est peut être aussi d’aérer le cerveau, ca parlera de café et de joujoux et curiosités technos comme l’Iphone ou les derniers coups de théatre du géant de l’internet qui sort un nouvel OS pour téléphone mobile…

Pour conclure, comme on dit chez skyrock ” lachez vos comm’” ;-)

h1

Javascript et netbeans

novembre 25, 2007

Quand tout le monde utilise eclipse que personne n’ose nommer sur netbeans.org… On ne regarde pas du coté de netbeans, l’IDE propulsé initialement par sun puor le langage Java…

C’est avec cet IDE que j’ai appris le langage java, à l’époque ou Jbuilder était encore de la partie et ou le monde du libre n’avais pas fait table rase de tous ces vendeurs de colorateur syntaxique (je ne sais pas qui pourra nous croire dans 5 ans, si on explique qu’il fallait débourser 1500e pour avoir un IF qui s’écrit en bleu gras dans notre page de code…).

Ainsi pour tous ceux qui trouvent eclipse trop lourd, trop lent, trop complexe… Il y a netbeans, sain, concis, et efficace.

Mais par defaut seul l’édition de java / html / css integre les fonctionnalités avancées d’écriture de code (en particulier la colo syntaxique ou la completion)… Donc exit le javascript…

Première solution: utiliser un autre éditeur: J’ai essayé Aptana, basé sur la plate forme eclipse. ultra puissant, mais un peu lourd et surtout instable a l’heure actuelle. J’ai ensuite essayé d’utiliser Kwrite, qui se retrouve vite inutilisable au dela de 7fichiers javascript, donc limité aux petits morceaux de JS et sans framework…

Puis j ‘ai découvert Teniga… ou LE plug in Javascript pour Netbeans qui va bien… il se cache a la dernière page des plugins lorsqu’on donne javascript au moteur de recherche de plugins.

http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=2710

Et hop, enjoy la vérification de la syntaxe, la colo et tout le toutim :-) il suffit de telecharger le .nbm et de passer par l’update center de netbeans… Chez moi c’est stable et efficace.

h1

Hello world!

novembre 25, 2007

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!