X-Git-Url: https://scm.cri.ensmp.fr/git/GroupUserFolder.git/blobdiff_plain/e9d14b6b5cc9cd4775c60cb340b5c4c787536fc3:/Log.py..3e1ba4932c34812cf2f6f3569b0f0dbea97b7a0b:/Products/GroupUserFolder/static/gitweb.css diff --git a/Log.py b/Log.py deleted file mode 100644 index 9da05b5..0000000 --- a/Log.py +++ /dev/null @@ -1,195 +0,0 @@ -# -*- coding: utf-8 -*- -## GroupUserFolder -## Copyright (C)2006 Ingeniweb - -## 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; see the file COPYING. If not, write to the -## Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -""" -One can override the following variables : - -LOG_LEVEL : The log level, from 0 to 5. -A Log level n implies all logs from 0 to n. -LOG_LEVEL MUST BE OVERRIDEN !!!!! - - -LOG_NONE = 0 => No log output -LOG_CRITICAL = 1 => Critical problems (data consistency, module integrity, ...) -LOG_ERROR = 2 => Error (runtime exceptions, ...) -LOG_WARNING = 3 => Warning (non-blocking exceptions, ...) -LOG_NOTICE = 4 => Notices (Special conditions, ...) -LOG_DEBUG = 5 => Debug (Debugging information) - - -LOG_PROCESSOR : A dictionnary holding, for each key, the data processor. -A data processor is a function that takes only one parameter : the data to print. -Default : LogFile for all keys. -""" -__version__ = "$Revision: $" -# $Source: $ -# $Id: Log.py 33389 2006-11-11 11:24:41Z shh42 $ -__docformat__ = 'restructuredtext' - - - -LOG_LEVEL = -1 - -LOG_NONE = 0 -LOG_CRITICAL = 1 -LOG_ERROR = 2 -LOG_WARNING = 3 -LOG_NOTICE = 4 -LOG_DEBUG = 5 - -from sys import stdout, stderr, exc_info -import time -import thread -import threading -import traceback -import os -import pprint -import string - -LOG_STACK_DEPTH = [-2] - -def Log(level, *args): - """ - Log(level, *args) => Pretty-prints data on the console with additional information. - """ - if LOG_LEVEL and level <= LOG_LEVEL: - if not level in LOG_PROCESSOR.keys(): - raise ValueError, "Invalid log level :", level - - stack = "" - stackItems = traceback.extract_stack() - for depth in LOG_STACK_DEPTH: - stackItem = stackItems[depth] - stack = "%s%s:%s:" % (stack, os.path.basename(stackItem[0]), stackItem[1],) - pr = "%8s %s%s: " % ( - LOG_LABEL[level], - stack, - time.ctime(time.time()), - ) - for data in args: - try: - if "\n" in data: - data = data - else: - data = pprint.pformat(data) - except: - data = pprint.pformat(data) - pr = pr + data + " " - - LOG_PROCESSOR[level](level, LOG_LABEL[level], pr, ) - -def LogCallStack(level, *args): - """ - LogCallStack(level, *args) => View the whole call stack for the specified call - """ - if LOG_LEVEL and level <= LOG_LEVEL: - if not level in LOG_PROCESSOR.keys(): - raise ValueError, "Invalid log level :", level - - stack = string.join(traceback.format_list(traceback.extract_stack()[:-1])) - pr = "%8s %s:\n%s\n" % ( - LOG_LABEL[level], - time.ctime(time.time()), - stack - ) - for data in args: - try: - if "\n" in data: - data = data - else: - data = pprint.pformat(data) - except: - data = pprint.pformat(data) - pr = pr + data + " " - - LOG_PROCESSOR[level](level, LOG_LABEL[level], pr, ) - - - -def FormatStack(stack): - """ - FormatStack(stack) => string - - Return a 'loggable' version of the stack trace - """ - ret = "" - for s in stack: - ret = ret + "%s:%s:%s: %s\n" % (os.path.basename(s[0]), s[1], s[2], s[3]) - return ret - - -def LogException(): - """ - LogException () => None - - Print an exception information on the console - """ - Log(LOG_NOTICE, "EXCEPTION >>>") - traceback.print_exc(file = LOG_OUTPUT) - Log(LOG_NOTICE, "<<< EXCEPTION") - - -LOG_OUTPUT = stderr -def LogFile(level, label, data, ): - """ - LogFile : writes data to the LOG_OUTPUT file. - """ - LOG_OUTPUT.write(data+'\n') - LOG_OUTPUT.flush() - - -import logging - -CUSTOM_TRACE = 5 -logging.addLevelName('TRACE', CUSTOM_TRACE) - -zLogLevelConverter = { - LOG_NONE: CUSTOM_TRACE, - LOG_CRITICAL: logging.CRITICAL, - LOG_ERROR: logging.ERROR, - LOG_WARNING: logging.WARNING, - LOG_NOTICE: logging.INFO, - LOG_DEBUG: logging.DEBUG, - } - -def LogzLog(level, label, data, ): - """ - LogzLog : writes data though Zope's logging facility - """ - logger = logging.getLogger('GroupUserFolder') - logger.log(zLogLevelConverter[level], data + "\n", ) - - - -LOG_PROCESSOR = { - LOG_NONE: LogzLog, - LOG_CRITICAL: LogzLog, - LOG_ERROR: LogzLog, - LOG_WARNING: LogzLog, - LOG_NOTICE: LogzLog, - LOG_DEBUG: LogFile, - } - - -LOG_LABEL = { - LOG_NONE: "", - LOG_CRITICAL: "CRITICAL", - LOG_ERROR: "ERROR ", - LOG_WARNING: "WARNING ", - LOG_NOTICE: "NOTICE ", - LOG_DEBUG: "DEBUG ", - }