Skip to content

Commit 0052c7d

Browse files
committed
Logging
1 parent 098e8d5 commit 0052c7d

File tree

2 files changed

+49
-49
lines changed

2 files changed

+49
-49
lines changed

README.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2234,35 +2234,35 @@ match <object/expression>:
22342234
Logging
22352235
-------
22362236
```python
2237-
import logging
2237+
import logging as log
22382238
```
22392239

22402240
```python
2241-
logging.basicConfig(filename=<path>, level='DEBUG') # Configures the root logger (see Setup).
2242-
logging.debug/info/warning/error/critical(<str>) # Logs to the root logger.
2243-
<Logger> = logging.getLogger(__name__) # Logger named after the module.
2244-
<Logger>.<level>(<str>) # Logs to the logger.
2245-
<Logger>.exception(<str>) # Error() that appends caught exception.
2241+
log.basicConfig(filename=<path>, level='DEBUG') # Configures the root logger (see Setup).
2242+
log.debug/info/warning/error/critical(<str>) # Logs to the root logger.
2243+
<Logger> = log.getLogger(__name__) # Logger named after the module.
2244+
<Logger>.<level>(<str>) # Logs to the logger.
2245+
<Logger>.exception(<str>) # Error() that appends caught exception.
22462246
```
22472247

22482248
### Setup
22492249
```python
2250-
logging.basicConfig(
2251-
filename=None, # Logs to stderr or appends to file.
2252-
format='%(levelname)s:%(name)s:%(message)s', # Add '%(asctime)s' for local datetime.
2253-
level=logging.WARNING, # Drops messages with lower priority.
2254-
handlers=[logging.StreamHandler(sys.stderr)] # Uses FileHandler if filename is set.
2250+
log.basicConfig(
2251+
filename=None, # Logs to stderr or appends to file.
2252+
format='%(levelname)s:%(name)s:%(message)s', # Add '%(asctime)s' for local datetime.
2253+
level=log.WARNING, # Drops messages with lower priority.
2254+
handlers=[log.StreamHandler(sys.stderr)] # Uses FileHandler if filename is set.
22552255
)
22562256
```
22572257

