834
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
1 """A few little internal functions"""
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
2 import logging
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
3
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
4 def update_locals(obj, dct):
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
5 if 'self' in dct:
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
6 del dct['self']
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
7 obj.__dict__.update(dct)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
8
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
9 def LogFn(f):
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
10 def rval(*args):
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
11 f(' '.join(str(a) for a in args))
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
12 return staticmethod(rval)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
13
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
14 def add_logging(cls, name=None, level=None):
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
15 """ Add logging functions to a class: self._debug, self._info, self._warn, self._warning,
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
16 self._error.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
17
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
18 All of these functions has the same signature. They accept a variable number of positional
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
19 arguments, and print them all casted to string (and concatenated with a ' '.)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
20
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
21 :type name: str
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
22 :param name: the name of the logger.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
23
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
24 :type level: None, str, type(logging.INFO)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
25 :param level: a logging level (e.g. logging.INFO), or the name of a logging level (e.g
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
26 'INFO'). If level is None, then this function doesn't set the logging level.
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
27
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
28 """
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
29 if name is None:
|
1496
93b8373c6735
Prefix loggers with 'pylearn.' to ensure there is no conflict when using Pylearn code within another library
Olivier Delalleau <delallea@iro>
diff
changeset
|
30 name = "pylearn.shared.layers.%s" % cls.__name__
|
834
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
31 cls._logger = logging.getLogger(name)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
32 if level:
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
33 try:
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
34 level = getattr(logging, level)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
35 except:
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
36 pass
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
37 cls._logger.setLevel(level)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
38
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
39 cls._debug = LogFn(cls._logger.debug)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
40 cls._info = LogFn(cls._logger.info)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
41 cls._warn = cls._warning = LogFn(cls._logger.warn)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
42 cls._error = LogFn(cls._logger.error)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
43 cls._critical = LogFn(cls._logger.critical)
|
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
diff
changeset
|
44 cls._fatal = LogFn(cls._logger.fatal)
|