Ecrire un journal simple de JSP / Servlet vers UNIX / Shellscript

Je crée un fichier journal simple, qui contiendra la date / heure et l’utilisateur responsable d’une action déterminée. ce que je fais est la même chose que je fais habituellement quand je veux exécuter un Shelscript (c.-à-shellscript.sh) à partir d’une servlet Java:

ProcessBuilder pl = new ProcessBuilder("/usr/bin/bash", "-c", "echo ($date) \" - Action_Name - " + User + "\" >> " + "myDirectory/logs/myLog.log"); pl.start(); 

J’utilise ces 2 commandes seules, mais après leur exécution, je ne pouvais rien voir dans myDirectory/logs/myLog.log .

Pourquoi ce code ne fonctionne pas?

Cela se produit parce que vous avez spécifié accidentellement ($date) lorsque vous vouliez dire $(date) , donc bash s’est plaint d’une erreur de syntaxe et n’a pas exécuté la commande. Tu veux ça:

 ProcessBuilder pl = new ProcessBuilder("/usr/bin/bash", "-c", "echo $(date) \" - Action_Name - " + User + "\" >> " + "myDirectory/logs/myLog.log"); pl.start(); 

Si vous avez vérifié le code retour du processus ou imprimé sa sortie d’erreur, vous avez pu voir l’échec. Si vous souhaitez déterminer par programme si la commande échoue, vérifiez le code retour.

Mais comme Qwerky l’a mentionné dans les commentaires, l’esprit s’embrouille.