Zugriff auf Singleton verkürzen - Namespaces??

Status
Nicht offen für weitere Antworten.

thisismyname

Mitglied
Hoi,

ich nutze einen Singleton (log4j.. tut aber eigendlich nix zur Sache). Die Klasse schaut so aus:

Java:
import org.apache.log4j.Logger;
public class log{
	public final static Logger logger = Logger.getRootLogger();
//log4j.xml ist selbstvertaendlich vorhanden und konfiguriert
}

Jetzt moechte ich aus einem Haufen anderer Klassen ueber diesen Logger etwas schreiben. Dort muss ich dann aber immer ewig lang
Java:
log.loogger.fatal("");
eintippen. Mir waehrs so aber viel lieber:
Java:
fatal("");
Gibt es denn unter JAVA etwas vergleichbares wie das aus c++ bekannte
using namespae xxxxx;
????

Oder kann ich den Singleton etwas anders schreiben??

Waehre fuer eure Hilfe sehr dankbar!!

Gruesse Moritz
 

tfa

Top Contributor
Oder kann ich den Singleton etwas anders schreiben??
Ja, das solltest du. Genaugenommen nimmt man hier kein Singleton. Jede Klasse, die was zu loggen hat, bekommt ihr eigenes Logger-Objekt. So hast du auch viel mehr Kontrolle darüber, was geloggt wird und du später rausfiltern willst. Der Aufruf geht dann bequem über ein Klassenobjekt
Code:
log.fatal("bla")
.
 
G

Gast2

Gast
Jeder Klasse die loggen soll kannst du einen eigenen Logger geben.

Java:
private static Logger logger = Logger.getRootLogger();
Schreibst du das in jede Klasse, kannst du einfach logger.error("asd"); aufrufen. Die Aufrufe landen dann alle im selben Logger.
 

tfa

Top Contributor
Guten Morgen, EikeB!

Jeder Klasse die loggen soll kannst du einen eigenen Logger geben.

Java:
private static Logger logger = Logger.getRootLogger();
Das wäre sinnlos. So bekommt jede Klasse den selben Logger. Das will man eigentlich vermeiden.
Lieber so:
Java:
private static Logger logger = Logger.getLogger(DieseKlasse.class);
 

newcron

Aktives Mitglied
packe doch in deine klasse log statische Methoden, beispielsweise

Java:
import org.apache.log4j.Logger;
public class log{
    public final static Logger logger = Logger.getRootLogger();
    public static void fatal(String l) { logger.fatal(l); }
//log4j.xml ist selbstvertaendlich vorhanden und konfiguriert
}

schon musst du nur noch log.fatal("bla"); statt log.logger.fatal("..."); schreiben. Ob das so ne tolle Zeitersparnis ist, weiß ich nicht.
Static-Imports würde ich dir nicht empfehlen, auch wenn sie dein Problem lösen. Static-imports sind nicht jedem Entwickler (vor allem, wenn er nicht aus der Java-Welt kommt) bekannt. Ein solcher würde sich dann sehr stark wundern, warum eine klasse auf eine methode zugreifen kann, die sie nicht besitzt und auch nicht erbt.

Static Import
 
B

bygones

Gast
wie tfa schon sagte... man WILL NICHT immer den gleichen Logger haben sondern immer den eigenen.
 
B

bygones

Gast
Wieso? Siehe meinen ersten Post hier.
dann drueck dich anders aus... ich versteh den zusammenhang nicht

fuer ein sinnvolles und logisches Loggen sollte jede Klasse, die loggen will ihren Logger bekommen. Damit hat man auch nicht das Problem, dass man irgendwelche imports oder sonstige verrenkungen machen muss.
 

thisismyname

Mitglied
Weil man u.U. nur den Logger für eine bestimmte Klasse auf debug setzen will, und nicht die ganze Applikation.

Nun, dieses Requirement gibt es bei mir nicht... im Gegenteil, es sollen Statusmeldungen immer in der Selben Konsole und textdatei landen.

Aber ich seh schon, was wirklich sinnvolles und einfaches was ich noch nicht kannte gibts nicht... Muss ich wohl doch des bissl laengere immer tippen...

greetz myname
 

Landei

