#! /usr/bin/env fan
//
// Copyright (c) 2007, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 23 Jul 07 Brian Frank Creation
// 08 Sep 09 Brian Frank Rework fandoc -> example
//
**
** Working with sys::Log
**
class Logging
{
// get or create a log named "acme"
const static Log log := Log.get("acme")
Void main()
{
// list all the active logs
echo("\n--- Log.list ---")
echo(Log.list.join("\n"))
// get the standard log for a type's pod
echo("\n--- sysLog ---")
echo(Str#.pod.log)
echo(Pod.of("foo").log)
// find an existing log
echo("\n--- find existing ---")
log := Log.find("acme")
echo(log)
// log at different levels
echo("\n--- logging ---")
log.err("The freaking file didn't load", IOErr())
log.info("CatchRoadRoader service started")
log.warn("Something fishy is going on here")
log.debug("Not logged by default")
// setting log level
echo("\n--- log level ---")
echo("old level = $log.level")
log.level = LogLevel.debug
echo("new level = $log.level")
// this code performs string concatenation on every call
x := 1; y := 2; z := 3
log.debug("The vals are x=$x, y=$y, and z=$z")
// this code performs string concatenation only when needed
if (log.isDebug)
log.debug("The vals are x=$x, y=$y, and z=$z")
// installing log handler
echo("\n--- installing log handler ---")
Log.addHandler |rec| { echo("My Handler: $rec") }
log.info("log with handler!")
}
}