Logback: the reliable, generic, fast and flexible logging framework. Copyright (C) 1999-2015, QOS.ch. All rights reserved. This program and the accompanying materials are dual-licensed under either the terms of the Eclipse Public License v1.0 as published by the Eclipse Foundation or (per the licensee's choosing) under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation.
/** * Logback: the reliable, generic, fast and flexible logging framework. * Copyright (C) 1999-2015, QOS.ch. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation. */
package ch.qos.logback.core.status; import ch.qos.logback.core.spi.ContextAwareBase; import ch.qos.logback.core.spi.LifeCycle; import ch.qos.logback.core.util.StatusPrinter; import java.io.PrintStream; import java.util.List;
Print all new incoming status messages on the on the designated PrintStream.
Author:Ceki Gülcü
/** * Print all new incoming status messages on the on the designated PrintStream. * @author Ceki Gülcü */
abstract public class OnPrintStreamStatusListenerBase extends ContextAwareBase implements StatusListener, LifeCycle { boolean isStarted = false; static final long DEFAULT_RETROSPECTIVE = 300; long retrospectiveThresold = DEFAULT_RETROSPECTIVE;
The prefix to place before each status message
Since:1.1.10
/** * The prefix to place before each status message * @since 1.1.10 */
String prefix;
The PrintStream used by derived classes
Returns:
/** * The PrintStream used by derived classes * @return */
abstract protected PrintStream getPrintStream(); private void print(Status status) { StringBuilder sb = new StringBuilder(); if(prefix != null) sb.append(prefix); StatusPrinter.buildStr(sb, "", status); getPrintStream().print(sb); } public void addStatusEvent(Status status) { if (!isStarted) return; print(status); }
Print status messages retrospectively
/** * Print status messages retrospectively */
private void retrospectivePrint() { if (context == null) return; long now = System.currentTimeMillis(); StatusManager sm = context.getStatusManager(); List<Status> statusList = sm.getCopyOfStatusList(); for (Status status : statusList) { long timestampOfStatusMesage = status.getDate(); if (isElapsedTimeLongerThanThreshold(now, timestampOfStatusMesage)) { print(status); } } } private boolean isElapsedTimeLongerThanThreshold(long now, long timestamp) { long elapsedTime = now - timestamp; return elapsedTime < retrospectiveThresold; }
Invoking the start method can cause the instance to print status messages created less than value of retrospectiveThresold.
/** * Invoking the start method can cause the instance to print status messages created less than * value of retrospectiveThresold. */
public void start() { isStarted = true; if (retrospectiveThresold > 0) { retrospectivePrint(); } } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix = prefix; } public void setRetrospective(long retrospective) { this.retrospectiveThresold = retrospective; } public long getRetrospective() { return retrospectiveThresold; } public void stop() { isStarted = false; } public boolean isStarted() { return isStarted; } }