| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | /******************************************************************************* copyright: Copyright (c) 2004 Kris Bell. All rights reserved license: BSD style: $(LICENSE) version: Nov 2005: split from Configurator.d verison: Feb 2007: removed default console configuration author: Kris *******************************************************************************/ module tango.util.log.ConfigProps; private import tango.util.log.Log; private import tango.io.stream.Map, tango.io.device.File; /******************************************************************************* A utility class for initializing the basic behaviour of the default logging hierarchy. ConfigProps parses a much simplified version of the property file. Tango.log only supports the settings of Logger levels at this time, and setup of Appenders and Layouts are currently done "in the code" *******************************************************************************/ struct ConfigProps { /*********************************************************************** Add a default StdioAppender, with a SimpleTimerLayout, to the root node. The activity levels of all nodes are set via a property file with name=value pairs specified in the following format: name: the actual logger name, in dot notation format. The name "root" is reserved to match the root logger node. value: one of TRACE, INFO, WARN, ERROR, FATAL or NONE (or the lowercase equivalents). For example, the declaration --- tango.unittest = INFO myApp.SocketActivity = TRACE --- sets the level of the loggers called tango.unittest and myApp.SocketActivity ***********************************************************************/ static void opCall (char[] path) { auto input = new MapInput!(char)(new File(path)); scope (exit) input.close(); // read and parse properties from file foreach (name, value; input) { auto log = (name == "root") ? Log.root : Log.lookup (name); if (log) log.level (Log.convert (value)); } } } |