takidoso
Erfahrenes Mitglied
Hallo und halli,
ich habe das Problem, dass ich eine meiner Anwendungen von meinem eigenem Logger auf log4j umstellen will. Die Anwendung verwendet für Systemaufrufe einen sogenannten "Gobbler", der stdout und stderr ausliest, damit bei Ausgabe der Systemaufrufe auf diese Ströhme die Anwendung nicht hängen bleibt.
Nun ist es so, dass ich zumindest für stderr die Ausgaben nicht wegkippen will sondern in irgendeinerweise mitloggen möchte. Mein eigener Logger gibt dafür seinen verwendetn Ausgabestohm mit einer get-Routine aus. Für log4j scheint das offenbar nicht zuzutreffen und auch gegen seine Philosophie zu stehen.
auf einer Seite fand ich folgenden Tip zu einem offenbar gleichen Problem.
Zitat
Hmmm irgendwiei interessant, aber wie wird das eigetnlich umgesetzt?
In anderen Worten wie kann man mit log4j z.b. nachrichten aus System.err abgreifen?
Für Hinweise fürchterlich dankbar
Takidoso
ich habe das Problem, dass ich eine meiner Anwendungen von meinem eigenem Logger auf log4j umstellen will. Die Anwendung verwendet für Systemaufrufe einen sogenannten "Gobbler", der stdout und stderr ausliest, damit bei Ausgabe der Systemaufrufe auf diese Ströhme die Anwendung nicht hängen bleibt.
Nun ist es so, dass ich zumindest für stderr die Ausgaben nicht wegkippen will sondern in irgendeinerweise mitloggen möchte. Mein eigener Logger gibt dafür seinen verwendetn Ausgabestohm mit einer get-Routine aus. Für log4j scheint das offenbar nicht zuzutreffen und auch gegen seine Philosophie zu stehen.
auf einer Seite fand ich folgenden Tip zu einem offenbar gleichen Problem.
Zitat
Code:
Hi,
>We are using a third-party tool where its debugger
>only has the method 'getDebugStream(PrintStream s)'
>to config its debug io stream.
OK.
>We want to use log4j, which means we need to pass
>the streams associated with an Appender (file or
>socket appender). Can this be done and how to
>get the stream of an Appender?
I'm not sure how you would this. There are several reasons against
this. One reason, for example, is that log4j is thread safe, and if it
exposes its streams for manipulation by other components, they might
lock the streams, hence potentially locking log4j.
Another reason is that log4j conceptually doesn't want you to concern
yourself with streams per-se, only loggers, appenders, and the like.
Perhaps a solution to your problem would be: set your 3rd party tool
print stream to System.out or System.err, then configure a log4j console
appender to grab messages headed to System.out and/or System.err. This
extra level of redirection, while slowing down logging, will keep your
3rd party tool and log4j both happy and decoupled.
Hmmm irgendwiei interessant, aber wie wird das eigetnlich umgesetzt?
In anderen Worten wie kann man mit log4j z.b. nachrichten aus System.err abgreifen?
Für Hinweise fürchterlich dankbar
Takidoso