Top Contributor
Nun, dieses Requirement gibt es bei mir nicht... im Gegenteil, es sollen Statusmeldungen immer in der Selben Konsole und textdatei landen.

Aber ich seh schon, was wirklich sinnvolles und einfaches was ich noch nicht kannte gibts nicht... Muss ich wohl doch des bissl laengere immer tippen...

greetz myname

Wer sagt etwas von anderer Konsole? Aber wenn eine Klasse "spinnt", warum sollte ich mich durch die Debug-Meldungen der ganzen Applikation wühlen, wenn ich nur diese einen zur Klasse gehörenden Logger einschalten bzw. auf ein feineres Log-Level setzen kann?
 
U

Unregistriert

Gast
Nun, dieses Requirement gibt es bei mir nicht... im Gegenteil, es sollen Statusmeldungen immer in der Selben Konsole und textdatei landen.

Aber ich seh schon, was wirklich sinnvolles und einfaches was ich noch nicht kannte gibts nicht... Muss ich wohl doch des bissl laengere immer tippen...

greetz myname

Aha, was ist an Static Import jetzt so schwer und nicht sinnvoll, wenn es genau das tut was du möchtest?
 
B

bygones

Gast
ich wuerde sagen setz dich lieber nochmal mit dem Thema logging in ruhe auseinander - es scheint noch missverstaendnisse zu geben zw. loglevel und zb wohin geloggt werden soll
 

FArt

Top Contributor
Ich glaube hier hat der eine oder andere noch nicht ganz verstanden, wie ein Logging-Framework verwendet wird, zumindest der Themenstarter.

Der Logger ist die Senke, in den die Meldungen fließen. Die Appender sind die Ziele, die die Ausgabe realisieren. Logger mit der gleichen ID (in der Regel der Klassenname) können über die gleiche Kategorie konfiguriert werden.
Ob das Loggingframework dabei eine oder mehre Instanzen des Loggers zur Laufzeit (in verschiedenen Klassen) verwendet ist dabei egal. Eine "Optimierung" wie die Verwendung einer Loggerinstanz über z.B. eine Factory ist dämlich und unnötig. Man holt sich z.B. immer den gerade benötigten Logger über die statische Methode z.B. Logger.getLogger(mypack.MyClass.class) . Die Beziehung zwischen Loggern und Appendern wird konfiguriert und kann völlig beliebig gestaltet werden, nur über Konfiguration! Das gilt für die Zuordnung von Logger(n) zu Appender(n), auch in unterschiedlichen Logleveln.

Der Sinn ist eben, dass ich NICHT programmatisch bestimmen muss, wie detailliert was wohin geloggt werden soll!

Noch mal das Ansinnen ist sinnlos!
 

tfa

Top Contributor
Ich glaube hier hat der eine oder andere noch nicht ganz verstanden, wie ein Logging-Framework verwendet wird, zumindest der Themenstarter.

Der Logger ist die Senke, in den die Meldungen fließen. Die Appender sind die Ziele, die die Ausgabe realisieren. Logger mit der gleichen ID (in der Regel der Klassenname) können über die gleiche Kategorie konfiguriert werden.
Ob das Loggingframework dabei eine oder mehre Instanzen des Loggers zur Laufzeit (in verschiedenen Klassen) verwendet ist dabei egal. Eine "Optimierung" wie die Verwendung einer Loggerinstanz über z.B. eine Factory ist dämlich und unnötig. Man holt sich z.B. immer den gerade benötigten Logger über die statische Methode z.B. Logger.getLogger(mypack.MyClass.class) . Die Beziehung zwischen Loggern und Appendern wird konfiguriert und kann völlig beliebig gestaltet werden, nur über Konfiguration! Das gilt für die Zuordnung von Logger(n) zu Appender(n), auch in unterschiedlichen Logleveln.

Der Sinn ist eben, dass ich NICHT programmatisch bestimmen muss, wie detailliert was wohin geloggt werden soll!

Noch mal das Ansinnen ist sinnlos!

Und das alles sollte der Themenstarter (und alle anderen) aus deiner ersten Antwort herauslesen?
 

thisismyname

