1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
# -----------------------------------------------------------------------
# Copyright: 2010-2022, imec Vision Lab, University of Antwerp
# 2013-2022, CWI, Amsterdam
#
# Contact: astra@astra-toolbox.com
# Website: http://www.astra-toolbox.com/
#
# This file is part of the ASTRA Toolbox.
#
#
# The ASTRA Toolbox 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 3 of the License, or
# (at your option) any later version.
#
# The ASTRA Toolbox 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 the ASTRA Toolbox. If not, see <http://www.gnu.org/licenses/>.
#
# -----------------------------------------------------------------------
from . import log_c as l
import inspect
def debug(message):
"""Log a debug message.
:param message: Message to log.
:type message: :class:`string`
"""
prev_f = inspect.getframeinfo(inspect.currentframe().f_back)
l.log_debug(prev_f.filename,prev_f.lineno,message)
def info(message):
"""Log an info message.
:param message: Message to log.
:type message: :class:`string`
"""
prev_f = inspect.getframeinfo(inspect.currentframe().f_back)
l.log_info(prev_f.filename,prev_f.lineno,message)
def warn(message):
"""Log a warning message.
:param message: Message to log.
:type message: :class:`string`
"""
prev_f = inspect.getframeinfo(inspect.currentframe().f_back)
l.log_warn(prev_f.filename,prev_f.lineno,message)
def error(message):
"""Log an error message.
:param message: Message to log.
:type message: :class:`string`
"""
prev_f = inspect.getframeinfo(inspect.currentframe().f_back)
l.log_error(prev_f.filename,prev_f.lineno,message)
def enable():
"""Enable logging to screen and file."""
l.log_enable()
def enableScreen():
"""Enable logging to screen."""
l.log_enableScreen()
def enableFile():
"""Enable logging to file (note that a file has to be set)."""
l.log_enableFile()
def disable():
"""Disable all logging."""
l.log_disable()
def disableScreen():
"""Disable logging to screen."""
l.log_disableScreen()
def disableFile():
"""Disable logging to file."""
l.log_disableFile()
def setFormatFile(fmt):
"""Set the format string for log messages. Here are the substitutions you may use:
%f: Source file name generating the log call.
%n: Source line number where the log call was made.
%m: The message text sent to the logger (after printf formatting).
%d: The current date, formatted using the logger's date format.
%t: The current time, formatted using the logger's time format.
%l: The log level (one of "DEBUG", "INFO", "WARN", or "ERROR").
%%: A literal percent sign.
The default format string is "%d %t %f(%n): %l: %m\n".
:param fmt: Format to use, end with "\n".
:type fmt: :class:`string`
"""
l.log_setFormatFile(fmt)
def setFormatScreen(fmt):
"""Set the format string for log messages. Here are the substitutions you may use:
%f: Source file name generating the log call.
%n: Source line number where the log call was made.
%m: The message text sent to the logger (after printf formatting).
%d: The current date, formatted using the logger's date format.
%t: The current time, formatted using the logger's time format.
%l: The log level (one of "DEBUG", "INFO", "WARN", or "ERROR").
%%: A literal percent sign.
The default format string is "%d %t %f(%n): %l: %m\n".
:param fmt: Format to use, end with "\n".
:type fmt: :class:`string`
"""
l.log_setFormatScreen(fmt)
STDOUT=1
STDERR=2
DEBUG=0
INFO=1
WARN=2
ERROR=3
def setOutputScreen(fd, level):
"""Set which screen to output to, and which level to use.
:param fd: File descriptor of output screen (STDOUT or STDERR).
:type fd: :class:`int`
:param level: Logging level to use (DEBUG, INFO, WARN, or ERROR).
:type level: :class:`int`
"""
l.log_setOutputScreen(fd, level)
def setOutputFile(filename, level):
"""Set which file to output to, and which level to use.
:param filename: File name of output file.
:type filename: :class:`string`
:param level: Logging level to use (DEBUG, INFO, WARN, or ERROR).
:type level: :class:`int`
"""
l.log_setOutputFile(filename, level)
class AstraError(Exception):
def __init__(self, message='', append_log=False):
"""Error in Astra Toolbox operation.
:param message: Error message, defaults to empty string.
:type message: str, optional
:param append_log: Append last error message recorded by the Astra
shared library to the Python error message, defaults to False.
:type append_log: bool, optional
"""
if append_log:
last_err_msg = l.log_getLastErrMsg()
if last_err_msg:
message += ': ' + last_err_msg
super(AstraError, self).__init__(message)
|