8000 Add logging to a file · Gopal-py/gk-learn-python@c8ab305 · GitHub
[go: up one dir, main page]

Skip to content

Commit c8ab305

Browse files
committed
Add logging to a file
1 parent 88edde7 commit c8ab305

File tree

2 files changed

+102
-19
lines changed

2 files changed

+102
-19
lines changed

notebooks/beginner/html/std_lib.html

Lines changed: 63 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11848,11 +11848,11 @@ <h2 id="datetime-for-working-with-dates-and-times"><a href="https://docs.python.
1184811848

1184911849

1185011850
<div class="output_subarea output_stream output_stdout output_text">
11851-
<pre>local now: 2018-09-19 22:00:35.202267
11852-
utc now: 2018-09-19 20:00:35.202567
11853-
2018 9 19 22 0 35
11851+
<pre>local now: 2018-09-19 22:44:15.396930
11852+
utc now: 2018-09-19 20:44:15.397085
11853+
2018 9 19 22 44 15
1185411854
date: 2018-09-19
11855-
time: 22:00:35.202267
11855+
time: 22:44:15.396930
1185611856
</pre>
1185711857
</div>
1185811858
</div>
@@ -11896,8 +11896,8 @@ <h3 id="strftime()"><code>strftime()</code><a class="anchor-link" href="#strftim
1189611896

1189711897

1189811898
<div class="output_subarea output_stream output_stdout output_text">
11899-
<pre>2018/09/19-22:00:35
11900-
date: 2018-09-19 time:22:00:35
11899+
<pre>2018/09/19-22:44:15
11900+
date: 2018-09-19 time:22:44:15
1190111901
</pre>
1190211902
</div>
1190311903
</div>
@@ -11984,7 +11984,7 @@ <h3 id="timedelta"><a href="https://docs.python.org/3/library/datetime.html#time
1198411984

1198511985

1198611986
<div class="output_subarea output_stream output_stdout output_text">
11987-
<pre>tomorrow this time: 2018-09-20 22:00:35.202267
11987+
<pre>tomorrow this time: 2018-09-20 22:44:15.396930
1198811988
tomorrow - now = 1 day, 0:00:00
1198911989
days: 1, seconds: 0
1199011990
total seconds: 86400.0
@@ -12077,10 +12077,10 @@ <h3 id="Working-with-timezones">Working with timezones<a class="anchor-link" hre
1207712077

1207812078

1207912079
<div class="output_subarea output_stream output_stdout output_text">
12080-
<pre>naive utc now: 2018-09-19 20:00:36.074664, tzinfo: None
12081-
utc now: 2018-09-19 20:00:36.074664+00:00, tzinfo: UTC
12082-
Paris: 2018-09-19 22:00:36.074664+02:00, tzinfo: Europe/Paris
12083-
New York: 2018-09-19 16:00:36.074664-04:00, tzinfo: America/New_York
12080+
<pre>naive utc now: 2018-09-19 20:44:16.308229, tzinfo: None
12081+
utc now: 2018-09-19 20:44:16.308229+00:00, tzinfo: UTC
12082+
Paris: 2018-09-19 22:44:16.308229+02:00, tzinfo: Europe/Paris
12083+
New York: 2018-09-19 16:44:16.308229-04:00, tzinfo: America/New_York
1208412084
</pre>
1208512085
</div>
1208612086
</div>
@@ -12238,8 +12238,8 @@ <h3 id="Formatting-log-entries">Formatting log entries<a class="anchor-link" hre
1223812238

1223912239

1224012240
<div class="output_subarea output_stream output_stderr output_text">
12241-
<pre>2018-09-19 22:00:36,127 | MyLogger | WARNING | Something bad is going to happen
12242-
2018-09-19 22:00:36,128 | MyLogger | ERROR | Uups, it already happened
12241+
<pre>2018-09-19 22:44:16,365 | MyLogger | WARNING | Something bad is going to happen
12242+
2018-09-19 22:44:16,366 | MyLogger | ERROR | Uups, it already happened
1224312243
</pre>
1224412244
</div>
1224512245
</div>
@@ -12252,13 +12252,57 @@ <h3 id="Formatting-log-entries">Formatting log entries<a class="anchor-link" hre
1225212252
</div>
1225312253
<div class="inner_cell">
1225412254
<div class="text_cell_render border-box-sizing rendered_html">
12255-
<h2 id="random-for-random-number-generation"><a href="https://docs.python.org/3/library/random.html"><code>random</code></a> for random number generation<a class="anchor-link" href="#random-for-random-number-generation">&#182;</a></h2>
12255+
<h3 id="Logging-to-a-file">Logging to a file<a class="anchor-link" href="#Logging-to-a-file">&#182;</a></h3>
1225612256
</div>
1225712257
</div>
1225812258
</div>
1225912259
<div class="cell border-box-sizing code_cell rendered">
1226012260
<div class="input">
1226112261
<div class="prompt input_prompt">In&nbsp;[10]:</div>
12262+
<div class="inner_cell">
12263+
<div class="input_area">
12264+
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
12265+
<span class="kn">import</span> <span class="nn">logging</span>
12266+
12267+
<span class="c1"># This is only required for Jupyter notebook environment</span>
12268+
<span class="kn">from</span> <span class="nn">importlib</span> <span class="k">import</span> <span class="n">reload</span>
12269+
<span class="n">reload</span><span class="p">(</span><span class="n">logging</span><span class="p">)</span>
12270+
12271+
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s1">&#39;MyFileLogger&#39;</span><span class="p">)</span>
12272+
12273+
<span class="c1"># Let&#39;s define a file_handler for our logger</span>
12274+
<span class="n">log_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">(),</span> <span class="s1">&#39;my_log.txt&#39;</span><span class="p">)</span>
12275+
<span class="n">file_handler</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">FileHandler</span><span class="p">(</span><span class="n">log_path</span><span class="p">)</span>
12276+
< 10000 /code>12277+
<span class="c1"># And a nice format</span>
12278+
<span class="n">formatter</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">Formatter</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%(asctime)s</span><span class="s1"> | </span><span class="si">%(name)-12s</span><span class="s1"> | </span><span class="si">%(levelname)-10s</span><span class="s1"> | </span><span class="si">%(message)s</span><span class="s1">&#39;</span><span class="p">)</span>
12279+
<span class="n">file_handler</span><span class="o">.</span><span class="n">setFormatter</span><span class="p">(</span><span class="n">formatter</span><span class="p">)</span>
12280+
12281+
<span class="n">logger</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">file_handler</span><span class="p">)</span>
12282+
12283+
<span class="c1"># If you want to see it also in the console, add another handler for it</span>
12284+
<span class="c1"># logger.addHandler(logging.StreamHandler())</span>
12285+
12286+
<span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s1">&#39;Oops something is going to happen&#39;</span><span class="p">)</span>
12287+
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;John Doe visits our place&#39;</span><span class="p">)</span>
12288+
</pre></div>
12289+
12290+
</div>
12291+
</div>
12292+
</div>
12293+
12294+
</div>
12295+
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12296+
</div>
12297+
<div class="inner_cell">
12298+
<div class="text_cell_render border-box-sizing rendered_html">
12299+
<h2 id="random-for-random-number-generation"><a href="https://docs.python.org/3/library/random.html"><code>random</code></a> for random number generation<a class="anchor-link" href="#random-for-random-number-generation">&#182;</a></h2>
12300+
</div>
12301+
</div>
12302+
</div>
12303+
<div class="cell border-box-sizing code_cell rendered">
12304+
<div class="input">
12305+
<div class="prompt input_prompt">In&nbsp;[11]:</div>
1226212306
<div class="inner_cell">
1226312307
<div class="input_area">
1226412308
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">random</span>
@@ -12284,8 +12328,8 @@ <h2 id="random-for-random-number-generation"><a href="https://docs.python.org/3/
1228412328