Mitglied
Nuja... ich brauch den ganzen loggingkram eigendlich nur um ausgaben auf die Konsole zu schreiben. Dafuer koennte ich in der Theorie auch System.out verwenden.

Beim Logging habe ich aber ohne viel mehraufwand viel mehr moeglichkeiten, zb Timestamp und gleichzeitiges schreiben in eine Logdatei fuer spaeter...

Mehr wollte ich auch gar nicht. Ich hab auch kein Riesenframework oder so sondern vielleicht 20 Klassen wenns hochkommt.

Alles was ich eig wollte war ein bischen schreibarbeit zu sparen und mir ueberall ohne neue Variablen anzulegen fail("blabla") verwenden zu koennen.
-> Das koennen static Imports. Dafuer wird der Code aber wohl fuer Leute ohne Java-Kenntnisse schwerer lesbar. Hier sind die meisten mit c++ beschäftigt und weniger mit Java. Deswegen lass ich das ganze und schreib lieber log.logger.fail().

Aber danke fuer das viele Interesse :)

greetz
 
M

maki

Gast
Nuja... ich brauch den ganzen loggingkram eigendlich nur um ausgaben auf die Konsole zu schreiben. Dafuer koennte ich in der Theorie auch System.out verwenden.
Trotzdem solltest du die Grundlagen der Frameworks begreifen die du verwendest ;)
Wenn das der Fall gewesen wäre, hättest du gar keine Frage gehabt weil du das Problem gar nciht gehabt hättest.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Java Zugriff auf Netzwerklaufwerk Allgemeine Java-Themen 1
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
B Maven Zugriff auf files aus einem kompilierten jar Allgemeine Java-Themen 15
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
W Zugriff auf Objektvariablen vs. Übergabe Allgemeine Java-Themen 3
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
Tommy Nightmare HTTP Zugriff auf Internetseite im Loginbereich Allgemeine Java-Themen 5
H Zugriff auf PHP Allgemeine Java-Themen 4
B DB-Zugriff einer Webanwendung funktioniert nicht mit Java 7 Allgemeine Java-Themen 2
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
O JNA Zugriff auf Funktion aus DLL Allgemeine Java-Themen 0
O Zugriff auf Windows Zertifikatstore Allgemeine Java-Themen 2
M Kein Zugriff auf microSD Karten Allgemeine Java-Themen 4
T Zugriff auf Datenbank Allgemeine Java-Themen 1
J Zugriff auf IMAP GMail Konto scheitert. Allgemeine Java-Themen 2
P Frontend- Zugriff auf WS- Backend Allgemeine Java-Themen 0
U Zugriff auf Datei sperren Allgemeine Java-Themen 5
N Best Practice Semi-Synchronized Zugriff Allgemeine Java-Themen 0
C Zugriff auf Event felder Allgemeine Java-Themen 0
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
F Zugriff Verweigert bei Kopieroperation? Allgemeine Java-Themen 4
T JNI: kein Zugriff auf VM in Callback-Methode eines Windows-Hooks Allgemeine Java-Themen 3
S Dynamischer Zugriff Allgemeine Java-Themen 4
Minonos Einem Programm Zugriff auf bestimmte Ordner geben Allgemeine Java-Themen 5
E Zugriff auf Dateien im Filesystem überwachen Allgemeine Java-Themen 5
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
V Zugriff auf den Objekterzeuger? Allgemeine Java-Themen 4
M Zugriff zweier Threads auf diesselbe Methode Allgemeine Java-Themen 16
B Zugriff auf eine HashMap Allgemeine Java-Themen 4
B JApplet Zugriff auf Local Storage des Browser? Allgemeine Java-Themen 2
D Zugriff auf Array-Liste Allgemeine Java-Themen 19
M gleichzeitiger Zugriff auf eine Textdatei Allgemeine Java-Themen 6
D Eclipse Kein Zugriff auf Inhalt einer referenzierten .jar Allgemeine Java-Themen 5
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
U Große Liste von Strings mit indiziertem Zugriff Allgemeine Java-Themen 31
J XML Element Zugriff Allgemeine Java-Themen 4
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
M Klassen Zugriff auf getMethode ohne Klasse zu erzeugen Allgemeine Java-Themen 6
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
H Vererbung Abgeleitete Klassen und Zugriff Allgemeine Java-Themen 2
C Probleme mit dem Zugriff auf private Methode per reflection Allgemeine Java-Themen 2
J Zugriff auf Poker-Client Fenster Allgemeine Java-Themen 14
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
S Zugriff auf innere Klasse Allgemeine Java-Themen 3
D Kein Zugriff auf WebService ausser localhost Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
J Zugriff auf Dateien auf einem shared Folder? Allgemeine Java-Themen 3
H Zugriff auf VBA in Java Allgemeine Java-Themen 2
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
G Letzter Zugriff auf Datei Allgemeine Java-Themen 5
C java.io.FileNotFoundException: (Zugriff verweigert) Allgemeine Java-Themen 14
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
C Webstart: Zugriff auf lokale Dateien? Allgemeine Java-Themen 2
X Zugriff auf ComboBoxen in Hauptklasse von zweiter Klasse aus Allgemeine Java-Themen 8
J Zugriff auf gemeinsame Funktionen Allgemeine Java-Themen 4
Airwolf89 Zugriff auf ArrayList<ArrayList> Allgemeine Java-Themen 3
Airwolf89 Zugriff auf Werte in ArrayList<ArrayList> Allgemeine Java-Themen 4
T Zugriff zwischen Klassen für repaint Allgemeine Java-Themen 7
N Zugriff auf eine Referenzvar. Allgemeine Java-Themen 3
S Zugriff auf Klasse Allgemeine Java-Themen 4
Meldanor Mehrdimensionale Arrays : Zugriff auf n-tes Array Allgemeine Java-Themen 5
E JNA:Zugriff auf Common-Block von Fortran bzw. Struct in C Allgemeine Java-Themen 2
L Zugriff auf ein Objekt mit mehreren Threads Allgemeine Java-Themen 11
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
S Zugriff auf einzelne Bildpunkte Allgemeine Java-Themen 3
D Referenzen weiterreichen vs. statischer Zugriff Allgemeine Java-Themen 3
V Zugriff auf Default-Package? Allgemeine Java-Themen 6
P RegeEx-Problem: Zugriff auf group Allgemeine Java-Themen 2
M Zugriff auf Parallel-Schnittstelle Allgemeine Java-Themen 2
B Zugriff mit einem Applet auf den Datenträger Allgemeine Java-Themen 11
S Innere Klasse: Zugriff auf äußere Variable Allgemeine Java-Themen 5
I Zugriff auf Daten Allgemeine Java-Themen 5
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
D Zugriff auf Windows Dienste Allgemeine Java-Themen 7
G Zugriff auf Memberclasses einer geladenen Class-Datei Allgemeine Java-Themen 2
I Gleichzeitiger zugriff auf ein Long über Threads Allgemeine Java-Themen 2
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
M Paralleler Zugriff auf statische Methode Allgemeine Java-Themen 5
S Zugriff auf unterschiedliche JREs Allgemeine Java-Themen 7
M "Unzulässiger Zugriff auf einen Speicherbereich" Allgemeine Java-Themen 7
A Zugriff auf Parallelport nur über Eclipse nicht über .jar ! Allgemeine Java-Themen 12
G Zugriff auf ein sama share Allgemeine Java-Themen 8
J Java zugriff auf Exchange Server Allgemeine Java-Themen 10
D eclipse: Zugriff auf Ordner per code Allgemeine Java-Themen 4
O Konkurrierender Zugriff auf Log-Datei mit Log4J Allgemeine Java-Themen 11
Caracasa [Threads] Gleichzeitiger Zugriff auf eine LinkedList Allgemeine Java-Themen 9
L Zugriff auf Objekt das sich in einer Liste befindet Allgemeine Java-Themen 2
J Zugriff auf den Namen einer Variablen Allgemeine Java-Themen 7
J Zugriff auf Map in anderer Klasse Allgemeine Java-Themen 2
J Endlosschleife durch wechselseitigen Zugriff zweier Klassen? Allgemeine Java-Themen 2
F Zugriff auf lokalen Rechner wer weiss Rat ? Allgemeine Java-Themen 16
G Zugriff auf Dateien in jar-Datei Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben