Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
ccd8bc8a
Commit
ccd8bc8a
authored
Apr 06, 2010
by
Vinay Sajip
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #8327: logging: Clarification of propagation functionality in documentation.
parent
ad971d62
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
13 deletions
+16
-13
Doc/library/logging.rst
Doc/library/logging.rst
+16
-13
No files found.
Doc/library/logging.rst
View file @
ccd8bc8a
...
...
@@ -251,11 +251,11 @@ hierarchical structures. Multiple calls to :func:`getLogger` with the same name
will
return
a
reference
to
the
same
logger
object
.
Loggers
that
are
further
down
in
the
hierarchical
list
are
children
of
loggers
higher
up
in
the
list
.
For
example
,
given
a
logger
with
a
name
of
``
foo
``,
loggers
with
names
of
``
foo
.
bar
``,
``
foo
.
bar
.
baz
``,
and
``
foo
.
bam
``
are
all
children
of
``
foo
``.
Child
loggers
propagate
messages
up
to
the
ir
parent
loggers
.
Because
of
this
,
it
is
unnecessary
to
define
and
configure
all
the
loggers
an
application
uses
.
It
is
sufficient
to
configure
a
top
-
level
logger
and
create
child
loggers
as
needed
.
``
foo
.
bar
``,
``
foo
.
bar
.
baz
``,
and
``
foo
.
bam
``
are
all
descendants
of
``
foo
``.
Child
loggers
propagate
messages
up
to
the
handlers
associated
with
their
ancestor
loggers
.
Because
of
this
,
it
is
unnecessary
to
define
and
configure
handlers
for
all
the
loggers
an
application
uses
.
It
is
sufficient
to
configure
handlers
for
a
top
-
level
logger
and
create
child
loggers
as
needed
.
Handlers
...
...
@@ -283,15 +283,16 @@ custom handlers) are the following configuration methods:
are
there
two
:
func
:`
setLevel
`
methods
?
The
level
set
in
the
logger
determines
which
severity
of
messages
it
will
pass
to
its
handlers
.
The
level
set
in
each
handler
determines
which
messages
that
handler
will
send
on
.
:
func
:`
setFormatter
`
selects
a
Formatter
object
for
this
handler
to
use
.
*
:
func
:`
setFormatter
`
selects
a
Formatter
object
for
this
handler
to
use
.
*
:
func
:`
addFilter
`
and
:
func
:`
removeFilter
`
respectively
configure
and
deconfigure
filter
objects
on
handlers
.
Application
code
should
not
directly
instantiate
and
use
handlers
.
Instead
,
the
:
class
:`
Handler
`
class
is
a
base
class
that
defines
the
interface
that
all
Handlers
should
have
and
establishes
some
default
behavior
that
child
classes
can
use
(
or
override
).
Application
code
should
not
directly
instantiate
and
use
instances
of
:
class
:`
Handler
`
.
Instead
,
the
:
class
:`
Handler
`
class
is
a
base
class
that
defines
the
interface
that
all
Handlers
should
have
and
establishes
some
default
behavior
that
child
classes
can
use
(
or
override
).
Formatters
...
...
@@ -523,7 +524,9 @@ support desk staff, system administrators, developers). Handlers are passed
can have zero, one or more handlers associated with it (via the
:meth:`addHandler` method of :class:`Logger`). In addition to any handlers
directly associated with a logger, *all handlers associated with all ancestors
of the logger* are called to dispatch the message.
of the logger* are called to dispatch the message (unless the *propagate* flag
for a logger is set to a false value, at which point the passing to ancestor
handlers stops).
Just as for loggers, handlers can have levels associated with them. A handler'
s
level
acts
as
a
filter
in
the
same
way
as
a
logger
's level does. If a handler
...
...
@@ -854,8 +857,8 @@ instantiated directly, but always through the module-level function
.. attribute:: Logger.propagate
If this evaluates to false, logging messages are not passed by this logger or by
child loggers to higher level (ancestor) loggers. The constructor sets this
attribute to 1.
its child loggers to the handlers of higher level (ancestor) loggers. The
constructor sets this
attribute to 1.
.. method:: Logger.setLevel(lvl)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment