summaryrefslogtreecommitdiffstats
path: root/python/astra/log.py
blob: d023afba847fba0a7f19134e146cf6ddaa4d7a7b (plain)
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
# -----------------------------------------------------------------------
# Copyright: 2010-2021, imec Vision Lab, University of Antwerp
#            2013-2021, 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)