]> SALOME platform Git repositories - tools/sat.git/blob - doc/build/html/_modules/src/logger.html
Salome HOME
sat doc doc from --html to --xml
[tools/sat.git] / doc / build / html / _modules / src / logger.html
1
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6   <head>
7     <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
8     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9     <title>src.logger &#8212; salomeTools 5.0.0dev documentation</title>
10     <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
11     <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
12     <script type="text/javascript" src="../../_static/documentation_options.js"></script>
13     <script type="text/javascript" src="../../_static/jquery.js"></script>
14     <script type="text/javascript" src="../../_static/underscore.js"></script>
15     <script type="text/javascript" src="../../_static/doctools.js"></script>
16     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
17     <link rel="index" title="Index" href="../../genindex.html" />
18     <link rel="search" title="Search" href="../../search.html" />
19    
20   <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
21   
22   
23   <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
24
25   </head><body>
26   
27
28     <div class="document">
29       <div class="documentwrapper">
30         <div class="bodywrapper">
31           <div class="body" role="main">
32             
33   <h1>Source code for src.logger</h1><div class="highlight"><pre>
34 <span></span><span class="ch">#!/usr/bin/env python</span>
35 <span class="c1">#-*- coding:utf-8 -*-</span>
36 <span class="c1">#  Copyright (C) 2010-2012  CEA/DEN</span>
37 <span class="c1">#</span>
38 <span class="c1">#  This library is free software; you can redistribute it and/or</span>
39 <span class="c1">#  modify it under the terms of the GNU Lesser General Public</span>
40 <span class="c1">#  License as published by the Free Software Foundation; either</span>
41 <span class="c1">#  version 2.1 of the License.</span>
42 <span class="c1">#</span>
43 <span class="c1">#  This library is distributed in the hope that it will be useful,</span>
44 <span class="c1">#  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
45 <span class="c1">#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
46 <span class="c1">#  Lesser General Public License for more details.</span>
47 <span class="c1">#</span>
48 <span class="c1">#  You should have received a copy of the GNU Lesser General Public</span>
49 <span class="c1">#  License along with this library; if not, write to the Free Software</span>
50 <span class="c1">#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA</span>
51
52 <span class="sd">&quot;&quot;&quot;\</span>
53 <span class="sd">Implements the classes and method relative to the logging</span>
54 <span class="sd">&quot;&quot;&quot;</span>
55
56 <span class="kn">import</span> <span class="nn">sys</span>
57 <span class="kn">import</span> <span class="nn">os</span>
58 <span class="kn">import</span> <span class="nn">datetime</span>
59 <span class="kn">import</span> <span class="nn">re</span>
60 <span class="kn">import</span> <span class="nn">tempfile</span>
61
62 <span class="kn">import</span> <span class="nn">src</span>
63 <span class="kn">import</span> <span class="nn">printcolors</span>
64 <span class="kn">import</span> <span class="nn">xmlManager</span>
65
66 <span class="kn">import</span> <span class="nn">src.debug</span> <span class="k">as</span> <span class="nn">DBG</span>
67
68 <span class="n">log_macro_command_file_expression</span> <span class="o">=</span> <span class="s2">&quot;^[0-9]</span><span class="si">{8}</span><span class="s2">_+[0-9]</span><span class="si">{6}</span><span class="s2">_+.*\.xml$&quot;</span>
69 <span class="n">log_all_command_file_expression</span> <span class="o">=</span> <span class="s2">&quot;^.*[0-9]</span><span class="si">{8}</span><span class="s2">_+[0-9]</span><span class="si">{6}</span><span class="s2">_+.*\.xml$&quot;</span>
70
71 <div class="viewcode-block" id="Logger"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.Logger">[docs]</a><span class="k">class</span> <span class="nc">Logger</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
72     <span class="sd">&quot;&quot;&quot;\</span>
73 <span class="sd">    Class to handle log mechanism.</span>
74 <span class="sd">    &quot;&quot;&quot;</span>
75     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
76                  <span class="n">config</span><span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
77                  <span class="n">silent_sysstd</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
78                  <span class="n">all_in_terminal</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
79                  <span class="n">micro_command</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span>
80         <span class="sd">&quot;&quot;&quot;Initialization</span>
81 <span class="sd">        </span>
82 <span class="sd">        :param config pyconf.Config: The global configuration.</span>
83 <span class="sd">        :param silent_sysstd boolean: if True, do not write anything</span>
84 <span class="sd">                                      in terminal.</span>
85 <span class="sd">        &quot;&quot;&quot;</span>
86         <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;src.logger.Logger&quot;</span><span class="p">,</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
87         <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">config</span>
88         <span class="bp">self</span><span class="o">.</span><span class="n">default_level</span> <span class="o">=</span> <span class="mi">3</span>
89         <span class="bp">self</span><span class="o">.</span><span class="n">silentSysStd</span> <span class="o">=</span> <span class="n">silent_sysstd</span>
90         
91         <span class="c1"># Construct xml log file location for sat prints.</span>
92         <span class="n">prefix</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
93         <span class="k">if</span> <span class="n">micro_command</span><span class="p">:</span>
94             <span class="n">prefix</span> <span class="o">=</span> <span class="s2">&quot;micro_&quot;</span>
95         <span class="n">hour_command_host</span> <span class="o">=</span> <span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">datehour</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> 
96                              <span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">command</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> 
97                              <span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">hostname</span><span class="p">)</span>
98         <span class="n">logFileName</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="n">hour_command_host</span> <span class="o">+</span> <span class="s2">&quot;.xml&quot;</span>
99         <span class="n">log_dir</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">get_log_path</span><span class="p">(</span><span class="n">config</span><span class="p">)</span>
100         <span class="n">logFilePath</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">log_dir</span><span class="p">,</span> <span class="n">logFileName</span><span class="p">)</span>
101         <span class="c1"># Construct txt file location in order to log </span>
102         <span class="c1"># the external commands calls (cmake, make, git clone, etc...)</span>
103         <span class="n">txtFileName</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="n">hour_command_host</span> <span class="o">+</span> <span class="s2">&quot;.txt&quot;</span>
104         <span class="n">txtFilePath</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">log_dir</span><span class="p">,</span> <span class="s2">&quot;OUT&quot;</span><span class="p">,</span> <span class="n">txtFileName</span><span class="p">)</span>
105         
106         <span class="n">src</span><span class="o">.</span><span class="n">ensure_path_exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">logFilePath</span><span class="p">))</span>
107         <span class="n">src</span><span class="o">.</span><span class="n">ensure_path_exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">txtFilePath</span><span class="p">))</span>
108         
109         <span class="c1"># The path of the log files (one for sat traces, and the other for </span>
110         <span class="c1"># the system commands traces)</span>
111         <span class="bp">self</span><span class="o">.</span><span class="n">logFileName</span> <span class="o">=</span> <span class="n">logFileName</span>
112         <span class="bp">self</span><span class="o">.</span><span class="n">logFilePath</span> <span class="o">=</span> <span class="n">logFilePath</span>
113         <span class="bp">self</span><span class="o">.</span><span class="n">txtFileName</span> <span class="o">=</span> <span class="n">txtFileName</span>
114         <span class="bp">self</span><span class="o">.</span><span class="n">txtFilePath</span> <span class="o">=</span> <span class="n">txtFilePath</span>
115         
116         <span class="c1"># The list of all log files corresponding to the current command and</span>
117         <span class="c1"># the commands called by the current command</span>
118         <span class="bp">self</span><span class="o">.</span><span class="n">l_logFiles</span> <span class="o">=</span> <span class="p">[</span><span class="n">logFilePath</span><span class="p">,</span> <span class="n">txtFilePath</span><span class="p">]</span>
119         
120         <span class="c1"># Initialize xml instance and put first fields </span>
121         <span class="c1"># like beginTime, user, command, etc... </span>
122         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span> <span class="o">=</span> <span class="n">xmlManager</span><span class="o">.</span><span class="n">XmlLogFile</span><span class="p">(</span><span class="n">logFilePath</span><span class="p">,</span> <span class="s2">&quot;SATcommand&quot;</span><span class="p">,</span> 
123                             <span class="n">attrib</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;application&quot;</span> <span class="p">:</span> <span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">application</span><span class="p">})</span>
124         <span class="bp">self</span><span class="o">.</span><span class="n">put_initial_xml_fields</span><span class="p">()</span>
125         <span class="c1"># Initialize the txt file for reading</span>
126         <span class="k">try</span><span class="p">:</span>
127             <span class="bp">self</span><span class="o">.</span><span class="n">logTxtFile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">txtFilePath</span><span class="p">),</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span>
128         <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
129             <span class="c1">#msg1 = _(&quot;WARNING! Trying to write to a file that&quot;</span>
130             <span class="c1">#         &quot; is not accessible:&quot;)</span>
131             <span class="c1">#msg2 = _(&quot;The logs won&#39;t be written.&quot;)</span>
132             <span class="c1">#print(&quot;%s\n%s\n%s\n&quot; % (src.printcolors.printcWarning(msg1),</span>
133             <span class="c1">#                        src.printcolors.printcLabel(str(self.txtFilePath)),</span>
134             <span class="c1">#                        src.printcolors.printcWarning(msg2) ))</span>
135             <span class="bp">self</span><span class="o">.</span><span class="n">logTxtFile</span> <span class="o">=</span> <span class="n">tempfile</span><span class="o">.</span><span class="n">TemporaryFile</span><span class="p">()</span>
136             
137         <span class="c1"># If the option all_in_terminal was called, all the system commands</span>
138         <span class="c1"># are redirected to the terminal</span>
139         <span class="k">if</span> <span class="n">all_in_terminal</span><span class="p">:</span>
140             <span class="bp">self</span><span class="o">.</span><span class="n">logTxtFile</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">__stdout__</span>
141         
142 <div class="viewcode-block" id="Logger.put_initial_xml_fields"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.Logger.put_initial_xml_fields">[docs]</a>    <span class="k">def</span> <span class="nf">put_initial_xml_fields</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
143         <span class="sd">&quot;&quot;&quot;\</span>
144 <span class="sd">        Called at class initialization: Put all fields </span>
145 <span class="sd">        corresponding to the command context (user, time, ...)</span>
146 <span class="sd">        &quot;&quot;&quot;</span>
147         <span class="c1"># command name</span>
148         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">add_simple_node</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;command&quot;</span> <span class="p">:</span> 
149                                                      <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">command</span><span class="p">})</span>
150         <span class="c1"># version of salomeTools</span>
151         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;satversion&quot;</span> <span class="p">:</span> 
152                                             <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">INTERNAL</span><span class="o">.</span><span class="n">sat_version</span><span class="p">})</span>
153         <span class="c1"># machine name on which the command has been launched</span>
154         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;hostname&quot;</span> <span class="p">:</span> 
155                                                     <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">hostname</span><span class="p">})</span>
156         <span class="c1"># Distribution of the machine</span>
157         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;OS&quot;</span> <span class="p">:</span> 
158                                                         <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">dist</span><span class="p">})</span>
159         <span class="c1"># The user that have launched the command</span>
160         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;user&quot;</span> <span class="p">:</span> 
161                                                         <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">user</span><span class="p">})</span>
162         <span class="c1"># The time when command was launched</span>
163         <span class="n">Y</span><span class="p">,</span> <span class="n">m</span><span class="p">,</span> <span class="n">dd</span><span class="p">,</span> <span class="n">H</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">S</span> <span class="o">=</span> <span class="n">date_to_datetime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">datehour</span><span class="p">)</span>
164         <span class="n">date_hour</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%2s</span><span class="s2">/</span><span class="si">%2s</span><span class="s2">/</span><span class="si">%4s</span><span class="s2"> </span><span class="si">%2s</span><span class="s2">h</span><span class="si">%2s</span><span class="s2">m</span><span class="si">%2s</span><span class="s2">s&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">dd</span><span class="p">,</span> <span class="n">m</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">H</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">S</span><span class="p">)</span>
165         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;beginTime&quot;</span> <span class="p">:</span> 
166                                                         <span class="n">date_hour</span><span class="p">})</span>
167         <span class="c1"># The application if any</span>
168         <span class="k">if</span> <span class="s2">&quot;APPLICATION&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">:</span>
169             <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> 
170                         <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;application&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">application</span><span class="p">})</span>
171         <span class="c1"># The initialization of the trace node</span>
172         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">add_simple_node</span><span class="p">(</span><span class="s2">&quot;Log&quot;</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
173         <span class="c1"># The system commands logs</span>
174         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">add_simple_node</span><span class="p">(</span><span class="s2">&quot;OutLog&quot;</span><span class="p">,</span>
175                                     <span class="n">text</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="s2">&quot;OUT&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">txtFileName</span><span class="p">))</span>
176         <span class="c1"># The initialization of the node where </span>
177         <span class="c1"># to put the links to the other sat commands that can be called by any</span>
178         <span class="c1"># command </span>
179         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">add_simple_node</span><span class="p">(</span><span class="s2">&quot;Links&quot;</span><span class="p">)</span></div>
180
181 <div class="viewcode-block" id="Logger.add_link"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.Logger.add_link">[docs]</a>    <span class="k">def</span> <span class="nf">add_link</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
182                  <span class="n">log_file_name</span><span class="p">,</span>
183                  <span class="n">command_name</span><span class="p">,</span>
184                  <span class="n">command_res</span><span class="p">,</span>
185                  <span class="n">full_launched_command</span><span class="p">):</span>
186         <span class="sd">&quot;&quot;&quot;Add a link to another log file.</span>
187 <span class="sd">        </span>
188 <span class="sd">        :param log_file_name str: The file name of the link.</span>
189 <span class="sd">        :param command_name str: The name of the command linked.</span>
190 <span class="sd">        :param command_res str: The result of the command linked. &quot;0&quot; or &quot;1&quot;</span>
191 <span class="sd">        :parma full_launched_command str: The full lanch command </span>
192 <span class="sd">                                          (&quot;sat command ...&quot;)</span>
193 <span class="sd">        &quot;&quot;&quot;</span>
194         <span class="n">xmlLinks</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">xmlroot</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;Links&quot;</span><span class="p">)</span>
195         <span class="n">src</span><span class="o">.</span><span class="n">xmlManager</span><span class="o">.</span><span class="n">add_simple_node</span><span class="p">(</span><span class="n">xmlLinks</span><span class="p">,</span>
196                                        <span class="s2">&quot;link&quot;</span><span class="p">,</span> 
197                                        <span class="n">text</span> <span class="o">=</span> <span class="n">log_file_name</span><span class="p">,</span>
198                                        <span class="n">attrib</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;command&quot;</span> <span class="p">:</span> <span class="n">command_name</span><span class="p">,</span>
199                                                  <span class="s2">&quot;passed&quot;</span> <span class="p">:</span> <span class="n">command_res</span><span class="p">,</span>
200                                            <span class="s2">&quot;launchedCommand&quot;</span> <span class="p">:</span> <span class="n">full_launched_command</span><span class="p">})</span></div>
201
202 <div class="viewcode-block" id="Logger.write"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.Logger.write">[docs]</a>    <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">screenOnly</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
203         <span class="sd">&quot;&quot;&quot;\</span>
204 <span class="sd">        function used in the commands </span>
205 <span class="sd">        to print in the terminal and the log file.</span>
206 <span class="sd">        </span>
207 <span class="sd">        :param message str: The message to print.</span>
208 <span class="sd">        :param level int: The output level corresponding </span>
209 <span class="sd">                          to the message 0 &lt; level &lt; 6.</span>
210 <span class="sd">        :param screenOnly boolean: if True, do not write in log file.</span>
211 <span class="sd">        &quot;&quot;&quot;</span>
212         <span class="c1"># avoid traces if unittest</span>
213         <span class="k">if</span> <span class="n">isCurrentLoggerUnittest</span><span class="p">():</span>
214             <span class="c1"># print(&quot;doing unittest&quot;)</span>
215             <span class="n">sendMessageToCurrentLogger</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">level</span><span class="p">)</span>
216             <span class="k">return</span>
217
218         <span class="c1"># do not write message starting with \r to log file</span>
219         <span class="k">if</span> <span class="ow">not</span> <span class="n">message</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\r</span><span class="s2">&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">screenOnly</span><span class="p">:</span>
220             <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_text</span><span class="p">(</span><span class="s2">&quot;Log&quot;</span><span class="p">,</span> 
221                                           <span class="n">printcolors</span><span class="o">.</span><span class="n">cleancolor</span><span class="p">(</span><span class="n">message</span><span class="p">))</span>
222
223         <span class="c1"># get user or option output level</span>
224         <span class="n">current_output_verbose_level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">USER</span><span class="o">.</span><span class="n">output_verbose_level</span>
225         <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="s1">&#39;isatty&#39;</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">)</span> <span class="ow">and</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">isatty</span><span class="p">()):</span>
226             <span class="c1"># clean the message color if the terminal is redirected by user</span>
227             <span class="c1"># ex: sat compile appli &gt; log.txt</span>
228             <span class="n">message</span> <span class="o">=</span> <span class="n">printcolors</span><span class="o">.</span><span class="n">cleancolor</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
229         
230         <span class="c1"># Print message regarding the output level value</span>
231         <span class="k">if</span> <span class="n">level</span><span class="p">:</span>
232             <span class="k">if</span> <span class="n">level</span> <span class="o">&lt;=</span> <span class="n">current_output_verbose_level</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">silentSysStd</span><span class="p">:</span>
233                 <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
234         <span class="k">else</span><span class="p">:</span>
235             <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_level</span> <span class="o">&lt;=</span> <span class="n">current_output_verbose_level</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">silentSysStd</span><span class="p">:</span>
236                 <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
237         <span class="bp">self</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span></div>
238
239 <div class="viewcode-block" id="Logger.error"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.Logger.error">[docs]</a>    <span class="k">def</span> <span class="nf">error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span>
240         <span class="sd">&quot;&quot;&quot;Print an error.</span>
241 <span class="sd">        </span>
242 <span class="sd">        :param message str: The message to print.</span>
243 <span class="sd">        &quot;&quot;&quot;</span>
244         <span class="c1"># Print in the log file</span>
245         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_text</span><span class="p">(</span><span class="s2">&quot;traces&quot;</span><span class="p">,</span> <span class="n">_</span><span class="p">(</span><span class="s1">&#39;ERROR:&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span><span class="p">)</span>
246
247         <span class="c1"># Print in the terminal and clean colors if the terminal </span>
248         <span class="c1"># is redirected by user</span>
249         <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="s1">&#39;isatty&#39;</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">)</span> <span class="ow">and</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">isatty</span><span class="p">()):</span>
250             <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">printcolors</span><span class="o">.</span><span class="n">printcError</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s1">&#39;ERROR:&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span><span class="p">))</span>
251         <span class="k">else</span><span class="p">:</span>
252             <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s1">&#39;ERROR:&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span><span class="p">)</span></div>
253
254 <div class="viewcode-block" id="Logger.flush"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.Logger.flush">[docs]</a>    <span class="k">def</span> <span class="nf">flush</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
255         <span class="sd">&quot;&quot;&quot;Flush terminal&quot;&quot;&quot;</span>
256         <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
257         <span class="bp">self</span><span class="o">.</span><span class="n">logTxtFile</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span></div>
258         
259 <div class="viewcode-block" id="Logger.end_write"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.Logger.end_write">[docs]</a>    <span class="k">def</span> <span class="nf">end_write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attribute</span><span class="p">):</span>
260         <span class="sd">&quot;&quot;&quot;\</span>
261 <span class="sd">        Called just after command end: Put all fields </span>
262 <span class="sd">        corresponding to the command end context (time).</span>
263 <span class="sd">        Write the log xml file on the hard drive.</span>
264 <span class="sd">        And display the command to launch to get the log</span>
265 <span class="sd">        </span>
266 <span class="sd">        :param attribute dict: the attribute to add to the node &quot;Site&quot;.</span>
267 <span class="sd">        &quot;&quot;&quot;</span>       
268         <span class="c1"># Get current time (end of command) and format it</span>
269         <span class="n">dt</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
270         <span class="n">Y</span><span class="p">,</span> <span class="n">m</span><span class="p">,</span> <span class="n">dd</span><span class="p">,</span> <span class="n">H</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">S</span> <span class="o">=</span> <span class="n">date_to_datetime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">datehour</span><span class="p">)</span>
271         <span class="n">t0</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">Y</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">m</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">dd</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">H</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">M</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">S</span><span class="p">))</span>
272         <span class="n">tf</span> <span class="o">=</span> <span class="n">dt</span>
273         <span class="n">delta</span> <span class="o">=</span> <span class="n">tf</span> <span class="o">-</span> <span class="n">t0</span>
274         <span class="n">total_time</span> <span class="o">=</span> <span class="n">timedelta_total_seconds</span><span class="p">(</span><span class="n">delta</span><span class="p">)</span>
275         <span class="n">hours</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">total_time</span> <span class="o">/</span> <span class="mi">3600</span><span class="p">)</span>
276         <span class="n">minutes</span> <span class="o">=</span> <span class="nb">int</span><span class="p">((</span><span class="n">total_time</span> <span class="o">-</span> <span class="n">hours</span><span class="o">*</span><span class="mi">3600</span><span class="p">)</span> <span class="o">/</span> <span class="mi">60</span><span class="p">)</span>
277         <span class="n">seconds</span> <span class="o">=</span> <span class="n">total_time</span> <span class="o">-</span> <span class="n">hours</span><span class="o">*</span><span class="mi">3600</span> <span class="o">-</span> <span class="n">minutes</span><span class="o">*</span><span class="mi">60</span>
278         <span class="c1"># Add the fields corresponding to the end time</span>
279         <span class="c1"># and the total time of command</span>
280         <span class="n">endtime</span> <span class="o">=</span> <span class="n">dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">&#39;%Y/%m/</span><span class="si">%d</span><span class="s1"> %Hh%Mm%Ss&#39;</span><span class="p">)</span>
281         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;endTime&quot;</span> <span class="p">:</span> <span class="n">endtime</span><span class="p">})</span>
282         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> 
283                 <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;TotalTime&quot;</span> <span class="p">:</span> <span class="s2">&quot;</span><span class="si">%i</span><span class="s2">h</span><span class="si">%i</span><span class="s2">m</span><span class="si">%i</span><span class="s2">s&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">,</span> <span class="n">seconds</span><span class="p">)})</span>
284         
285         <span class="c1"># Add the attribute passed to the method</span>
286         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">append_node_attrib</span><span class="p">(</span><span class="s2">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="n">attribute</span><span class="p">)</span>
287         
288         <span class="c1"># Call the method to write the xml file on the hard drive</span>
289         <span class="bp">self</span><span class="o">.</span><span class="n">xmlFile</span><span class="o">.</span><span class="n">write_tree</span><span class="p">(</span><span class="n">stylesheet</span> <span class="o">=</span> <span class="s2">&quot;command.xsl&quot;</span><span class="p">)</span>
290         
291         <span class="c1"># Dump the config in a pyconf file in the log directory</span>
292         <span class="n">logDir</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">get_log_path</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">)</span>
293         <span class="n">dumpedPyconfFileName</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">datehour</span> 
294                                 <span class="o">+</span> <span class="s2">&quot;_&quot;</span> 
295                                 <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">command</span> 
296                                 <span class="o">+</span> <span class="s2">&quot;.pyconf&quot;</span><span class="p">)</span>
297         <span class="n">dumpedPyconfFilePath</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">logDir</span><span class="p">,</span> <span class="s1">&#39;OUT&#39;</span><span class="p">,</span> <span class="n">dumpedPyconfFileName</span><span class="p">)</span>
298         <span class="k">try</span><span class="p">:</span>
299             <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">dumpedPyconfFilePath</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span>
300             <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">__save__</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
301             <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
302         <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
303             <span class="k">pass</span></div></div>
304
305 <div class="viewcode-block" id="date_to_datetime"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.date_to_datetime">[docs]</a><span class="k">def</span> <span class="nf">date_to_datetime</span><span class="p">(</span><span class="n">date</span><span class="p">):</span>
306     <span class="sd">&quot;&quot;&quot;\</span>
307 <span class="sd">    From a string date in format YYYYMMDD_HHMMSS</span>
308 <span class="sd">    returns list year, mon, day, hour, minutes, seconds </span>
309 <span class="sd">    </span>
310 <span class="sd">    :param date str: The date in format YYYYMMDD_HHMMSS</span>
311 <span class="sd">    :return: the same date and time in separate variables.</span>
312 <span class="sd">    :rtype: (str,str,str,str,str,str)</span>
313 <span class="sd">    &quot;&quot;&quot;</span>
314     <span class="n">Y</span> <span class="o">=</span> <span class="n">date</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span>
315     <span class="n">m</span> <span class="o">=</span> <span class="n">date</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span>
316     <span class="n">dd</span> <span class="o">=</span> <span class="n">date</span><span class="p">[</span><span class="mi">6</span><span class="p">:</span><span class="mi">8</span><span class="p">]</span>
317     <span class="n">H</span> <span class="o">=</span> <span class="n">date</span><span class="p">[</span><span class="mi">9</span><span class="p">:</span><span class="mi">11</span><span class="p">]</span>
318     <span class="n">M</span> <span class="o">=</span> <span class="n">date</span><span class="p">[</span><span class="mi">11</span><span class="p">:</span><span class="mi">13</span><span class="p">]</span>
319     <span class="n">S</span> <span class="o">=</span> <span class="n">date</span><span class="p">[</span><span class="mi">13</span><span class="p">:</span><span class="mi">15</span><span class="p">]</span>
320     <span class="k">return</span> <span class="n">Y</span><span class="p">,</span> <span class="n">m</span><span class="p">,</span> <span class="n">dd</span><span class="p">,</span> <span class="n">H</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">S</span></div>
321
322 <div class="viewcode-block" id="timedelta_total_seconds"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.timedelta_total_seconds">[docs]</a><span class="k">def</span> <span class="nf">timedelta_total_seconds</span><span class="p">(</span><span class="n">timedelta</span><span class="p">):</span>
323     <span class="sd">&quot;&quot;&quot;\</span>
324 <span class="sd">    Replace total_seconds from datetime module </span>
325 <span class="sd">    in order to be compatible with old python versions</span>
326 <span class="sd">    </span>
327 <span class="sd">    :param timedelta datetime.timedelta: The delta between two dates</span>
328 <span class="sd">    :return: The number of seconds corresponding to timedelta.</span>
329 <span class="sd">    :rtype: float</span>
330 <span class="sd">    &quot;&quot;&quot;</span>
331     <span class="k">return</span> <span class="p">(</span>
332         <span class="n">timedelta</span><span class="o">.</span><span class="n">microseconds</span> <span class="o">+</span> <span class="mf">0.0</span> <span class="o">+</span>
333         <span class="p">(</span><span class="n">timedelta</span><span class="o">.</span><span class="n">seconds</span> <span class="o">+</span> <span class="n">timedelta</span><span class="o">.</span><span class="n">days</span> <span class="o">*</span> <span class="mi">24</span> <span class="o">*</span> <span class="mi">3600</span><span class="p">)</span> <span class="o">*</span> <span class="mi">10</span> <span class="o">**</span> <span class="mi">6</span><span class="p">)</span> <span class="o">/</span> <span class="mi">10</span> <span class="o">**</span> <span class="mi">6</span></div>
334         
335 <div class="viewcode-block" id="show_command_log"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.show_command_log">[docs]</a><span class="k">def</span> <span class="nf">show_command_log</span><span class="p">(</span><span class="n">logFilePath</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">application</span><span class="p">,</span> <span class="n">notShownCommands</span><span class="p">):</span>
336     <span class="sd">&quot;&quot;&quot;\</span>
337 <span class="sd">    Used in updateHatXml. </span>
338 <span class="sd">    Determine if the log xml file logFilePath </span>
339 <span class="sd">    has to be shown or not in the hat log.</span>
340 <span class="sd">    </span>
341 <span class="sd">    :param logFilePath str: the path to the command xml log file</span>
342 <span class="sd">    :param cmd str: the command of the log file</span>
343 <span class="sd">    :param application str: the application passed as parameter </span>
344 <span class="sd">                            to the salomeTools command</span>
345 <span class="sd">    :param notShownCommands list: the list of commands </span>
346 <span class="sd">                                  that are not shown by default</span>
347 <span class="sd">    </span>
348 <span class="sd">    :return: True if cmd is not in notShownCommands and the application </span>
349 <span class="sd">             in the log file corresponds to application</span>
350 <span class="sd">    :rtype: boolean</span>
351 <span class="sd">    &quot;&quot;&quot;</span>
352     <span class="c1"># When the command is not in notShownCommands, no need to go further :</span>
353     <span class="c1"># Do not show</span>
354     <span class="k">if</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">notShownCommands</span><span class="p">:</span>
355         <span class="k">return</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
356  
357     <span class="c1"># Get the application of the log file</span>
358     <span class="k">try</span><span class="p">:</span>
359         <span class="n">logFileXml</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">xmlManager</span><span class="o">.</span><span class="n">ReadXmlFile</span><span class="p">(</span><span class="n">logFilePath</span><span class="p">)</span>
360     <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
361         <span class="n">msg</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">&quot;WARNING: the log file </span><span class="si">%s</span><span class="s2"> cannot be read:&quot;</span> <span class="o">%</span> <span class="n">logFilePath</span><span class="p">)</span>
362         <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">printcolors</span><span class="o">.</span><span class="n">printcWarning</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">e</span><span class="p">)))</span>
363         <span class="k">return</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
364
365     <span class="k">if</span> <span class="s1">&#39;application&#39;</span> <span class="ow">in</span> <span class="n">logFileXml</span><span class="o">.</span><span class="n">xmlroot</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
366         <span class="n">appliLog</span> <span class="o">=</span> <span class="n">logFileXml</span><span class="o">.</span><span class="n">xmlroot</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;application&#39;</span><span class="p">)</span>
367         <span class="n">launched_cmd</span> <span class="o">=</span> <span class="n">logFileXml</span><span class="o">.</span><span class="n">xmlroot</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">&#39;Site&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">attrib</span><span class="p">[</span><span class="s1">&#39;launchedCommand&#39;</span><span class="p">]</span>
368         <span class="c1"># if it corresponds, then the log has to be shown</span>
369         <span class="k">if</span> <span class="n">appliLog</span> <span class="o">==</span> <span class="n">application</span><span class="p">:</span>
370             <span class="k">return</span> <span class="kc">True</span><span class="p">,</span> <span class="n">appliLog</span><span class="p">,</span> <span class="n">launched_cmd</span>
371         <span class="k">elif</span> <span class="n">application</span> <span class="o">!=</span> <span class="s1">&#39;None&#39;</span><span class="p">:</span>
372             <span class="k">return</span> <span class="kc">False</span><span class="p">,</span> <span class="n">appliLog</span><span class="p">,</span> <span class="n">launched_cmd</span>
373         
374         <span class="k">return</span> <span class="kc">True</span><span class="p">,</span> <span class="n">appliLog</span><span class="p">,</span> <span class="n">launched_cmd</span>
375     
376     <span class="k">if</span> <span class="n">application</span> <span class="o">==</span> <span class="s1">&#39;None&#39;</span><span class="p">:</span>
377             <span class="k">return</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
378         
379     <span class="k">return</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span></div>
380
381 <div class="viewcode-block" id="list_log_file"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.list_log_file">[docs]</a><span class="k">def</span> <span class="nf">list_log_file</span><span class="p">(</span><span class="n">dirPath</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span>
382     <span class="sd">&quot;&quot;&quot;Find all files corresponding to expression in dirPath</span>
383 <span class="sd">    </span>
384 <span class="sd">    :param dirPath str: the directory where to search the files</span>
385 <span class="sd">    :param expression str: the regular expression of files to find</span>
386 <span class="sd">    :return: the list of files path and informations about it</span>
387 <span class="sd">    :rtype: list</span>
388 <span class="sd">    &quot;&quot;&quot;</span>
389     <span class="n">lRes</span> <span class="o">=</span> <span class="p">[]</span>
390     <span class="k">for</span> <span class="n">fileName</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">dirPath</span><span class="p">):</span>
391         <span class="c1"># YYYYMMDD_HHMMSS_namecmd.xml</span>
392         <span class="n">sExpr</span> <span class="o">=</span> <span class="n">expression</span>
393         <span class="n">oExpr</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">sExpr</span><span class="p">)</span>
394         <span class="k">if</span> <span class="n">oExpr</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">fileName</span><span class="p">):</span>
395             <span class="n">file_name</span> <span class="o">=</span> <span class="n">fileName</span>
396             <span class="k">if</span> <span class="n">fileName</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;micro_&quot;</span><span class="p">):</span>
397                 <span class="n">file_name</span> <span class="o">=</span> <span class="n">fileName</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="s2">&quot;micro_&quot;</span><span class="p">):]</span>
398             <span class="c1"># get date and hour and format it</span>
399             <span class="n">date_hour_cmd_host</span> <span class="o">=</span> <span class="n">file_name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;_&#39;</span><span class="p">)</span>
400             <span class="n">date_not_formated</span> <span class="o">=</span> <span class="n">date_hour_cmd_host</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
401             <span class="n">date</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">date_not_formated</span><span class="p">[</span><span class="mi">6</span><span class="p">:</span><span class="mi">8</span><span class="p">],</span> 
402                                  <span class="n">date_not_formated</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">6</span><span class="p">],</span> 
403                                  <span class="n">date_not_formated</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="p">])</span>
404             <span class="n">hour_not_formated</span> <span class="o">=</span> <span class="n">date_hour_cmd_host</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
405             <span class="n">hour</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">hour_not_formated</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">],</span> 
406                                  <span class="n">hour_not_formated</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">4</span><span class="p">],</span> 
407                                  <span class="n">hour_not_formated</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">6</span><span class="p">])</span>
408             <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">date_hour_cmd_host</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">:</span>
409                 <span class="n">cmd</span> <span class="o">=</span> <span class="n">date_hour_cmd_host</span><span class="p">[</span><span class="mi">2</span><span class="p">][:</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="s1">&#39;.xml&#39;</span><span class="p">)]</span>
410                 <span class="n">host</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
411             <span class="k">else</span><span class="p">:</span>
412                 <span class="n">cmd</span> <span class="o">=</span> <span class="n">date_hour_cmd_host</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
413                 <span class="n">host</span> <span class="o">=</span> <span class="n">date_hour_cmd_host</span><span class="p">[</span><span class="mi">3</span><span class="p">][:</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="s1">&#39;.xml&#39;</span><span class="p">)]</span>
414             <span class="n">lRes</span><span class="o">.</span><span class="n">append</span><span class="p">((</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">dirPath</span><span class="p">,</span> <span class="n">fileName</span><span class="p">),</span> 
415                          <span class="n">date_not_formated</span><span class="p">,</span>
416                          <span class="n">date</span><span class="p">,</span>
417                          <span class="n">hour_not_formated</span><span class="p">,</span>
418                          <span class="n">hour</span><span class="p">,</span>
419                          <span class="n">cmd</span><span class="p">,</span>
420                          <span class="n">host</span><span class="p">))</span>
421     <span class="k">return</span> <span class="n">lRes</span></div>
422
423 <div class="viewcode-block" id="update_hat_xml"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.update_hat_xml">[docs]</a><span class="k">def</span> <span class="nf">update_hat_xml</span><span class="p">(</span><span class="n">logDir</span><span class="p">,</span> <span class="n">application</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">notShownCommands</span> <span class="o">=</span> <span class="p">[]):</span>
424     <span class="sd">&quot;&quot;&quot;\</span>
425 <span class="sd">    Create the xml file in logDir that contain all the xml file </span>
426 <span class="sd">    and have a name like YYYYMMDD_HHMMSS_namecmd.xml</span>
427 <span class="sd">    </span>
428 <span class="sd">    :param logDir str: the directory to parse</span>
429 <span class="sd">    :param application str: the name of the application if there is any</span>
430 <span class="sd">    &quot;&quot;&quot;</span>
431     <span class="c1"># Create an instance of XmlLogFile class to create hat.xml file</span>
432     <span class="n">xmlHatFilePath</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">logDir</span><span class="p">,</span> <span class="s1">&#39;hat.xml&#39;</span><span class="p">)</span>
433     <span class="n">xmlHat</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">xmlManager</span><span class="o">.</span><span class="n">XmlLogFile</span><span class="p">(</span><span class="n">xmlHatFilePath</span><span class="p">,</span>
434                                     <span class="s2">&quot;LOGlist&quot;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;application&quot;</span> <span class="p">:</span> <span class="n">application</span><span class="p">})</span>
435     <span class="c1"># parse the log directory to find all the command logs, </span>
436     <span class="c1"># then add it to the xml file</span>
437     <span class="n">lLogFile</span> <span class="o">=</span> <span class="n">list_log_file</span><span class="p">(</span><span class="n">logDir</span><span class="p">,</span> <span class="n">log_macro_command_file_expression</span><span class="p">)</span>
438     <span class="k">for</span> <span class="n">filePath</span><span class="p">,</span> <span class="n">__</span><span class="p">,</span> <span class="n">date</span><span class="p">,</span> <span class="n">__</span><span class="p">,</span> <span class="n">hour</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">__</span> <span class="ow">in</span> <span class="n">lLogFile</span><span class="p">:</span>
439         <span class="n">showLog</span><span class="p">,</span> <span class="n">cmdAppli</span><span class="p">,</span> <span class="n">full_cmd</span> <span class="o">=</span> <span class="n">show_command_log</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span>
440                                               <span class="n">application</span><span class="p">,</span> <span class="n">notShownCommands</span><span class="p">)</span>
441         <span class="c1">#if cmd not in notShownCommands:</span>
442         <span class="k">if</span> <span class="n">showLog</span><span class="p">:</span>
443             <span class="c1"># add a node to the hat.xml file</span>
444             <span class="n">xmlHat</span><span class="o">.</span><span class="n">add_simple_node</span><span class="p">(</span><span class="s2">&quot;LogCommand&quot;</span><span class="p">,</span> 
445                                    <span class="n">text</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">basename</span><span class="p">(</span><span class="n">filePath</span><span class="p">),</span> 
446                                    <span class="n">attrib</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;date&quot;</span> <span class="p">:</span> <span class="n">date</span><span class="p">,</span> 
447                                              <span class="s2">&quot;hour&quot;</span> <span class="p">:</span> <span class="n">hour</span><span class="p">,</span> 
448                                              <span class="s2">&quot;cmd&quot;</span> <span class="p">:</span> <span class="n">cmd</span><span class="p">,</span> 
449                                              <span class="s2">&quot;application&quot;</span> <span class="p">:</span> <span class="n">cmdAppli</span><span class="p">,</span>
450                                              <span class="s2">&quot;full_command&quot;</span> <span class="p">:</span> <span class="n">full_cmd</span><span class="p">})</span>
451     
452     <span class="c1"># Write the file on the hard drive</span>
453     <span class="n">xmlHat</span><span class="o">.</span><span class="n">write_tree</span><span class="p">(</span><span class="s1">&#39;hat.xsl&#39;</span><span class="p">)</span></div>
454
455
456 <span class="c1"># TODO for future</span>
457 <span class="c1"># prepare skip to logging logger sat5.1</span>
458 <span class="c1"># suppose only one logger in sat5.1</span>
459 <span class="n">_currentLogger</span> <span class="o">=</span> <span class="p">[]</span>
460
461 <div class="viewcode-block" id="getCurrentLogger"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.getCurrentLogger">[docs]</a><span class="k">def</span> <span class="nf">getCurrentLogger</span><span class="p">():</span>
462   <span class="sd">&quot;&quot;&quot;get current logging logger, set as DefaultLogger if not set yet&quot;&quot;&quot;</span>
463   <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">_currentLogger</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
464     <span class="kn">import</span> <span class="nn">src.loggingSimple</span> <span class="k">as</span> <span class="nn">LOGSI</span>
465     <span class="n">logger</span> <span class="o">=</span> <span class="n">LOGSI</span><span class="o">.</span><span class="n">getDefaultLogger</span><span class="p">()</span>
466     <span class="n">_currentLogger</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">logger</span><span class="p">)</span>
467     <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;set by default current logger as </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">logger</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
468   <span class="k">return</span> <span class="n">_currentLogger</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span></div>
469
470 <div class="viewcode-block" id="getDefaultLogger"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.getDefaultLogger">[docs]</a><span class="k">def</span> <span class="nf">getDefaultLogger</span><span class="p">():</span>
471   <span class="sd">&quot;&quot;&quot;get simple logging logger DefaultLogger, set it as current&quot;&quot;&quot;</span>
472   <span class="kn">import</span> <span class="nn">src.loggingSimple</span> <span class="k">as</span> <span class="nn">LOGSI</span>
473   <span class="n">logger</span> <span class="o">=</span> <span class="n">LOGSI</span><span class="o">.</span><span class="n">getDefaultLogger</span><span class="p">()</span>
474   <span class="n">setCurrentLogger</span><span class="p">(</span><span class="n">logger</span><span class="p">)</span> <span class="c1"># set it as current</span>
475   <span class="k">return</span> <span class="n">logger</span></div>
476
477 <div class="viewcode-block" id="getUnittestLogger"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.getUnittestLogger">[docs]</a><span class="k">def</span> <span class="nf">getUnittestLogger</span><span class="p">():</span>
478   <span class="sd">&quot;&quot;&quot;get simple logging logger UnittestLogger, set it as current&quot;&quot;&quot;</span>
479   <span class="kn">import</span> <span class="nn">src.loggingSimple</span> <span class="k">as</span> <span class="nn">LOGSI</span>
480   <span class="n">logger</span> <span class="o">=</span> <span class="n">LOGSI</span><span class="o">.</span><span class="n">getUnittestLogger</span><span class="p">()</span>
481   <span class="n">setCurrentLogger</span><span class="p">(</span><span class="n">logger</span><span class="p">)</span> <span class="c1"># set it as current</span>
482   <span class="k">return</span> <span class="n">logger</span></div>
483
484 <div class="viewcode-block" id="setCurrentLogger"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.setCurrentLogger">[docs]</a><span class="k">def</span> <span class="nf">setCurrentLogger</span><span class="p">(</span><span class="n">logger</span><span class="p">):</span>
485   <span class="sd">&quot;&quot;&quot;temporary send all in stdout as simple logging logger&quot;&quot;&quot;</span>
486   <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">_currentLogger</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
487     <span class="n">_currentLogger</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">logger</span><span class="p">)</span>
488     <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;set current logger as </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">logger</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
489   <span class="k">else</span><span class="p">:</span>
490     <span class="k">if</span> <span class="n">_currentLogger</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="n">logger</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
491       <span class="c1"># logger.debug(&quot;quit current logger as default %s&quot; % _currentLogger[0].name)</span>
492       <span class="n">_currentLogger</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">logger</span>
493       <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;change current logger as </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">logger</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
494   <span class="k">return</span> <span class="n">_currentLogger</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span></div>
495
496 <div class="viewcode-block" id="isCurrentLoggerUnittest"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.isCurrentLoggerUnittest">[docs]</a><span class="k">def</span> <span class="nf">isCurrentLoggerUnittest</span><span class="p">():</span>
497     <span class="n">logger</span> <span class="o">=</span> <span class="n">getCurrentLogger</span><span class="p">()</span>
498     <span class="k">if</span> <span class="s2">&quot;Unittest&quot;</span> <span class="ow">in</span> <span class="n">logger</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
499       <span class="n">res</span> <span class="o">=</span> <span class="kc">True</span>
500     <span class="k">else</span><span class="p">:</span>
501       <span class="n">res</span> <span class="o">=</span> <span class="kc">False</span>
502     <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;isCurrentLoggerUnittest </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">logger</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">res</span><span class="p">)</span>
503     <span class="k">return</span> <span class="n">res</span></div>
504
505 <div class="viewcode-block" id="sendMessageToCurrentLogger"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.logger.sendMessageToCurrentLogger">[docs]</a><span class="k">def</span> <span class="nf">sendMessageToCurrentLogger</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">level</span><span class="p">):</span>
506     <span class="sd">&quot;&quot;&quot;</span>
507 <span class="sd">    assume relay from obsolescent</span>
508 <span class="sd">    logger.write(msg, 1/2/3...) to future</span>
509 <span class="sd">    logging.critical/warning/info...(msg) (as logging package tips)</span>
510 <span class="sd">    &quot;&quot;&quot;</span>
511     <span class="n">logger</span> <span class="o">=</span> <span class="n">getCurrentLogger</span><span class="p">()</span>
512     <span class="k">if</span> <span class="n">level</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
513       <span class="n">lev</span> <span class="o">=</span> <span class="mi">2</span>
514     <span class="k">else</span><span class="p">:</span>
515       <span class="n">lev</span> <span class="o">=</span> <span class="n">level</span>
516     <span class="k">if</span> <span class="n">lev</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
517       <span class="n">logger</span><span class="o">.</span><span class="n">critical</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
518       <span class="k">return</span>
519     <span class="k">if</span> <span class="n">lev</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
520       <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
521       <span class="k">return</span>
522     <span class="k">if</span> <span class="n">lev</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
523       <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
524       <span class="k">return</span>
525     <span class="k">if</span> <span class="n">lev</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
526       <span class="n">logger</span><span class="o">.</span><span class="n">step</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
527       <span class="k">return</span>
528     <span class="k">if</span> <span class="n">lev</span> <span class="o">==</span> <span class="mi">5</span><span class="p">:</span>
529       <span class="n">logger</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
530       <span class="k">return</span>
531     <span class="k">if</span> <span class="n">lev</span> <span class="o">&gt;=</span> <span class="mi">6</span><span class="p">:</span>
532       <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
533       <span class="k">return</span>
534     <span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;What is this level: &#39;</span><span class="si">%s</span><span class="s2">&#39; for message:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>
535     <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
536     <span class="k">return</span></div>
537 </pre></div>
538
539           </div>
540         </div>
541       </div>
542       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
543         <div class="sphinxsidebarwrapper">
544             <p class="logo"><a href="../../index.html">
545               <img class="logo" src="../../_static/sat_v5.0.png" alt="Logo"/>
546             </a></p><div class="relations">
547 <h3>Related Topics</h3>
548 <ul>
549   <li><a href="../../index.html">Documentation overview</a><ul>
550   <li><a href="../index.html">Module code</a><ul>
551   <li><a href="../src.html">src</a><ul>
552   </ul></li>
553   </ul></li>
554   </ul></li>
555 </ul>
556 </div>
557 <div id="searchbox" style="display: none" role="search">
558   <h3>Quick search</h3>
559     <div class="searchformwrapper">
560     <form class="search" action="../../search.html" method="get">
561       <input type="text" name="q" />
562       <input type="submit" value="Go" />
563       <input type="hidden" name="check_keywords" value="yes" />
564       <input type="hidden" name="area" value="default" />
565     </form>
566     </div>
567 </div>
568 <script type="text/javascript">$('#searchbox').show(0);</script>
569         </div>
570       </div>
571       <div class="clearer"></div>
572     </div>
573     <div class="footer">
574       &copy;2018, CEA.
575       
576       |
577       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.7.3</a>
578       &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
579       
580     </div>
581
582     
583
584     
585   </body>
586 </html>