[794894]: / arm_model / logger.py

Download this file

116 lines (89 with data), 3.1 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
 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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
import logging
# import os
# import sys
# from logging.handlers import RotatingFileHandler
# try:
# LOG_FILENAME = os.path.splitext(__file__)[0] + ".log"
# except:
# LOG_FILENAME = os.getcwd() + "/logging.log"
class Singleton(object):
"""
Singleton interface:
http://www.python.org/download/releases/2.2.3/descrintro/#__new__
"""
def __new__(cls, *args, **kwds):
it = cls.__dict__.get("__it__")
if it is not None:
return it
cls.__it__ = it = object.__new__(cls)
it.init(*args, **kwds)
return it
def init(self, *args, **kwds):
pass
class LoggerManager(Singleton):
"""
Logger Manager.
Handles all logging files.
"""
def init(self, loggername):
logging.basicConfig(
format='[%(asctime)s] [%(levelname)s] [@%(name)s] # %(message)s',
# format='[%(asctime)s] [@%(filename)s:%(lineno)ds] [%(levelname)-8s] # %(message)s',
datefmt='%F %H:%M:%S',
# filename='example.log',
level=logging.DEBUG)
self.logger = logging.getLogger(loggername)
# rhandler = None
# try:
# rhandler = RotatingFileHandler(
# LOG_FILENAME,
# mode='a',
# maxBytes=10 * 1024 * 1024,
# backupCount=5
# )
# except:
# raise IOError("Couldn't create/open file \"" +
# LOG_FILENAME + "\". Check permissions.")
# self.logger.setLevel(logging.DEBUG)
# formatter = logging.Formatter(
# fmt='[%(asctime)s] [%(filename)s:%(lineno)d] [%(levelname)-8s] %(message)s',
# datefmt='%F %H:%M:%S'
# )
# rhandler.setFormatter(formatter)
# self.logger.addHandler(rhandler)
def debug(self, loggername, msg):
self.logger = logging.getLogger(loggername)
self.logger.debug(msg)
def error(self, loggername, msg):
self.logger = logging.getLogger(loggername)
self.logger.error(msg)
def info(self, loggername, msg):
self.logger = logging.getLogger(loggername)
self.logger.info(msg)
def warning(self, loggername, msg):
self.logger = logging.getLogger(loggername)
self.logger.warning(msg)
class Logger(object):
"""
Logger object.
"""
def __init__(self, loggername="root"):
self.lm = LoggerManager(loggername) # LoggerManager instance
self.loggername = loggername # logger name
def debug(self, msg):
self.lm.debug(self.loggername, msg)
def error(self, msg):
self.lm.error(self.loggername, msg)
def info(self, msg):
self.lm.info(self.loggername, msg)
def warning(self, msg):
self.lm.warning(self.loggername, msg)
class TestLogger(unittest.TestCase):
def test_creation(self):
logger = Logger()
logger.debug("this test")
if __name__ == '__main__':
unittest.main()