MCPcopy Create free account
hub / github.com/SpaceNetLab/StarryNet / StarrynetLogger

Class StarrynetLogger

starrynet/log.py:75–145  ·  view source on GitHub ↗

Starrynet-specific logger Enable each starrynet .py file to with one import: from starrynet.log import [lg, info, error] ...get a default logger that doesn't require one newline per logging call. Inherit from object to ensure that we have at least one new-style

Source from the content-addressed store, hash-verified

73
74
75class StarrynetLogger(Logger, object):
76 """Starrynet-specific logger
77 Enable each starrynet .py file to with one import:
78
79 from starrynet.log import [lg, info, error]
80
81 ...get a default logger that doesn't require one newline per logging
82 call.
83
84 Inherit from object to ensure that we have at least one new-style base
85 class, and can then use the __metaclass__ directive, to prevent this
86 error:
87
88 TypeError: Error when calling the metaclass bases
89 a new-style class can't have only classic bases
90
91 If Python2.5/logging/__init__.py defined Filterer as a new-style class,
92 via Filterer( object ): rather than Filterer, we wouldn't need this.
93
94 Use singleton pattern to ensure only one logger is ever created."""
95
96 __metaclass__ = Singleton
97
98 def __init__(self):
99
100 Logger.__init__(self, "starrynet")
101
102 # create console handler
103 ch = StreamHandlerNoNewline()
104 # create formatter
105 formatter = logging.Formatter(LOGMSGFORMAT)
106 # add formatter to ch
107 ch.setFormatter(formatter)
108 # add ch to lg
109 self.addHandler(ch)
110
111 self.setLogLevel()
112
113 def setLogLevel(self, levelname=None):
114 """Setup loglevel.
115 Convenience function to support lowercase names.
116 levelName: level name from LEVELS"""
117 level = LOGLEVELDEFAULT
118 if levelname is not None:
119 if levelname not in LEVELS:
120 raise Exception('unknown levelname seen in setLogLevel')
121 else:
122 level = LEVELS.get(levelname, level)
123
124 self.setLevel(level)
125 self.handlers[0].setLevel(level)
126
127 # pylint: disable=method-hidden
128 # "An attribute inherited from starrynet.log hide this method" (sic)
129 # Not sure why this is occurring - this function definitely gets called.
130
131 # See /usr/lib/python2.5/logging/__init__.py; modified from warning()
132 def output(self, msg, *args, **kwargs):

Callers 1

log.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected