degal/log.py
branchuse-distutils
changeset 41 3b1579a7bffb
parent 30 b1d5c32ab771
child 44 533b7e8b5d3b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/degal/log.py	Wed Jun 03 19:03:28 2009 +0300
@@ -0,0 +1,81 @@
+# DeGAL - A pretty simple web image gallery
+# Copyright (C) 2007 Tero Marttila
+# http://marttila.de/~terom/degal/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+
+import logging, sys
+
+log_level = logging.INFO
+stack = []
+
+class g :
+    out_depth = 0
+    node = None
+
+def title (title, *args) :
+    stack.append(title)
+
+    print "%s - %s" % (" "*g.out_depth, title % args)
+
+    g.out_depth += 1
+
+def down (dir_name, *args) :
+    stack.append(dir_name % args)
+    g.node = None
+
+def next (fname, *args) :
+    g.node = fname % args
+
+def up () :
+    stack.pop(-1)
+    g.node = None
+    g.out_depth = min(g.out_depth, len(stack))
+
+def done () :
+    print "done"
+
+def log (level, message, *args, **kwargs) :
+    wait = kwargs.get("wait", False)
+
+    if level >= log_level :
+        if g.out_depth != len(stack) :
+            for segment in stack[g.out_depth:] :
+                print "%sd %s" % (" "*g.out_depth, segment)
+                g.out_depth += 1
+
+        if g.node :
+            print "%sf %s" % (" "*g.out_depth, g.node)
+            g.node = None
+        
+        if wait :
+            print "%s - %s..." % (" "*g.out_depth, message % args),
+            sys.stdout.flush()
+        else :
+            print "%s - %s" % (" "*g.out_depth, message % args)
+
+def _level (level) :
+    def _log_func (message, *args, **kwargs) :
+        log(level, message, *args, **kwargs)
+    
+    return _log_func
+
+debug       = _level(logging.DEBUG)
+info        = _level(logging.INFO)
+warning     = _level(logging.WARNING)
+error       = _level(logging.ERROR)
+