10. november 2003 - 03:42Der er
8 kommentarer og 1 løsning
Metodekald fra anden klasse...burde være nemt!
Jeg skal lave en logging-klasse som en del af en opgave. Nemt nok:
import java.io.*;
public class LoggingFacility { static String logtekst; public void log( String s ) { logtekst = s; try { BufferedWriter logWriter = new BufferedWriter(new FileWriter("E:/java..../log.txt")); logWriter.write(logtekst); //System.out.println("Skrives til log.txt: " + logtekst); logWriter.close(); } catch (IOException e) { } } public static void main(String args[]) { LoggingFacility test = new LoggingFacility(); test.log("irene"); } }
Dét virker fint. Nu er der så lige den finte ved opgaven, at "pointen med klassen er, at man fra andre klasser kan kalde fx LoggingFacility.log("Har sendt meddelse...") "
Når jeg laver en testklasse, og kalder som vanligt med andetObjekt.andenMetode(), synes jeg at det burde virke...klassen er her:
import java.io.*;
public class TestKlasse { public TestKlasse() {
} public static void main (String args []) { TestKlasse tk= new TestKlasse(); tk.LoggingFacility.log("Irene igen"); } }
"...på samme måde skal en logging-facilitet bruges til at et program kan udskrive information om centrale ting det foretager sig. Nedenfor vises et klasseskelet over en klasse LoggingFacility:
public static Loggingfacility{
public static void log( String s ) { //Se delopgave a }
public static void setLogToConsole { //se delopgave b } public static void setLogToFile { //se delopgave b }
} a) meningen med programmet er, at man fra andre klasser kan kalde f.eks LoggingFacility.log("har sendt objektet til Klienten"); ...hvormed den angivne streng sendes ned i en logfil (kaldet log.tekst). Du kan indtil videre bare overskrive filen log.txt hvergang programmet køres på ny. b) udvid nu programmet med de to metoder setLogToFile() og setLogToConsole, hvorvidt loggeren skal skrive de ting, der bliver loget, til en fil og/eller konsollen. "
Bortset fra at jeg kun har lavet en "til konsol ELLER fil", synes jeg at klasserne løser problemet ok...?:
import java.io.*;
public class LoggingFacility { static String logtekst; static boolean printer; static boolean filskriver = false;
public static void setLogToFile( boolean logToFile ) { filskriver = logToFile; } public static void setLogToConsole( boolean logToConsole ) { printer = logToConsole; } public static void log( String s ) { logtekst = s; try { if (filskriver) { BufferedWriter logWriter = new BufferedWriter(new FileWriter("E:/java/sampledir/sampledir/legeplads/IO/log.txt")); System.out.println("Skrives til log.txt: " + logtekst); logWriter.write(logtekst); logWriter.close(); } else { System.out.println("Skrives til konsol: " + logtekst); } } catch (IOException e) { }
}
public static void main(String args[]) { LoggingFacility test = new LoggingFacility(); test.setLogToFile(true); test.setLogToConsole(false); test.log("irene 6"); } }
import java.io.*;
public class TestKlasse { public TestKlasse() {
} public static void main (String args []) { TestKlasse tk= new TestKlasse(); LoggingFacility.setLogToFile(true); LoggingFacility.setLogToConsole(false); LoggingFacility.log("Irene 7"); } }
Det som de store log framework tilbyder er: - begrænsning af output baseret på severity (debug, info, warning, error, fatal) - styring af både fil/console og serverity level per loggende klasse - dynamisk konfiguration via konfigurations fil
Men jeg har skam også lavet kode som din mange gange.
Hvis vi skal ned i det rent teknisk, så undrer det mig at du åbner filen i log og ikke i constructor. SÅ kan du jo kun have en besked fremfor en hel program kørsel.
Æh, det kan du have ret i...mit faglige niveau i java parret med tiden til at løse opgaverne er beklageligvist kun lige til "Hvis det virker, kan jeg altid prøve at lave Den Smarte Metode" når opgaven ER afleveret indenfor tidsfristen."...derfor.
Der kommer forøvrigt nok et spørgsmål om fordele og ulemper ved at gemme filer som hhv .ser, .dat og . txt senere på dagen...dét gik jeg i stå i i nat.
Synes godt om
Ny brugerNybegynder
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.