Bonjour, voici ce qu'il m'arrive :
Je vous expose tout d'abord le contexte :
J'ai déployé un projet GWT sur un serveur.
J'ai installé et configuré un serveur TOMCAT dans /usr.
Ce qui me donne cette arborescence pour le war de mon projet :
/usr/tomcat/webapps/gestionCimetiere
Mon application GWT doit accéder au disque sur le serveur, notamment pour les ficheirs de logs.
les fichiers de logs sont censés s'écrire dans :
/usr/tomcat/webapps/gestionCimetiere/Logs/logs.txt
J'ai aussi cree des liens symboliques dans /usr/bin pour lancer sans trop me prendre la tête avec le chemins les startup.sh et shutdown.sh de TOMCAT,
Ces deux commandes se nomment respectivement tomStart et tomStop.
Le truc byzarre qui se produit :
lorsque je lance mon serveur depuis /usr/tomcat/webapps/ (à l'aide de la commande tomStart) les fichiers de logs s'écrivent dans /usr/tomcat/webapps/
lorsque je lance mon serveur depuis /usr/tomcat/webapps/gestionCimetiere (à l'aide de la commande tomStart) les fichiers de logs s'écrivent dans /usr/tomcat/webapps/gestionCimetiere
Et ça me donne le même comportement où que je me place dans l'arborescence de gestion cimetière ( j'ai pas essayé en dehors de webapps)
Celà viendrait il du fait que par exemple pour ouvrir mon fichier de log j'utilise un chemin relatif ?
Code de la classe d'accès aux logs :
package gestionCimetiere.server;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Logs {}
private int tailleMaxOctet = 1024*1000;private int nbMaxArchives = 5;
private String nom;
private String ville;
File file;
public Logs(String nom, String ville){
this.ville=ville;}
this.nom=nom;
file = new File("logs/log.txt");
loguerAction("connexion");
public void loguerAction(String message){
String messageALoguer = new String();}
Date myDate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy - hh-mm-ss");
String s = sdf.format(myDate);
messageALoguer = ville+"_"+nom+" "+s+" "+message;
try {
archivage();
FileOutputStream stream = new FileOutputStream(file, true);
stream.write(messageALoguer.getBytes());
stream.write(0x0d);
stream.close();
} catch (IOException e) {
e.printStackTrace();}
public void archivage(){
File destinationArchive= new File("logs/archives/");}
if(!destinationArchive.exists())
destinationArchive.mkdirs();
/*
*On va lister tous les fichiers de l'archive,
*Si on à atteint le nombre maximum de fichiers,
*on va faire un glissement pour les remplacer
*1 va devenir 2
*2 va devenir 3
*3 va devenir 4
*...
*x va devenir x+1
*/
if(file.length()>tailleMaxOctet){
File[] listeFichiersArchive = destinationArchive.listFiles();}
int nbFichiers = listeFichiersArchive.length;
for(int i=nbFichiers+1; i>1; i--){
File fichierSource = new File("logs/archives/"+(i-1)+"_"+file.getName());}
File fichierDestinnation = new File("logs/archives/"+i+"_"+file.getName());
if(!fichierDestinnation.exists())
try {fichierSource.renameTo(fichierDestinnation);
fichierDestinnation.createNewFile();} catch (IOException e) {
e.printStackTrace();}
if(nbFichiers>=nbMaxArchives)
{}
for(int i=nbMaxArchives; i<=nbFichiers; i++){
File fichierSource = new File("logs/archives/"+(i+1)+"_"+file.getName());}
fichierSource.delete();
destinationArchive=new File("logs/archives/1_"+file.getName());
file.renameTo(destinationArchive);
file.delete();
try {
file.createNewFile();} catch (IOException e) {
e.printStackTrace();}
public String getNom(){
return nom;}
public String getville(){
return ville;}
Et que TOMCAT place sa racine a partir de l'endroit où on le lance ? Ça me paraitrait un peu stupide car si j'ai 5 applications sur le même serveur tomcat, elles vont pas toutes écrire au même endroit...
Pour l'instant je suis encore sur un serveur de test donc c'est pas bien grave, mais il faudrait que j'arrive à le faire fonctionner sans vagues pour le déploiement final.
Si vous avez besoin d'autres précision, le code source.. dites le moi
Merci d'avance pour le coup de main.
Partager