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
|
# -*- python -*-
#
# This file is part of easydev software
#
# Copyright (c) 2012-2014
#
# File author(s): Thomas Cokelaer <cokelaer@gmail.com>
#
# Distributed under the GPLv3 License.
# See accompanying file LICENSE.txt or copy at
# http://www.gnu.org/licenses/gpl-3.0.html
#
# Website: https://github.com/cokelaer/easydev
#
##############################################################################
# import logging
import colorlog
__all__ = ["Logging"]
colors = {
"DEBUG": "cyan",
"INFO": "green",
"WARNING": "yellow",
"ERROR": "red",
"CRITICAL": "bold_red",
}
class Logging(object):
"""logging utility.
::
>>> l = Logging("root", "INFO")
>>> l.info("test")
INFO:root:test
>>> l.level = "WARNING"
>>> l.info("test")
"""
def __init__(self, name="root", level="WARNING", text_color="blue"):
self._name = name
self.formatter = colorlog.ColoredFormatter(
"%(log_color)s%(levelname)-8s[%(name)s:%(lineno)d]: %(reset)s %({})s%(message)s".format(
text_color
),
datefmt=None,
reset=True,
log_colors=colors,
secondary_log_colors={},
style="%",
)
self._set_name(name)
logger = colorlog.getLogger(self._name)
handler = colorlog.StreamHandler()
handler.setFormatter(self.formatter)
logger.addHandler(handler)
def _set_name(self, name):
level = self.level
self._name = name
logger = colorlog.getLogger(self._name)
if level == 0:
self._set_level("WARNING")
else:
self._set_level(level)
def _get_name(self):
return self._name
name = property(_get_name, _set_name)
def _set_level(self, level):
if isinstance(level, bool):
if level is True:
level = "INFO"
if level is False:
level = "ERROR"
if level == 10:
level = "DEBUG"
if level == 20:
level = "INFO"
if level == 30:
level = "WARNING"
if level == 40:
level = "ERROR"
if level == 50:
level = "CRITICAL"
colorlog.getLogger(self.name).setLevel(level)
def _get_level(self):
level = colorlog.getLogger(self.name).level
if level == 10:
return "DEBUG"
elif level == 20:
return "INFO"
elif level == 30:
return "WARNING"
elif level == 40:
return "ERROR"
elif level == 50:
return "CRITICAL"
else:
return level
level = property(_get_level, _set_level)
def debug(self, msg):
colorlog.getLogger(self.name).debug(msg)
def info(self, msg):
colorlog.getLogger(self.name).info(msg)
def warning(self, msg):
colorlog.getLogger(self.name).warning(msg)
def critical(self, msg):
colorlog.getLogger(self.name).critical(msg)
def error(self, msg):
colorlog.getLogger(self.name).error(msg)
|