175 }
176
177 @Override
178 public final LoggerConfiguration getLoggerConfiguration() {
179 return this;
180 }
181
182 /**
183 * Default platform logging support - output messages to System.err -
184 * equivalent to ConsoleHandler with SimpleFormatter.
185 */
186 static PrintStream outputStream() {
187 return System.err;
188 }
189
190 // Returns the caller's class and method's name; best effort
191 // if cannot infer, return the logger's name.
192 private String getCallerInfo() {
193 Optional<StackWalker.StackFrame> frame = new CallerFinder().get();
194 if (frame.isPresent()) {
195 return frame.get().getClassName() + " " + frame.get().getMethodName();
196 } else {
197 return name;
198 }
199 }
200
201 /*
202 * CallerFinder is a stateful predicate.
203 */
204 static final class CallerFinder implements Predicate<StackWalker.StackFrame> {
205 private static final StackWalker WALKER;
206 static {
207 final PrivilegedAction<StackWalker> action = new PrivilegedAction<>() {
208 @Override
209 public StackWalker run() {
210 return StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
211 }
212 };
213 WALKER = AccessController.doPrivileged(action);
214 }
215
|
175 }
176
177 @Override
178 public final LoggerConfiguration getLoggerConfiguration() {
179 return this;
180 }
181
182 /**
183 * Default platform logging support - output messages to System.err -
184 * equivalent to ConsoleHandler with SimpleFormatter.
185 */
186 static PrintStream outputStream() {
187 return System.err;
188 }
189
190 // Returns the caller's class and method's name; best effort
191 // if cannot infer, return the logger's name.
192 private String getCallerInfo() {
193 Optional<StackWalker.StackFrame> frame = new CallerFinder().get();
194 if (frame.isPresent()) {
195 return frame.getWhenPresent().getClassName() + " " + frame.getWhenPresent().getMethodName();
196 } else {
197 return name;
198 }
199 }
200
201 /*
202 * CallerFinder is a stateful predicate.
203 */
204 static final class CallerFinder implements Predicate<StackWalker.StackFrame> {
205 private static final StackWalker WALKER;
206 static {
207 final PrivilegedAction<StackWalker> action = new PrivilegedAction<>() {
208 @Override
209 public StackWalker run() {
210 return StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
211 }
212 };
213 WALKER = AccessController.doPrivileged(action);
214 }
215
|