Avatar billede thomas_yde Nybegynder
02. oktober 2002 - 10:59 Der er 5 kommentarer og
2 løsninger

Log Fil oprettelse på Linux maskine

Jeg oprettede for noget tid siden et spørgsmål om oprettelsen af en log fil, og fik det til at virke på en windows maskine.
Mit problem er nu at web-serveren hvor filen skal ligge er en Linux server, og jeg kan ikke få den til at oprette filen.

Jeg har applikation på stien /home/tydexx/public_html/.
Min class fil ligger så i /home/tydexx/public_html/WEB-INF/classes/util/
mit problem er så at den log fil som den opretter skal placeres i /home/tydexx/Logs/ og kataloget eksistere, men den opretter ikke en fil.

Webserveren er resin og køre som root på Linux maskinen så der burde ikke være nogen rettighedsproblemer.


Koden jeg bruger er som følgende:
Det skal lige siges at jeg har prøvet at ændre logDir til ..\\Logs\\ på en windows maskine og så kan den fint oprette filen, det er altså kun på linux serveren der er et problem.
/*
*@auther Thomas W. Yde
*/
package util;
import java.util.*;
import java.io.*;
public class Log
{
   
    public Log(){}
   
    public void makeLog(Exception newException)
    {
        try
        {
            String logDir = "/home/tydexx/Logs/";
            java.util.Date d = new java.util.Date();
            System.out.println(d.toGMTString()+"\n");
            java.util.GregorianCalendar calendar = new java.util.GregorianCalendar();
           
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            int month = calendar.get(Calendar.MONTH) + 1;
            String year = "" + calendar.get(Calendar.YEAR);
            String dateStamp = " "+day+"-" + month +"-"+ year +" ";
           
            int hour = calendar.get(Calendar.HOUR) + 1;
            int minutes = calendar.get(Calendar.MINUTE);
            int seconds = calendar.get(Calendar.SECOND);
            String timeStamp = ""+hour+":"+minutes+":"+seconds;
           
            File fil = new File(logDir + "log -"+dateStamp+".txt");

            PrintWriter writer;
            FileWriter fileWriter = new FileWriter(fil, true);
            writer = new PrintWriter(fileWriter, true);
            writer.println();
            writer.println("<Exception fanget kl. "+timeStamp+">");
            writer.println(newException.getMessage());
            writer.println("</Exception>");
        }
        catch(Exception e)
        {
            System.err.print(e.getMessage());
        }
    }
}
Avatar billede dsj Nybegynder
02. oktober 2002 - 11:40 #1
Hvis det virker på under windows virker det også under Linux, altså selve koden. Den log-klasse jeg viste dig fra det andet spørgsmål bruger jeg selv både under windows og linux uden problemer.

Det du nok skal kigge på er, om du som den bruger på linux-maskinen er logget ind som, har skrive-rettigheder til det bibliotek din logfil skal ligge i. Hvis det ikke er tilfældet, skal du som root køre følgende kommando på dit bibliotek:

chmod -722 /.../ditLib
Avatar billede dsj Nybegynder
02. oktober 2002 - 11:43 #2
ja nu overså jeg det du nævner om at der ikke burde være nogen rettigheds-problemer. Tjek det lige igen ved at køre kommandoen:

ls -la

i /home/tydexx/ så kan du se, om du som root har skrive-rettigheder til /home/tydexx/log/

Det er nemlig ikke givet, at root har skrive-rettigheder til brugernes rod-biblioteker i /home/ men root kan ændre dem.
Avatar billede thomas_yde Nybegynder
02. oktober 2002 - 11:43 #3
Skrive rettigheder har jeg da resin som jeg køre på er logget ind som root på linux serveren.
Avatar billede dsj Nybegynder
02. oktober 2002 - 11:45 #4
Det er desuden sjældent en god ide at køre applikationer som root, muligheden for at noget vitalt i styresystemet bliver smadret er tilstede, kør ALTID applikationer (og server-applikationer) som almindelig bruger, hvis du har mulighed for det.
Avatar billede dsj Nybegynder
02. oktober 2002 - 11:45 #5
Tjek det lige engang, som sagt har root ike nødvendigvis skrive-rettigheder til en brugers home!!
Avatar billede thomas_yde Nybegynder
02. oktober 2002 - 13:11 #6
skrive rettighederne er iorden
Avatar billede thomas_yde Nybegynder
02. oktober 2002 - 13:35 #7
Den virker nu, ved ikke hvad der var galt men ikke rettigheder ;(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester