Package org.openstreetmap.josm.tools
Class Logging.ReacquiringConsoleHandler
- java.lang.Object
-
- java.util.logging.Handler
-
- java.util.logging.StreamHandler
-
- java.util.logging.ConsoleHandler
-
- org.openstreetmap.josm.tools.Logging.ReacquiringConsoleHandler
-
- Enclosing class:
- Logging
public static class Logging.ReacquiringConsoleHandler extends java.util.logging.ConsoleHandler
AConsoleHandlerwith a couple of extra features, allowing it to be targeted at an an arbitraryOutputStreamwhich it can be asked to reacquire the reference for on demand throughreacquireOutputStream(). It can also prevent a LogRecord's output if a specifiedprioritizedHandlerwould have outputted it.- Since:
- 14052
-
-
Field Summary
Fields Modifier and Type Field Description private java.io.OutputStreamoutputStreamMemoprivate java.util.function.Supplier<java.io.OutputStream>outputStreamSupplierprivate java.util.logging.HandlerprioritizedHandlerprivate booleansuperCompletedThis variables is set to true as soon as the superconstructor has completed.
-
Constructor Summary
Constructors Constructor Description ReacquiringConsoleHandler(java.util.function.Supplier<java.io.OutputStream> outputStreamSupplier, java.util.logging.Handler prioritizedHandler)Construct a newLogging.ReacquiringConsoleHandler.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidpublish(java.util.logging.LogRecord logRecord)voidreacquireOutputStream()Set output stream to one acquired from calling outputStreamSuppliervoidsetOutputStream(java.io.OutputStream outputStream)
-
-
-
Field Detail
-
outputStreamSupplier
private final java.util.function.Supplier<java.io.OutputStream> outputStreamSupplier
-
prioritizedHandler
private final java.util.logging.Handler prioritizedHandler
-
outputStreamMemo
private java.io.OutputStream outputStreamMemo
-
superCompleted
private final boolean superCompleted
This variables is set to true as soon as the superconstructor has completed. The superconstructor callssetOutputStream(System.err), any subsequent call ofsetOutputStream(OutputStream)would then flush and closeSystem.err. To avoid this, we overridesetOutputStream(OutputStream)to completely ignore all calls from the superconstructor.
-
-
Constructor Detail
-
ReacquiringConsoleHandler
public ReacquiringConsoleHandler(java.util.function.Supplier<java.io.OutputStream> outputStreamSupplier, java.util.logging.Handler prioritizedHandler)
Construct a newLogging.ReacquiringConsoleHandler.- Parameters:
outputStreamSupplier- ASupplierwhich will return the desiredOutputStreamfor this handler when called. Particularly useful if you happen to be using a test framework which will switch out references to the stderr/stdout streams with new dummy ones from time to time.prioritizedHandler- If non-null, will suppress output of any log records which pass this handler'sHandler#isLoggable(LogRecord)method.
-
-
Method Detail
-
reacquireOutputStream
public void reacquireOutputStream()
Set output stream to one acquired from calling outputStreamSupplier
-
setOutputStream
public void setOutputStream(java.io.OutputStream outputStream)
- Overrides:
setOutputStreamin classjava.util.logging.StreamHandler
-
publish
public void publish(java.util.logging.LogRecord logRecord)
- Overrides:
publishin classjava.util.logging.ConsoleHandler
-
-