1228512329

1228612330
<div class="output_subarea output_stream output_stdout output_text">
12287-
<pre>random integer between 1-100: 63
12288-
random float between 0-1: 0.11984811411151686
12331+
<pre>random integer between 1-100: 33
12332+
random float between 0-1: 0.10137384902353497
1228912333
</pre>
1229012334
</div>
1229112335
</div>
@@ -12305,7 +12349,7 @@ <h2 id="random-for-random-number-generation"><a href="https://docs.python.org/3/
1230512349
</div>
1230612350
<div class="cell border-box-sizing code_cell rendered">
1230712351
<div class="input">
12308-
<div class="prompt input_prompt">In&nbsp;[11]:</div>
12352+
<div class="prompt input_prompt">In&nbsp;[12]:</div>
1230912353
<div class="inner_cell">
1231012354
<div class="input_area">
1231112355
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">random</span>
@@ -12367,7 +12411,7 @@ <h3 id="Searching-occurences">Searching occurences<a class="anchor-link" href="#
1236712411
</div>
1236812412
<div class="cell border-box-sizing code_cell rendered">
1236912413
<div class="input">
12370-
<div class="prompt input_prompt">In&nbsp;[12]:</div>
12414+
<div class="prompt input_prompt">In&nbsp;[13]:</div>
1237112415
<div class="inner_cell">
1237212416
<div class="input_area">
1237312417
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">re</span>
@@ -12420,7 +12464,7 @@ <h3 id="Variable-validation">Variable validation<a class="anchor-link" href="#Va
1242012464
</div>
1242112465
<div class="cell border-box-sizing code_cell rendered">
1242212466
<div class="input">
12423-
<div class="prompt input_prompt">In&nbsp;[13]:</div>
12467+
<div class="prompt input_prompt">In&nbsp;[14]:</div>
1242412468
<div class="inner_cell">
1242512469
<div class="input_area">
1242612470
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">re</span>

notebooks/beginner/std_lib.ipynb

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,45 @@
226226
"logger.error('Uups, it already happened')"
227227
]
228228
},
229+
{
230+
"cell_type": "markdown",
231+
"metadata": {},
232+
"source": [
233+
"### Logging to a file"
234+
]
235+
},
236+
{
237+
"cell_type": "code",
238+
"execution_count": null,
239+
"metadata": {},
240+
"outputs": [],
241+
"source": [
242+
"import os\n",
243+
"import logging\n",
244+
"\n",
245+
"# This is only required for Jupyter notebook environment\n",
246+
"from importlib import reload\n",
247+
"reload(logging)\n",
248+
"\n",
249+
"logger = logging.getLogger('MyFileLogger')\n",
250+
"\n",
251+
"# Let's define a file_handler for our logger\n",
252+
"log_path = os.path.join(os.getcwd(), 'my_log.txt')\n",
253+
"file_handler = logging.FileHandler(log_path)\n",
254+
"\n",
255+
"# And a nice format\n",
256+
"formatter = logging.Formatter('%(asctime)s | %(name)-12s | %(levelname)-10s | %(message)s')\n",
257+
"file_handler.setFormatter(formatter)\n",
258+
"\n",
259+
"logger.addHandler(file_handler)\n",
260+
"\n",
261+
"# If you want to see it also in the console, add another handler for it\n",
262+
"# logger.addHandler(logging.StreamHandler())\n",
263+
"\n",
264+
"logger.warning('Oops something is going to happen')\n",
265+
"logger.error('John Doe visits our place')"
266+
]
267+
},
229268
{
230269
"cell_type": "markdown",
231270
"metadata": {},

0 commit comments

Comments
 (0)
0