Skip to content

Commit

Permalink
deploy: 208dc0e
Browse files Browse the repository at this point in the history
  • Loading branch information
simongravelle committed Aug 28, 2024
1 parent c62ec12 commit 51a9821
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 41 deletions.
56 changes: 35 additions & 21 deletions _sources/chapters/chapter5.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,27 +42,42 @@ All quantities are re-dimensionalized before getting outputed.

.. code-block:: python
import os
import logging
logging.basicConfig(
level=logging.INFO,
format='%(message)s'
)
# Create a custom logger
logger = logging.getLogger('simulation_logger')
logger.setLevel(logging.INFO)
# Disable propagation to prevent double logging
logger.propagate = False
console_handler = logging.StreamHandler() # To log to the terminal
file_handler = logging.FileHandler('simulation.log') # To log to a file
formatter = logging.Formatter('%(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
logger.addHandler(console_handler)
logger.addHandler(file_handler)
# Function to set up the logger
def setup_logger(folder_name):
# Create a custom logger
logger = logging.getLogger('simulation_logger')
logger.setLevel(logging.INFO)
logger.propagate = False # Disable propagation to prevent double logging
# Clear any existing handlers if this function is called again
if logger.hasHandlers():
logger.handlers.clear()
# Create handlers for console and file
console_handler = logging.StreamHandler() # To log to the terminal
log_file_path = os.path.join(folder_name, 'simulation.log')
file_handler = logging.FileHandler(log_file_path) # To log to a file
# Create formatters and add them to the handlers
formatter = logging.Formatter('%(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# Add handlers to the logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)
return logger
def log_simulation_data(code):
# Setup the logger with the folder name
logger = setup_logger(code.data_folder)
# Logging the simulation data
if code.thermo_period is not None:
if code.step % code.thermo_period == 0:
if code.step == 0:
Expand All @@ -83,9 +98,8 @@ All quantities are re-dimensionalized before getting outputed.
logger.info(f"{code.step} {Epot:.2f} {code.MaxF:.2f}")
elif code.thermo_outputs == "Epot-press":
code.calculate_pressure()
press = code.pressure \
* code.reference_pressure # Atm
logger.info(f"{code.step} {Epot:.2f} {press:.2f}")
press = code.pressure * code.reference_pressure # Atm
logger.info(f"{code.step} {Epot:.2f} {press:.2f}")
.. label:: end_logger_class

Expand Down
52 changes: 33 additions & 19 deletions chapters/chapter5.html
Original file line number Diff line number Diff line change
Expand Up @@ -286,27 +286,42 @@ <h2>Create logger<a class="headerlink" href="#create-logger" title="Link to this
With the logger, some output are being printed in a file, as well as in the terminal.
The frequency of printing is set by <em>thermo_period</em>, see <a class="reference internal" href="chapter3.html#chapter3-label"><span class="std std-ref">Initialize the simulation</span></a>.
All quantities are re-dimensionalized before getting outputed.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">logging</span>
<span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span>
<span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">,</span>
<span class="nb">format</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">%(message)s</span><span class="s1">&#39;</span>
<span class="p">)</span>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">logging</span>

<span class="c1"># Function to set up the logger</span>
<span class="k">def</span> <span class="nf">setup_logger</span><span class="p">(</span><span class="n">folder_name</span><span class="p">):</span>
<span class="c1"># Create a custom logger</span>
<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;simulation_logger&#39;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">propagate</span> <span class="o">=</span> <span class="kc">False</span> <span class="c1"># Disable propagation to prevent double logging</span>

<span class="c1"># Clear any existing handlers if this function is called again</span>
<span class="k">if</span> <span class="n">logger</span><span class="o">.</span><span class="n">hasHandlers</span><span class="p">():</span>
<span class="n">logger</span><span class="o">.</span><span class="n">handlers</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>

<span class="c1"># Create handlers for console and file</span>
<span class="n">console_handler</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">()</span> <span class="c1"># To log to the terminal</span>
<span class="n">log_file_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">folder_name</span><span class="p">,</span> <span class="s1">&#39;simulation.log&#39;</span><span class="p">)</span>
<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_file_path</span><span class="p">)</span> <span class="c1"># To log to a file</span>

<span class="c1"># Create a custom logger</span>
<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;simulation_logger&#39;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<span class="c1"># Disable propagation to prevent double logging</span>
<span class="n">logger</span><span class="o">.</span><span class="n">propagate</span> <span class="o">=</span> <span class="kc">False</span>
<span class="c1"># Create formatters and add them to the handlers</span>
<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">%(message)s</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="n">console_handler</span><span class="o">.</span><span class="n">setFormatter</span><span class="p">(</span><span class="n">formatter</span><span class="p">)</span>
<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>

<span class="n">console_handler</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">()</span> <span class="c1"># To log to the terminal</span>
<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="s1">&#39;simulation.log&#39;</span><span class="p">)</span> <span class="c1"># To log to a file</span>
<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">%(message)s</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="n">console_handler</span><span class="o">.</span><span class="n">setFormatter</span><span class="p">(</span><span class="n">formatter</span><span class="p">)</span>
<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>
<span class="n">logger</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">console_handler</span><span class="p">)</span>
<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>
<span class="c1"># Add handlers to the logger</span>
<span class="n">logger</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">console_handler</span><span class="p">)</span>
<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>

<span class="k">return</span> <span class="n">logger</span>

<span class="k">def</span> <span class="nf">log_simulation_data</span><span class="p">(</span><span class="n">code</span><span class="p">):</span>

<span class="c1"># Setup the logger with the folder name</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">setup_logger</span><span class="p">(</span><span class="n">code</span><span class="o">.</span><span class="n">data_folder</span><span class="p">)</span>

<span class="c1"># Logging the simulation data</span>
<span class="k">if</span> <span class="n">code</span><span class="o">.</span><span class="n">thermo_period</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="n">code</span><span class="o">.</span><span class="n">step</span> <span class="o">%</span> <span class="n">code</span><span class="o">.</span><span class="n">thermo_period</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">if</span> <span class="n">code</span><span class="o">.</span><span class="n">step</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
Expand All @@ -327,8 +342,7 @@ <h2>Create logger<a class="headerlink" href="#create-logger" title="Link to this
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">code</span><span class="o">.</span><span class="n">step</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">Epot</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">code</span><span class="o">.</span><span class="n">MaxF</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">code</span><span class="o">.</span><span class="n">thermo_outputs</span> <span class="o">==</span> <span class="s2">&quot;Epot-press&quot;</span><span class="p">:</span>
<span class="n">code</span><span class="o">.</span><span class="n">calculate_pressure</span><span class="p">()</span>
<span class="n">press</span> <span class="o">=</span> <span class="n">code</span><span class="o">.</span><span class="n">pressure</span> \
<span class="o">*</span> <span class="n">code</span><span class="o">.</span><span class="n">reference_pressure</span> <span class="c1"># Atm</span>
<span class="n">press</span> <span class="o">=</span> <span class="n">code</span><span class="o">.</span><span class="n">pressure</span> <span class="o">*</span> <span class="n">code</span><span class="o">.</span><span class="n">reference_pressure</span> <span class="c1"># Atm</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">code</span><span class="o">.</span><span class="n">step</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">Epot</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">press</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</pre></div>
</div>
Expand Down
Loading

0 comments on commit 51a9821

Please sign in to comment.