forked from degauden/Elements
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathLogging.py
More file actions
73 lines (59 loc) · 2.47 KB
/
Copy pathLogging.py
File metadata and controls
73 lines (59 loc) · 2.47 KB
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
#
# Copyright (C) 2012-2020 Euclid Science Ground Segment
#
# This library is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 3.0 of the License, or (at your option)
# any later version.
#
# This library 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 Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
'''
:file: ElementsKernel/Logging.py
:date: Apr 29, 2016
:author: Hubert Degaudenzi
'''
import logging
# Check we are running for the first time. If we are we need to change a bit the
# naming of the logging levels to match the ones of the C++
if logging.getLevelName(logging.CRITICAL) == 'CRITICAL':
logging.addLevelName(50, 'FATAL')
logging.addLevelName(40, 'ERROR')
logging.addLevelName(30, 'WARN')
logging.addLevelName(20, 'INFO')
logging.addLevelName(10, 'DEBUG')
_formatter = logging.Formatter(fmt='%(asctime)s %(name)s %(levelname)5s : %(message)s', datefmt='%Y-%m-%dT%X%Z')
# Check if we have the console logger set already. This might happen if the
# user reloads the module using the reload() method.
if not [h for h in logging.getLogger().handlers if h.get_name() == 'console']:
# Set the default logging level
logging.getLogger().setLevel(logging.INFO)
# Add the stderr log handler
_console = logging.StreamHandler()
_console.set_name('console')
_console.setFormatter(_formatter)
logging.getLogger().addHandler(_console)
def getLogger(name=None):
""" Forward call to logging.getLogger"""
return logging.getLogger(name)
def setLevel(level):
""" Forward call to logging.getLogger().setLevel"""
logging.getLogger().setLevel(level)
def setLogFile(filename):
"""Set the log file name"""
# If we already have a file appenders remove them
for hd in [hl for hl in logging.getLogger().handlers if hl.get_name() == 'file']:
logging.getLogger().removeHandler(hd)
hd.close()
# Add the new file handler
hd = logging.FileHandler(filename)
hd.set_name('file')
hd.setFormatter(_formatter)
logging.getLogger().addHandler(hd)