Logger without location awareness
Logger using slf4j's location aware logger.
Logger using slf4j's location aware logger.
Main Logger API.
Main Logger API. Base class for loggers
Note: Don't use this class directly, use the com.metamx.common.scala.Logging trait instead.
Walkers provide a mechanism for walking through an underlying listish thing, exposed as a "foreach" method.
Walkers provide a mechanism for walking through an underlying listish thing, exposed as a "foreach" method. They do not return iterators, nor do they allow random access. This allows them to guarantee post-iteration cleanup actions on the underlying resource, which will occur even if exceptions are thrown while walking.
Walkers can be constructed such that the "foreach" method can only be called once. In that case, subsequent calls should throw an IllegalStateException. Walkers can also be constructed with "foreach" methods that can be called multiple times. In that case, each run should create and then clean up the resource-- saving state across runs is usually counterproductive.
A late val is a single-assignment val that can be assigned after definition.
A late val is a single-assignment val that can be assigned after definition. Subsequent assignments raise an error, and dereferencing a late val before assignment also raises an error.
val x = new LateVal[Int] ... x.deref // BAD x.assign(3) // Good x.deref // Good x.assign(4) // BAD
A LateVal[X] can be used as an X, via the implicit conversion LateVal. Moreover, the method names LateVal.assign and LateVal.deref are chosen to minimize shadowing whatever methods will be available on X; in particular, LateVal.set and LateVal.get would shadow methods for many common choices of X.
val x = new LateVal[Int] x.assign(3) x + 1
val x = new LateVal[Map[Int, String]] x.assign(Map(1 -> "one")) x.get(1)
Factory for concrete Logger instances
Works with "untyped" to make it easier to extract specific things from nested, untyped structures.
Works with "untyped" to make it easier to extract specific things from nested, untyped structures.
Somewhat experimental API; if this proves useful, we'll keep it.
Logger without location awareness