Avatar billede trp79 Nybegynder
23. august 2003 - 10:39 Der er 6 kommentarer og
1 løsning

Log fil

Hejsa,
er det ikke muligt at tilgå en fil, således at man åbner filen og skriver i slutningen af den uden først at skulle indlæse det der i forvejen står i den, via noget input for derefter at skrive det som output?
Jeg har følgende klasse som jeg godt kunne tænke mig at modificere så det er muligt:

import java.io.*;
import java.util.*;
import java.text.*;

public class LogWriter
{
private String filename = "log.txt";
private BufferedWriter output;
private Date date;
private DateFormat df = new SimpleDateFormat("dd-MMM-yyyy HH:mm");

  public LogWriter()
  {
  if((new File("log.txt")).exists())//findes filen i forvejen?
//åben filen så man kan skrive i slutningen af den... Det er her mit problem er....
    {}
    else//opret fil.
    {
      try {
          output = new BufferedWriter( new FileWriter( filename ) );
      }
      catch ( FileNotFoundException e ) {
        System.out.println( "Filen kunne ikke oprettes: " + filename );
      }
      catch ( IOException e ) {
        System.out.println(
          "Der opstod fejl under oprettelse af filen: " + filename );
      }
    }
  }

  public void writeLn(String ln)
  {
    date = new Date();
    try
    {
      output.write(df.format(date) +": "+ ln);
      output.newLine();
 
    }
    catch ( FileNotFoundException e ) {
      System.out.println( "Filen kunne ikke findes: " + filename );
    }
    catch ( IOException e ) {
      System.out.println(
        "Der opstod fejl under skrivning til filen: " + filename );
    }
  }

  public void closeFile()
  {
    try
    {
      output.close();
    }
    catch ( IOException e ) {
      System.out.println(
        "Der opstod fejl under lukning af filen: " + filename );
    } 
  } 
}
Avatar billede arne_v Ekspert
23. august 2003 - 10:53 #1
output = new BufferedWriter( new FileWriter( filename, true ) );
Avatar billede trp79 Nybegynder
23. august 2003 - 11:30 #2
Kanont Arne! Tak for hjælpen, mvh
Torben
Avatar billede trp79 Nybegynder
23. august 2003 - 11:31 #3
Sådan her endte klassen med at se ud, hvis andre nu skulle have lyst til at bruge den...

import java.io.*;
import java.util.*;
import java.text.*;

public class LogWriter
{
private String filename = "log.txt";
private BufferedWriter output;
private Date date;
private DateFormat df = new SimpleDateFormat("dd-MMM-yyyy HH:mm");

  public LogWriter(String filename)
  {
  this.filename = filename;

  if((new File(filename)).exists())//findes filen i forvejen?
    {
      try
      {
        output = new BufferedWriter( new FileWriter( filename, true ) );
      }
      catch ( FileNotFoundException e ) {
        System.out.println( "Filen kunne ikke findes: " + filename );
      }
      catch ( IOException e ) {
        System.out.println(
          "Der opstod fejl under læsning af filen: " + filename );
      }
    }
    else//opret fil.
    {
      try {
          output = new BufferedWriter( new FileWriter( filename ) );
      }
      catch ( FileNotFoundException e ) {
        System.out.println( "Filen kunne ikke oprettes: " + filename );
      }
      catch ( IOException e ) {
        System.out.println(
          "Der opstod fejl under oprettelse af filen: " + filename );
      }
    }
  }

  public void writeLn(String ln)
  {
    date = new Date();
    try
    {
      output.write(df.format(date) +": "+ ln);
      output.newLine();
 
    }
    catch ( FileNotFoundException e ) {
      System.out.println( "Filen kunne ikke findes: " + filename );
    }
    catch ( IOException e ) {
      System.out.println(
        "Der opstod fejl under skrivning til filen: " + filename );
    }
  }

  public void closeFile()
  {
    try
    {
      output.close();
    }
    catch ( IOException e ) {
      System.out.println(
        "Der opstod fejl under lukning af filen: " + filename );
    }         
  } 
}
Avatar billede arne_v Ekspert
23. august 2003 - 13:12 #4
Har du kigget på et logging framework ?

client app & version >= 1.4: java.util.logging

server app: log4j eller java.util.logging eller Jakarta common logging
Avatar billede trp79 Nybegynder
23. august 2003 - 13:48 #5
Nej det siger mig overhovedet ingen ting, jeg aner ikke hvad framework er og hvad jakarta er! :(

Den forbindelse som jeg vil bruge logging i er, at jeg har lavet en server app som bare står og venter på klienter connecter, så den kan servicerer dem - enten ved at modtage backup af deres data eller ved at sende dem en backup, som de tidligere har uploaded.
Avatar billede arne_v Ekspert
23. august 2003 - 14:14 #6
Et framework er et smart ord for det der for 10 år siden hed et library
(måske ligger man i et framework lidt mere vægt på at det skal bruges
på en bestemt måde men forskellen er lille).

Lad os tage java.util.logging som eksempel.

import java.util.logging.Logger;

class Foobar {
  private final static Logger log = Logger.getLogger(Foobar.class.getName());
  public void doosomething() {
      log.info("Dette er en information");
      log.warning("Dette er en advarsel");
      log.severe("Dette er en fejl");
  }
}

Du kører programmet med:

java -Djava.util.logging.config.file=dinlogkonfig.fil ...

Og i konfigurations filen kan man så angive hvordan logningen skal ske.

Eksempel:
  - alle log kald >= severe skal udskrives til console
  - alle log kald >= info skal udskrive stil en log fil ved navn foobar.dat

Man kan angive forskelligt niveau for forskellige klasser.

Og pointen er at man kan rette i dette uden at genoversætte koden.

D.v.s. at dem der skal køre programmet i driften kan selv konfigurere
det i.s.f. at skulle have fat i en programmør.

Ja - det var den meget korte version.

Der er skrevet bøger om logging frameworks.
Avatar billede trp79 Nybegynder
23. august 2003 - 15:06 #7
Okey det lyder meget smart - specielt det at man ikke behøver at genoversætte koden! Det var måske meget smart at bruge til seriøse projekter! Men det jeg sidder og roder med er bare af interesse/for sjov, så jeg tror jeg vælger den simple form indtil videre.

Mange tak for forklaringen, mvh
Torben
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