Examples¶
These files can be found in the docs/source/examples directory of the git source of this project. They can also be found in the online git repository of this project.
python_logging.py¶
1# Copyright (c) 2016 OpenStack Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15"""A syntax example of Python Logging"""
16
17import logging
18
19LOG = logging.getLogger(__name__)
20
21# Define a default handler at INFO logging level
22logging.basicConfig(level=logging.INFO)
23
24LOG.info("Python Standard Logging")
25LOG.warning("Python Standard Logging")
26LOG.error("Python Standard Logging")
oslo_logging.py¶
# Copyright (c) 2016 OpenStack Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""A minimal syntax example of Oslo Logging"""
from oslo_config import cfg
from oslo_log import log as logging
LOG = logging.getLogger(__name__)
CONF = cfg.CONF
DOMAIN = "demo"
logging.register_options(CONF)
logging.setup(CONF, DOMAIN)
# Oslo Logging uses INFO as default
LOG.info("Oslo Logging")
LOG.warning("Oslo Logging")
LOG.error("Oslo Logging")
usage.py¶
1# Copyright (c) 2016 OpenStack Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15"""A usage example of Oslo Logging
16
17This example requires the following package to be installed.
18
19$ pip install oslo.log
20
21Additional Oslo packages installed include oslo.config, oslo.context,
22oslo.i18n, oslo.serialization and oslo.utils.
23
24More information about Oslo Logging can be found at:
25
26 https://docs.openstack.org/oslo.log/latest/user/index.html
27"""
28
29from oslo_config import cfg
30from oslo_log import log as logging
31
32LOG = logging.getLogger(__name__)
33CONF = cfg.CONF
34DOMAIN = 'demo'
35
36
37def prepare():
38 """Prepare Oslo Logging (2 or 3 steps)
39
40 Use of Oslo Logging involves the following:
41
42 * logging.register_options
43 * logging.set_defaults (optional)
44 * logging.setup
45 """
46
47 # Required step to register common, logging and generic configuration
48 # variables
49 logging.register_options(CONF)
50
51 # Optional step to set new defaults if necessary for
52 # * logging_context_format_string
53 # * default_log_levels
54 #
55 # These variables default to respectively:
56 #
57 # import oslo_log
58 # oslo_log._options.DEFAULT_LOG_LEVELS
59 # oslo_log._options.log_opts[0].default
60 #
61
62 extra_log_level_defaults = [
63 'dogpile=INFO',
64 'routes=INFO'
65 ]
66
67 logging.set_defaults(
68 default_log_levels=logging.get_default_log_levels() +
69 extra_log_level_defaults)
70
71 # Required setup based on configuration and domain
72 logging.setup(CONF, DOMAIN)
73
74
75if __name__ == '__main__':
76 prepare()
77 # NOTE: These examples do not demonstration Oslo i18n messages
78
79 LOG.info("Welcome to Oslo Logging")
80 LOG.debug("A debugging message")
81 LOG.warning("A warning occurred")
82 LOG.error("An error occurred")
83 try:
84 raise Exception("This is exceptional")
85 except Exception:
86 LOG.exception("An Exception occurred")
usage_helper.py¶
1# Copyright (c) 2016 OpenStack Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15"""A usage example with helper debugging of minimum Oslo Logging
16
17This example requires the following package to be installed.
18
19$ pip install oslo.log
20
21Additional Oslo packages installed include oslo.config, oslo.context,
22oslo.i18n, oslo.serialization and oslo.utils.
23
24More information about Oslo Logging can be found at:
25
26 https://docs.openstack.org/oslo.log/latest/user/index.html
27"""
28
29# Use default Python logging to display running output
30import logging as py_logging
31from oslo_config import cfg
32from oslo_log import log as logging
33
34
35LOG = py_logging.getLogger(__name__)
36CONF = cfg.CONF
37DOMAIN = "demo"
38
39
40def prepare():
41 """Prepare Oslo Logging (2 or 3 steps)
42
43 Use of Oslo Logging involves the following:
44
45 * logging.register_options
46 * logging.set_defaults (optional)
47 * logging.setup
48 """
49
50 LOG.debug("Prepare Oslo Logging")
51
52 LOG.info("Size of configuration options before %d", len(CONF))
53
54 # Required step to register common, logging and generic configuration
55 # variables
56 logging.register_options(CONF)
57
58 LOG.info("Size of configuration options after %d", len(CONF))
59
60 # Optional step to set new defaults if necessary for
61 # * logging_context_format_string
62 # * default_log_levels
63 #
64 # These variables default to respectively:
65 #
66 # import oslo_log
67 # oslo_log._options.DEFAULT_LOG_LEVELS
68 # oslo_log._options.log_opts[0].default
69 #
70
71 custom_log_level_defaults = logging.get_default_log_levels() + [
72 'dogpile=INFO',
73 'routes=INFO'
74 ]
75
76 logging.set_defaults(default_log_levels=custom_log_level_defaults)
77
78 # NOTE: We cannot show the contents of the CONF object
79 # after register_options() because accessing this caches
80 # the default_log_levels subsequently modified with set_defaults()
81 LOG.info("List of Oslo Logging configuration options and current values")
82 LOG.info("=" * 80)
83 for c in CONF:
84 LOG.info("{} = {}".format(c, CONF[c]))
85 LOG.info("=" * 80)
86
87 # Required setup based on configuration and domain
88 logging.setup(CONF, DOMAIN)
89
90
91if __name__ == '__main__':
92 py_logging.basicConfig(level=py_logging.DEBUG)
93
94 prepare()
95 # NOTE: These examples do not demonstration Oslo i18n messages
96 LOG.info("Welcome to Oslo Logging")
97 LOG.debug("A debugging message")
98 LOG.warning("A warning occurred")
99 LOG.error("An error occurred")
100 try:
101 raise Exception("This is exceptional")
102 except Exception:
103 LOG.exception("An Exception occurred")
usage_context.py¶
1# Copyright (c) 2016 OpenStack Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15"""A usage example of Oslo Logging with context
16
17This example requires the following package to be installed.
18
19$ pip install oslo.log
20
21Additional Oslo packages installed include oslo.config, oslo.context,
22oslo.i18n, oslo.serialization and oslo.utils.
23
24More information about Oslo Logging can be found at:
25
26 https://docs.openstack.org/oslo.log/latest/user/index.html
27 https://docs.openstack.org/oslo.context/latest/user/index.html
28"""
29
30from oslo_config import cfg
31from oslo_context import context
32from oslo_log import log as logging
33
34LOG = logging.getLogger(__name__)
35CONF = cfg.CONF
36DOMAIN = 'demo'
37
38
39def prepare():
40 """Prepare Oslo Logging (2 or 3 steps)
41
42 Use of Oslo Logging involves the following:
43
44 * logging.register_options
45 * logging.set_defaults (optional)
46 * logging.setup
47 """
48
49 # Required step to register common, logging and generic configuration
50 # variables
51 logging.register_options(CONF)
52
53 # Optional step to set new defaults if necessary for
54 # * logging_context_format_string
55 # * default_log_levels
56 #
57 # These variables default to respectively:
58 #
59 # import oslo_log
60 # oslo_log._options.DEFAULT_LOG_LEVELS
61 # oslo_log._options.log_opts[0].default
62 #
63
64 extra_log_level_defaults = [
65 'dogpile=INFO',
66 'routes=INFO'
67 ]
68
69 logging.set_defaults(
70 default_log_levels=logging.get_default_log_levels() +
71 extra_log_level_defaults)
72
73 # Required setup based on configuration and domain
74 logging.setup(CONF, DOMAIN)
75
76
77if __name__ == '__main__':
78 prepare()
79
80 LOG.info("Welcome to Oslo Logging")
81 LOG.info("Without context")
82 context.RequestContext(user='6ce90b4d',
83 tenant='d6134462',
84 domain='a6b9360e')
85 LOG.info("With context")