Trait/Object

com.tersesystems.blindsight.flow

FlowLogger

Related Docs: object FlowLogger | package flow

Permalink

trait FlowLogger extends SLF4JLoggerAPI[CorePredicate, FlowMethod] with UnderlyingMixin with MarkerMixin with EntryTransformMixin with EventBufferMixin with OnConditionMixin

This trait implements a logger that is used for rendering entry/exit logging wrappers.

The FlowMethod implements the bulk of the logic here, and is intended to be used with a user-provided FlowBehavior that determines what statements and side effects happen on entry and exit.

If logging is enabled, then the execution is wrapped to capture the result or execution, and then the result is returned or execution rethrown. If the logging level is not enabled or logging execution is denied by a filter, then execution of the block still proceeds but is not wrapped by a Try block.

You should use Condition.never explicitly here to disable logging, as it will shortcut to a Noop implementation. Benchmarks show a noop flow takes 42ns to execute, 4.5ns if you remove sourcecode.Args from the method signature.

import com.tersesystems.blindsight._
import com.tersesystems.blindsight.flow._

implicit def flowBehavior[B: ToArgument]: FlowBehavior[B] = new SimpleFlowBehavior
val logger = LoggerFactory.getLogger
val flowLogger: FlowLogger = logger.flow
val resultIsThree: Int = flowLogger.trace(1 + 2)
Source
FlowLogger.scala
Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. FlowLogger
  2. OnConditionMixin
  3. ConditionMixin
  4. EventBufferMixin
  5. EntryTransformMixin
  6. MarkerMixin
  7. UnderlyingMixin
  8. SLF4JLoggerAPI
  9. Error
  10. Warn
  11. Info
  12. Debug
  13. Trace
  14. SLF4JLoggerComponent
  15. AnyRef
  16. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. type Method = FlowMethod

    Permalink
    Definition Classes
    FlowLoggerSLF4JLoggerComponent
  2. type Predicate = CorePredicate

    Permalink
    Definition Classes
    FlowLoggerSLF4JLoggerComponent
  3. type Self = FlowLogger

    Permalink

Abstract Value Members

  1. abstract def debug: Method

    Permalink
    Definition Classes
    Debug
  2. abstract def error: Method

    Permalink
    Definition Classes
    Error
  3. abstract def info: Method

    Permalink
    Definition Classes
    Info
  4. abstract def isDebugEnabled: Predicate

    Permalink
    Definition Classes
    Debug
  5. abstract def isErrorEnabled: Predicate

    Permalink
    Definition Classes
    Error
  6. abstract def isInfoEnabled: Predicate

    Permalink
    Definition Classes
    Info
  7. abstract def isTraceEnabled: Predicate

    Permalink
    Definition Classes
    Trace
  8. abstract def isWarnEnabled: Predicate

    Permalink
    Definition Classes
    Warn
  9. abstract def markers: Markers

    Permalink

    Returns the accumulated markers of this logger.

    Returns the accumulated markers of this logger.

    returns

    the accumulated markers, may be Markers.empty.

    Definition Classes
    MarkerMixin
  10. abstract def trace: Method

    Permalink
    Definition Classes
    Trace
  11. abstract def underlying: org.slf4j.Logger

    Permalink
    Definition Classes
    UnderlyingMixin
  12. abstract def warn: Method

    Permalink
    Definition Classes
    Warn
  13. abstract def withCondition(condition: Condition): Self

    Permalink

    Returns a new instance of the logger that will only log if the condition is met.

    Returns a new instance of the logger that will only log if the condition is met.

    Definition Classes
    ConditionMixin
  14. abstract def withEntryTransform(f: (Entry) ⇒ Entry): Self

    Permalink
    Definition Classes
    EntryTransformMixin
  15. abstract def withEntryTransform(level: Level, f: (Entry) ⇒ Entry): Self

    Permalink
    Definition Classes
    EntryTransformMixin
  16. abstract def withEventBuffer(level: Level, buffer: EventBuffer): Self

    Permalink
    Definition Classes
    EventBufferMixin
  17. abstract def withEventBuffer(buffer: EventBuffer): Self

    Permalink
    Definition Classes
    EventBufferMixin
  18. abstract def withMarker[T](instance: T)(implicit arg0: ToMarkers[T]): Self

    Permalink

    Returns a logger which will always render with the given marker.

    Returns a logger which will always render with the given marker.

    T

    the instance type.

    instance

    a type class instance of ToMarkers

    returns

    a new instance of the logger that has this marker.

    Definition Classes
    MarkerMixin

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. def +(other: String): String

    Permalink
    Implicit information
    This member is added by an implicit conversion from FlowLogger to any2stringadd[FlowLogger] performed by method any2stringadd in scala.Predef.
    Definition Classes
    any2stringadd
  4. def ->[B](y: B): (FlowLogger, B)

    Permalink
    Implicit information
    This member is added by an implicit conversion from FlowLogger to ArrowAssoc[FlowLogger] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  5. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate() @throws( ... )
  8. def ensuring(cond: (FlowLogger) ⇒ Boolean, msg: ⇒ Any): FlowLogger

    Permalink
    Implicit information
    This member is added by an implicit conversion from FlowLogger to Ensuring[FlowLogger] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  9. def ensuring(cond: (FlowLogger) ⇒ Boolean): FlowLogger

    Permalink
    Implicit information
    This member is added by an implicit conversion from FlowLogger to Ensuring[FlowLogger] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  10. def ensuring(cond: Boolean, msg: ⇒ Any): FlowLogger

    Permalink
    Implicit information
    This member is added by an implicit conversion from FlowLogger to Ensuring[FlowLogger] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  11. def ensuring(cond: Boolean): FlowLogger

    Permalink
    Implicit information
    This member is added by an implicit conversion from FlowLogger to Ensuring[FlowLogger] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  12. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  14. def formatted(fmtstr: String): String

    Permalink
    Implicit information
    This member is added by an implicit conversion from FlowLogger to StringFormat[FlowLogger] performed by method StringFormat in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @inline()
  15. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate()
  16. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate()
  17. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  18. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  19. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate()
  20. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate()
  21. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  22. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  23. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  25. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. def [B](y: B): (FlowLogger, B)

    Permalink
    Implicit information
    This member is added by an implicit conversion from FlowLogger to ArrowAssoc[FlowLogger] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc

Deprecated Value Members

  1. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @Deprecated @deprecated @throws( classOf[java.lang.Throwable] )
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

  2. def onCondition(condition: Condition): Self

    Permalink

    Returns a new instance of the logger that will only log if the condition is met.

    Returns a new instance of the logger that will only log if the condition is met.

    Definition Classes
    OnConditionMixin
    Annotations
    @deprecated
    Deprecated

    (Since version 1.4.0) Use withCondition

Inherited from OnConditionMixin

Inherited from ConditionMixin

Inherited from EventBufferMixin

Inherited from EntryTransformMixin

Inherited from MarkerMixin

Inherited from UnderlyingMixin

Inherited from Error[CorePredicate, FlowMethod]

Inherited from Warn[CorePredicate, FlowMethod]

Inherited from Info[CorePredicate, FlowMethod]

Inherited from Debug[CorePredicate, FlowMethod]

Inherited from Trace[CorePredicate, FlowMethod]

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion any2stringadd from FlowLogger to any2stringadd[FlowLogger]

Inherited by implicit conversion StringFormat from FlowLogger to StringFormat[FlowLogger]

Inherited by implicit conversion Ensuring from FlowLogger to Ensuring[FlowLogger]

Inherited by implicit conversion ArrowAssoc from FlowLogger to ArrowAssoc[FlowLogger]

Ungrouped