##// END OF EJS Templates
IPython.config.application.Application updates....
Brian Granger -
Show More
@@ -19,11 +19,12 b' Authors:'
19 19 #-----------------------------------------------------------------------------
20 20
21 21 from copy import deepcopy
22 import logging
22 23 import sys
23 24
24 from IPython.config.configurable import Configurable
25 from IPython.config.configurable import SingletonConfigurable
25 26 from IPython.utils.traitlets import (
26 Unicode, List
27 Unicode, List, Int
27 28 )
28 29 from IPython.config.loader import (
29 30 KeyValueConfigLoader, PyFileConfigLoader
@@ -34,7 +35,7 b' from IPython.config.loader import ('
34 35 #-----------------------------------------------------------------------------
35 36
36 37
37 class Application(Configurable):
38 class Application(SingletonConfigurable):
38 39
39 40 # The name of the application, will usually match the name of the command
40 41 # line application
@@ -51,11 +52,32 b' class Application(Configurable):'
51 52 # The version string of this application.
52 53 version = Unicode(u'0.0')
53 54
55 log_level = Int(logging.WARN, config=True, shortname="log_level")
56
54 57 def __init__(self, **kwargs):
55 Configurable.__init__(self, **kwargs)
58 SingletonConfigurable.__init__(self, **kwargs)
56 59 # Add my class to self.classes so my attributes appear in command line
57 60 # options.
58 61 self.classes.insert(0, self.__class__)
62 self.init_logging()
63
64 def init_logging(self):
65 """Start logging for this application.
66
67 The default is to log to stdout using a StreaHandler. The log level
68 starts at loggin.WARN, but this can be adjusted by setting the
69 ``log_level`` attribute.
70 """
71 self.log = logging.getLogger(self.__class__.__name__)
72 self.log.setLevel(self.log_level)
73 self._log_handler = logging.StreamHandler()
74 self._log_formatter = logging.Formatter("[%(name)s] %(message)s")
75 self._log_handler.setFormatter(self._log_formatter)
76 self.log.addHandler(self._log_handler)
77
78 def _log_level_changed(self, name, old, new):
79 """Adjust the log level when log_level is set."""
80 self.log.setLevel(new)
59 81
60 82 def print_help(self):
61 83 """Print the help for each Configurable class in self.classes."""
General Comments 0
You need to be logged in to leave comments. Login now