@Override
    public void connectionClosed(SessionProtocol protocol,
                                 InetSocketAddress remoteAddr,
                                 InetSocketAddress localAddr,
                                 AttributeMap attrs) throws Exception {
        final int activeChannels = this.activeChannels.decrementAndGet();
        if (logger.isInfoEnabled() && attrs.hasAttr(OPEN_NANOS)) {
            final long closeNanos = ticker.read();
            final long elapsedNanos = closeNanos - attrs.attr(OPEN_NANOS).get();
            logger.info("[L:{} ! R:{}][{}] CLOSED (lasted for: {}, active channels: {})",
                        localAddr, remoteAddr, protocol.uriText(),
                        TextFormatter.elapsed(elapsedNanos, TimeUnit.NANOSECONDS), activeChannels);
        }
    }
Creates a new instance with an alternative {@link Ticker}.

@param ticker an alternative {@link Ticker}
core/src/main/java/com/linecorp/armeria/client/ConnectionPoolLoggingListener.java