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