Redirecting log information

Tom Schindl tom.schindl at bestsolution.at
Thu May 10 07:55:30 PDT 2012


Hi,

To me it looks like e.g. the CSS-Engine (and all other stuff) is not
logging through java.util.Logger but through:

PlatformLogger cssLogger = Logging.getCSSLogger();

which at least in my current test ends up in

> Thread [JavaFX Application Thread] (Suspended)	
> 	PrintStream.println(String) line: 755	
> 	PlatformLogger$LoggerProxy.doLog(int, String) line: 361	
> 	PlatformLogger.severe(String) line: 217	
> 	TestApp.start(Stage) line: 22	
> 	LauncherImpl$5.run() line: 315	
> 	PlatformImpl$4.run() line: 174	
> 	PlatformImpl$3.run() line: 141	
> 	WinApplication._runLoop(String[], Launchable) line: not available [native method]	
> 	WinApplication.access$100(WinApplication, String[], Launchable) line: 29	
> 	WinApplication$2$1.run() line: 62	
> 	Thread.run() line: 662	

I wished the source of this would be available ;-)

Tom

Am 08.05.12 18:54, schrieb Richard Bair:
> Ya, both JDK logging and JFX logging have the same flag checks available.
> 
> On May 8, 2012, at 9:06 AM, Phil Race <philip.race at oracle.com> wrote:
> 
>> I think the graphics code mostly if not always, guards those printlns with a check for
>> a debugging flag. Unless used in a similar manner, the logging API carries overhead.
>> There was a fix in JDK 7 to eliminate dependency on logging from AWT/2D/Swing.
>> In part that was because of modularisation .. I don't know the full story on why
>> that mattered.
>>
>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6879044 :
>> Eliminate the dependency on logging from the AWT/2D/Swing classes
>>
>> -phil.
>>
>> On 5/8/2012 8:28 AM, Kevin Rushforth wrote:
>>> This would certainly make everyone's life easier.
>>>
>>> In any case, library code should never write debug/warning/error meesages to System.out / stdout (and yes, I know that some of the graphics currently does). Best is to use logging where possible for the reasons Richard mentioned, and System.err / stderr where not.
>>>
>>> -- Kevin
>>>
>>>
>>> Richard Bair wrote:
>>>> Not all JavaFx code is consistent on logging. In particular, the graphics code just uses System.out and System.err, whereas controls use a Logger which goes to System.out unless you enable JDK logging, in which case it uses a JDK Logger.
>>>>
>>>> I feel we ought to use the same logging method consistently, and then it should be quite easy for you to redirect by utilizing the JDK logging mechanism?
>>>>
>>>> On May 8, 2012, at 5:19 AM, Tom Schindl <tom.schindl at bestsolution.at> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> The problem is the point at which one redirects the stderr. Take a look
>>>>> at this:
>>>>>
>>>>>> public class TestApp extends Application {
>>>>>>
>>>>>>   @Override
>>>>>>   public void start(Stage primaryStage) {
>>>>>>       ByteArrayOutputStream out = new ByteArrayOutputStream();
>>>>>>       PrintStream orig = System.err;
>>>>>>       System.setErr(new PrintStream(out)); // Works
>>>>> vs.
>>>>>
>>>>>> public class TestApp extends Application {
>>>>>>
>>>>>>   @Override
>>>>>>   public void start(Stage primaryStage) {
>>>>>>       ByteArrayOutputStream out = new ByteArrayOutputStream();
>>>>>>       PrintStream orig = System.err;
>>>>>>              Group g = new Group();
>>>>>>       System.setErr(new PrintStream(out)); // Does not work
>>>>> The problem is that Option 1 is not possible for me because I only have
>>>>> to redirect the logging information from JavaFX while your solution
>>>>> completely redirects STDERR with is not making much sense!
>>>>>
>>>>> Sad enough the Logging code is not yet opensourced so I still hope that
>>>>> a JavaFX dev with access to the code can help me.
>>>>>
>>>>> So I repeat my question. Can I somehow set a custom logger to the JavaFX
>>>>> platform?
>>>>>
>>>>> Tom
>>>>>
>>>>> Am 08.05.12 00:22, schrieb Tom Schindl:
>>>>>> I've tried that already and couldn't make it work. Did you try it and it
>>>>>> worked? Then I'd give another try.
>>>>>>
>>>>>> Tom
>>>>>>
>>>>>> Am 08.05.12 00:25, schrieb Christian Schudt:
>>>>>>> You can redirect the System.err stream to your logger.
>>>>>>>
>>>>>>> See here:
>>>>>>>
>>>>>>> https://forums.oracle.com/forums/thread.jspa?messageID=10304321
>>>>>>> http://stackoverflow.com/questions/1200175/log4j-redirect-stdout-to-dailyrollingfileappender/1370033#1370033 
>>>>>>>
>>>>>>> Christian
>>>>>>>
>>>>>>>
>>>>>>> Am 07.05.2012 um 23:06 schrieb Tom Schindl:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm having a hard time redirecting log output generated by JavaFX
>>>>>>>> library. Is there some API available or documentation?
>>>>>>>>
>>>>>>>> Tom
>>>>>>>>
>>>>>>>> -- 
>>>>>>>> B e s t S o l u t i o n . a t                        EDV Systemhaus GmbH
>>>>>>>> ------------------------------------------------------------------------ 
>>>>>>>> tom schindl                 geschäftsführer/CEO
>>>>>>>> ------------------------------------------------------------------------ 
>>>>>>>> eduard-bodem-gasse 5-7/1   A-6020 innsbruck     fax      ++43 512 935833
>>>>>>>> http://www.BestSolution.at                      phone    ++43 512 935834
>>>>> -- 
>>>>> B e s t S o l u t i o n . a t                        EDV Systemhaus GmbH
>>>>> ------------------------------------------------------------------------ 
>>>>> tom schindl                 geschäftsführer/CEO
>>>>> ------------------------------------------------------------------------ 
>>>>> eduard-bodem-gasse 5-7/1   A-6020 innsbruck     fax      ++43 512 935833
>>>>> http://www.BestSolution.at                      phone    ++43 512 935834
>>


-- 
B e s t S o l u t i o n . a t                        EDV Systemhaus GmbH
------------------------------------------------------------------------
tom schindl                 geschäftsführer/CEO
------------------------------------------------------------------------
eduard-bodem-gasse 5-7/1   A-6020 innsbruck     fax      ++43 512 935833
http://www.BestSolution.at                      phone    ++43 512 935834


More information about the openjfx-dev mailing list