22582258
```python
2259-
<Formatter> = logging.Formatter('<format>') # Creates a Formatter.
2260-
<Handler> = logging.FileHandler(<path>, mode='a') # Creates a Handler. Also `encoding=None`.
2261-
<Handler>.setFormatter(<Formatter>) # Adds Formatter to the Handler.
2262-
<Handler>.setLevel(<int/str>) # Processes all messages by default.
2263-
<Logger>.addHandler(<Handler>) # Adds Handler to the Logger.
2264-
<Logger>.setLevel(<int/str>) # What is sent to its/ancestors' handlers.
2265-
<Logger>.propagate = <bool> # Cuts off ancestors' handlers if False.
2259+
<Formatter> = log.Formatter('<format>') # Creates a Formatter.
2260+
<Handler> = log.FileHandler(<path>, mode='a') # Creates a Handler. Also `encoding=None`.
2261+
<Handler>.setFormatter(<Formatter>) # Adds Formatter to the Handler.
2262+
<Handler>.setLevel(<int/str>) # Processes all messages by default.
2263+
<Logger>.addHandler(<Handler>) # Adds Handler to the Logger.
2264+
<Logger>.setLevel(<int/str>) # What is sent to its/ancestors' handlers.
2265+
<Logger>.propagate = <bool> # Cuts off ancestors' handlers if False.
22662266
```
22672267
* **Parent logger can be specified by naming the child logger `'<parent>.<name>'`.**
22682268
* **If logger doesn't have a set level it inherits it from the first ancestor that does.**
@@ -2271,13 +2271,13 @@ logging.basicConfig(
22712271

22722272
#### Creates a logger that writes all messages to file and sends them to the root's handler that prints warnings or higher:
22732273
```python
2274-
>>> logger = logging.getLogger('my_module')
2275-
>>> handler = logging.FileHandler('test.log', encoding='utf-8')
2276-
>>> handler.setFormatter(logging.Formatter('%(asctime)s %(levelname)s:%(name)s:%(message)s'))
2274+
>>> logger = log.getLogger('my_module')
2275+
>>> handler = log.FileHandler('test.log', encoding='utf-8')
2276+
>>> handler.setFormatter(log.Formatter('%(asctime)s %(levelname)s:%(name)s:%(message)s'))
22772277
>>> logger.addHandler(handler)
22782278
>>> logger.setLevel('DEBUG')
2279-
>>> logging.basicConfig()
2280-
>>> logging.root.handlers[0].setLevel('WARNING')
2279+
>>> log.basicConfig()
2280+
>>> log.root.handlers[0].setLevel('WARNING')
22812281
>>> logger.critical('Running out of disk space.')
22822282
CRITICAL:my_module:Running out of disk space.
22832283
>>> print(open('test.log').read())

index.html

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454

5555
<body>
5656
<header>
57-
<aside>August 18, 2024</aside>
57+
<aside>August 19, 2024</aside>
5858
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
5959
</header>
6060

@@ -1834,48 +1834,48 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
18341834
<span class="hljs-string">'README.md is a readme file that belongs to user gto.'</span>
18351835
</code></pre></div>
18361836

1837-
<div><h2 id="logging"><a href="#logging" name="logging">#</a>Logging</h2><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> logging
1837+
<div><h2 id="logging"><a href="#logging" name="logging">#</a>Logging</h2><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> logging <span class="hljs-keyword">as</span> log
18381838
</code></pre></div>
18391839

1840-
<pre><code class="python language-python hljs">logging.basicConfig(filename=&lt;path&gt;, level=<span class="hljs-string">'DEBUG'</span>) <span class="hljs-comment"># Configures the root logger (see Setup).</span>
1841-
logging.debug/info/warning/error/critical(&lt;str&gt;) <span class="hljs-comment"># Logs to the root logger.</span>
1842-
&lt;Logger&gt; = logging.getLogger(__name__) <span class="hljs-comment"># Logger named after the module.</span>
1843-
&lt;Logger&gt;.&lt;level&gt;(&lt;str&gt;) <span class="hljs-comment"># Logs to the logger.</span>
1844-
&lt;Logger&gt;.exception(&lt;str&gt;) <span class="hljs-comment"># Error() that appends caught exception.</span>
1840+
<pre><code class="python language-python hljs">log.basicConfig(filename=&lt;path&gt;, level=<span class="hljs-string">'DEBUG'</span>) <span class="hljs-comment"># Configures the root logger (see Setup).</span>
1841+
log.debug/info/warning/error/critical(&lt;str&gt;) <span class="hljs-comment"># Logs to the root logger.</span>
1842+
&lt;Logger&gt; = log.getLogger(__name__) <span class="hljs-comment"># Logger named after the module.</span>
1843+
&lt;Logger&gt;.&lt;level&gt;(&lt;str&gt;) <span class="hljs-comment"># Logs to the logger.</span>
1844+
&lt;Logger&gt;.exception(&lt;str&gt;) <span class="hljs-comment"># Error() that appends caught exception.</span>
18451845
</code></pre>
1846-
<div><h3 id="setup">Setup</h3><pre><code class="python language-python hljs">logging.basicConfig(
1847-
filename=<span class="hljs-keyword">None</span>, <span class="hljs-comment"># Logs to stderr or appends to file.</span>
1848-
format=<span class="hljs-string">'%(levelname)s:%(name)s:%(message)s'</span>, <span class="hljs-comment"># Add '%(asctime)s' for local datetime.</span>
1849-
level=logging.WARNING, <span class="hljs-comment"># Drops messages with lower priority.</span>
1850-
handlers=[logging.StreamHandler(sys.stderr)] <span class="hljs-comment"># Uses FileHandler if filename is set.</span>
1846+
<div><h3 id="setup">Setup</h3><pre><code class="python language-python hljs">log.basicConfig(
1847+
filename=<span class="hljs-keyword">None</span>, <span class="hljs-comment"># Logs to stderr or appends to file.</span>
1848+
format=<span class="hljs-string">'%(levelname)s:%(name)s:%(message)s'</span>, <span class="hljs-comment"># Add '%(asctime)s' for local datetime.</span>
1849+
level=log.WARNING, <span class="hljs-comment"># Drops messages with lower priority.</span>
1850+
handlers=[log.StreamHandler(sys.stderr)] <span class="hljs-comment"># Uses FileHandler if filename is set.</span>
18511851
)
18521852
</code></pre></div>
18531853

1854-
<pre><code class="python language-python hljs">&lt;Formatter&gt; = logging.Formatter(<span class="hljs-string">'&lt;format&gt;'</span>) <span class="hljs-comment"># Creates a Formatter.</span>
1855-
&lt;Handler&gt; = logging.FileHandler(&lt;path&gt;, mode=<span class="hljs-string">'a'</span>) <span class="hljs-comment"># Creates a Handler. Also `encoding=None`.</span>
1856-
&lt;Handler&gt;.setFormatter(&lt;Formatter&gt;) <span class="hljs-comment"># Adds Formatter to the Handler.</span>
1857-
&lt;Handler&gt;.setLevel(&lt;int/str&gt;) <span class="hljs-comment"># Processes all messages by default.</span>
1858-
&lt;Logger&gt;.addHandler(&lt;Handler&gt;) <span class="hljs-comment"># Adds Handler to the Logger.</span>
1859-
&lt;Logger&gt;.setLevel(&lt;int/str&gt;) <span class="hljs-comment"># What is sent to its/ancestors' handlers.</span>
1860-
&lt;Logger&gt;.propagate = &lt;bool&gt; <span class="hljs-comment"># Cuts off ancestors' handlers if False.</span>
1854+
<pre><code class="python language-python hljs">&lt;Formatter&gt; = log.Formatter(<span class="hljs-string">'&lt;format&gt;'</span>) <span class="hljs-comment"># Creates a Formatter.</span>
1855+
&lt;Handler&gt; = log.FileHandler(&lt;path&gt;, mode=<span class="hljs-string">'a'</span>) <span class="hljs-comment"># Creates a Handler. Also `encoding=None`.</span>
1856+
&lt;Handler&gt;.setFormatter(&lt;Formatter&gt;) <span class="hljs-comment"># Adds Formatter to the Handler.</span>
1857+
&lt;Handler&gt;.setLevel(&lt;int/str&gt;) <span class="hljs-comment"># Processes all messages by default.</span>
1858+
&lt;Logger&gt;.addHandler(&lt;Handler&gt;) <span class="hljs-comment"># Adds Handler to the Logger.</span>
1859+
&lt;Logger&gt;.setLevel(&lt;int/str&gt;) <span class="hljs-comment"># What is sent to its/ancestors' handlers.</span>
1860+
&lt;Logger&gt;.propagate = &lt;bool&gt; <span class="hljs-comment"># Cuts off ancestors' handlers if False.</span>
18611861
</code></pre>
18621862
<ul>
18631863
<li><strong>Parent logger can be specified by naming the child logger <code class="python hljs"><span class="hljs-string">'&lt;parent&gt;.&lt;name&gt;'</span></code>.</strong></li>
18641864
<li><strong>If logger doesn't have a set level it inherits it from the first ancestor that does.</strong></li>
18651865
<li><strong>Formatter also accepts: pathname, filename, funcName, lineno, thread and process.</strong></li>
18661866
<li><strong>A <code class="python hljs"><span class="hljs-string">'handlers.RotatingFileHandler'</span></code> creates and deletes log files based on 'maxBytes' and 'backupCount' arguments.</strong></li>
18671867
</ul>
1868-
<div><h4 id="createsaloggerthatwritesallmessagestofileandsendsthemtotherootshandlerthatprintswarningsorhigher">Creates a logger that writes all messages to file and sends them to the root's handler that prints warnings or higher:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>logger = logging.getLogger(<span class="hljs-string">'my_module'</span>)
1869-
<span class="hljs-meta">&gt;&gt;&gt; </span>handler = logging.FileHandler(<span class="hljs-string">'test.log'</span>, encoding=<span class="hljs-string">'utf-8'</span>)
1870-
<span class="hljs-meta">&gt;&gt;&gt; </span>handler.setFormatter(logging.Formatter(<span class="hljs-string">'%(asctime)s %(levelname)s:%(name)s:%(message)s'</span>))
1868+
<div><h4 id="createsaloggerthatwritesallmessagestofileandsendsthemtotherootshandlerthatprintswarningsorhigher">Creates a logger that writes all messages to file and sends them to the root's handler that prints warnings or higher:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>logger = log.getLogger(<span class="hljs-string">'my_module'</span>)
1869+
<span class="hljs-meta">&gt;&gt;&gt; </span>handler = log.FileHandler(<span class="hljs-string">'test.log'</span>, encoding=<span class="hljs-string">'utf-8'</span>)
1870+
<span class="hljs-meta">&gt;&gt;&gt; </span>handler.setFormatter(log.Formatter(<span class="hljs-string">'%(asctime)s %(levelname)s:%(name)s:%(message)s'</span>))
18711871
<span class="hljs-meta">&gt;&gt;&gt; </span>logger.addHandler(handler)
18721872
<span class="hljs-meta">&gt;&gt;&gt; </span>logger.setLevel(<span class="hljs-string">'DEBUG'</span>)
1873-
<span class="hljs-meta">&gt;&gt;&gt; </span>logging.basicConfig()
1874-
<span class="hljs-meta">&gt;&gt;&gt; </span>logging.root.handlers[<span class="hljs-number">0</span>].setLevel(<span class="hljs-string">'WARNING'</span>)
1873+
<span class="hljs-meta">&gt;&gt;&gt; </span>log.basicConfig()
1874+
<span class="hljs-meta">&gt;&gt;&gt; </span>log.root.handlers[<span class="hljs-number">0</span>].setLevel(<span class="hljs-string">'WARNING'</span>)
18751875
<span class="hljs-meta">&gt;&gt;&gt; </span>logger.critical(<span class="hljs-string">'Running out of disk space.'</span>)
18761876
CRITICAL:my_module:Running out of disk space.
18771877
<span class="hljs-meta">&gt;&gt;&gt; </span>print(open(<span class="hljs-string">'test.log'</span>).read())
1878-
2023-02-07 23:21:01,430 CRITICAL:my_module:Running out of disk space.
1878+
<span class="hljs-number">2023</span><span class="hljs-number">-02</span><span class="hljs-number">-07</span> <span class="hljs-number">23</span>:<span class="hljs-number">21</span>:<span class="hljs-number">01</span>,<span class="hljs-number">430</span> CRITICAL:my_module:Running out of disk space.
18791879
</code></pre></div>
18801880

18811881
<div><h2 id="introspection"><a href="#introspection" name="introspection">#</a>Introspection</h2><pre><code class="python language-python hljs">&lt;list&gt; = dir() <span class="hljs-comment"># Names of local vars, functions, classes and modules.</span>
@@ -2932,7 +2932,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
29322932

29332933

29342934
<footer>
2935-
<aside>August 18, 2024</aside>
2935+
<aside>August 19, 2024</aside>
29362936
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
29372937
</footer>
29382938

0 commit comments

Comments
 (0)