Salome HOME
add doc/build for EZ direct html or pdf
[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
6 <html xmlns="http://www.w3.org/1999/xhtml">
7   <head>
8     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9     
10     <title>src.logger &mdash; salomeTools 5.0.0dev documentation</title>
11     
12     <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
13     <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
14     <link rel="stylesheet" href="/volatile/wambeke/SAT5/SAT5_S840_MATIX24/SAT/doc/src/custom.css" type="text/css" />
15     
16     <script type="text/javascript">
17       var DOCUMENTATION_OPTIONS = {
18         URL_ROOT:    '../../',
19         VERSION:     '5.0.0dev',
20         COLLAPSE_INDEX: false,
21         FILE_SUFFIX: '.html',
22         HAS_SOURCE:  true
23       };
24     </script>
25     <script type="text/javascript" src="../../_static/jquery.js"></script>
26     <script type="text/javascript" src="../../_static/underscore.js"></script>
27     <script type="text/javascript" src="../../_static/doctools.js"></script>
28     <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
29     <link rel="top" title="salomeTools 5.0.0dev documentation" href="../../index.html" />
30     <link rel="up" title="Module code" href="../index.html" />
31    
32   <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
33   
34   
35   <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
36
37   </head>
38   <body>
39   
40
41     <div class="document">
42       <div class="documentwrapper">
43         <div class="bodywrapper">
44           <div class="body" role="main">
45             
46   <h1>Source code for src.logger</h1><div class="highlight"><pre>
47 <span class="c">#!/usr/bin/env python</span>
48 <span class="c">#-*- coding:utf-8 -*-</span>
49 <span class="c">#  Copyright (C) 2010-2012  CEA/DEN</span>
50 <span class="c">#</span>
51 <span class="c">#  This library is free software; you can redistribute it and/or</span>
52 <span class="c">#  modify it under the terms of the GNU Lesser General Public</span>
53 <span class="c">#  License as published by the Free Software Foundation; either</span>
54 <span class="c">#  version 2.1 of the License.</span>
55 <span class="c">#</span>
56 <span class="c">#  This library is distributed in the hope that it will be useful,</span>
57 <span class="c">#  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
58 <span class="c">#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
59 <span class="c">#  Lesser General Public License for more details.</span>
60 <span class="c">#</span>
61 <span class="c">#  You should have received a copy of the GNU Lesser General Public</span>
62 <span class="c">#  License along with this library; if not, write to the Free Software</span>
63 <span class="c">#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA</span>
64
65 <span class="sd">&quot;&quot;&quot;\</span>
66 <span class="sd">Implements the classes and method relative to the logging</span>
67 <span class="sd">&quot;&quot;&quot;</span>
68
69 <span class="kn">import</span> <span class="nn">sys</span>
70 <span class="kn">import</span> <span class="nn">os</span>
71 <span class="kn">import</span> <span class="nn">datetime</span>
72 <span class="kn">import</span> <span class="nn">re</span>
73 <span class="kn">import</span> <span class="nn">tempfile</span>
74
75 <span class="kn">import</span> <span class="nn">src</span>
76 <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">printcolors</span>
77 <span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">xmlManager</span>
78
79 <span class="n">log_macro_command_file_expression</span> <span class="o">=</span> <span class="s">&quot;^[0-9]{8}_+[0-9]{6}_+.*\.xml$&quot;</span>
80 <span class="n">log_all_command_file_expression</span> <span class="o">=</span> <span class="s">&quot;^.*[0-9]{8}_+[0-9]{6}_+.*\.xml$&quot;</span>
81
82 <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>
83     <span class="sd">&quot;&quot;&quot;\</span>
84 <span class="sd">    Class to handle log mechanism.</span>
85 <span class="sd">    &quot;&quot;&quot;</span>
86     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
87                  <span class="n">config</span><span class="p">,</span>
88                  <span class="n">silent_sysstd</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
89                  <span class="n">all_in_terminal</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
90                  <span class="n">micro_command</span> <span class="o">=</span> <span class="bp">False</span><span class="p">):</span>
91         <span class="sd">&quot;&quot;&quot;Initialization</span>
92 <span class="sd">        </span>
93 <span class="sd">        :param config pyconf.Config: The global configuration.</span>
94 <span class="sd">        :param silent_sysstd boolean: if True, do not write anything</span>
95 <span class="sd">                                      in terminal.</span>
96 <span class="sd">        &quot;&quot;&quot;</span>
97         <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">config</span>
98         <span class="bp">self</span><span class="o">.</span><span class="n">default_level</span> <span class="o">=</span> <span class="mi">3</span>
99         <span class="bp">self</span><span class="o">.</span><span class="n">silentSysStd</span> <span class="o">=</span> <span class="n">silent_sysstd</span>
100         
101         <span class="c"># Construct xml log file location for sat prints.</span>
102         <span class="n">prefix</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
103         <span class="k">if</span> <span class="n">micro_command</span><span class="p">:</span>
104             <span class="n">prefix</span> <span class="o">=</span> <span class="s">&quot;micro_&quot;</span>
105         <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="s">&quot;_&quot;</span> <span class="o">+</span> 
106                              <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="s">&quot;_&quot;</span> <span class="o">+</span> 
107                              <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>
108         <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="s">&quot;.xml&quot;</span>
109         <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>
110         <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>
111         <span class="c"># Construct txt file location in order to log </span>
112         <span class="c"># the external commands calls (cmake, make, git clone, etc...)</span>
113         <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="s">&quot;.txt&quot;</span>
114         <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="s">&quot;OUT&quot;</span><span class="p">,</span> <span class="n">txtFileName</span><span class="p">)</span>
115         
116         <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>
117         <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>
118         
119         <span class="c"># The path of the log files (one for sat traces, and the other for </span>
120         <span class="c"># the system commands traces)</span>
121         <span class="bp">self</span><span class="o">.</span><span class="n">logFileName</span> <span class="o">=</span> <span class="n">logFileName</span>
122         <span class="bp">self</span><span class="o">.</span><span class="n">logFilePath</span> <span class="o">=</span> <span class="n">logFilePath</span>
123         <span class="bp">self</span><span class="o">.</span><span class="n">txtFileName</span> <span class="o">=</span> <span class="n">txtFileName</span>
124         <span class="bp">self</span><span class="o">.</span><span class="n">txtFilePath</span> <span class="o">=</span> <span class="n">txtFilePath</span>
125         
126         <span class="c"># The list of all log files corresponding to the current command and</span>
127         <span class="c"># the commands called by the current command</span>
128         <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>
129         
130         <span class="c"># Initialize xml instance and put first fields </span>
131         <span class="c"># like beginTime, user, command, etc... </span>
132         <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="s">&quot;SATcommand&quot;</span><span class="p">,</span> 
133                             <span class="n">attrib</span> <span class="o">=</span> <span class="p">{</span><span class="s">&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>
134         <span class="bp">self</span><span class="o">.</span><span class="n">put_initial_xml_fields</span><span class="p">()</span>
135         <span class="c"># Initialize the txt file for reading</span>
136         <span class="k">try</span><span class="p">:</span>
137             <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="s">&#39;w&#39;</span><span class="p">)</span>
138         <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
139             <span class="c">#msg1 = _(&quot;WARNING! Trying to write to a file that&quot;</span>
140             <span class="c">#         &quot; is not accessible:&quot;)</span>
141             <span class="c">#msg2 = _(&quot;The logs won&#39;t be written.&quot;)</span>
142             <span class="c">#print(&quot;%s\n%s\n%s\n&quot; % (src.printcolors.printcWarning(msg1),</span>
143             <span class="c">#                        src.printcolors.printcLabel(str(self.txtFilePath)),</span>
144             <span class="c">#                        src.printcolors.printcWarning(msg2) ))</span>
145             <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>
146             
147         <span class="c"># If the option all_in_terminal was called, all the system commands</span>
148         <span class="c"># are redirected to the terminal</span>
149         <span class="k">if</span> <span class="n">all_in_terminal</span><span class="p">:</span>
150             <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>
151         
152 <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>
153         <span class="sd">&quot;&quot;&quot;\</span>
154 <span class="sd">        Called at class initialization: Put all fields </span>
155 <span class="sd">        corresponding to the command context (user, time, ...)</span>
156 <span class="sd">        &quot;&quot;&quot;</span>
157         <span class="c"># command name</span>
158         <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="s">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&quot;command&quot;</span> <span class="p">:</span> 
159                                                      <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>
160         <span class="c"># version of salomeTools</span>
161         <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="s">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&quot;satversion&quot;</span> <span class="p">:</span> 
162                                             <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>
163         <span class="c"># machine name on which the command has been launched</span>
164         <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="s">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&quot;hostname&quot;</span> <span class="p">:</span> 
165                                                     <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>
166         <span class="c"># Distribution of the machine</span>
167         <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="s">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&quot;OS&quot;</span> <span class="p">:</span> 
168                                                         <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>
169         <span class="c"># The user that have launched the command</span>
170         <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="s">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&quot;user&quot;</span> <span class="p">:</span> 
171                                                         <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>
172         <span class="c"># The time when command was launched</span>
173         <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>
174         <span class="n">date_hour</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%2s</span><span class="s">/</span><span class="si">%2s</span><span class="s">/</span><span class="si">%4s</span><span class="s"> </span><span class="si">%2s</span><span class="s">h</span><span class="si">%2s</span><span class="s">m</span><span class="si">%2s</span><span class="s">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>
175         <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="s">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&quot;beginTime&quot;</span> <span class="p">:</span> 
176                                                         <span class="n">date_hour</span><span class="p">})</span>
177         <span class="c"># The application if any</span>
178         <span class="k">if</span> <span class="s">&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>
179             <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="s">&quot;Site&quot;</span><span class="p">,</span> 
180                         <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&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>
181         <span class="c"># The initialization of the trace node</span>
182         <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="s">&quot;Log&quot;</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">)</span>
183         <span class="c"># The system commands logs</span>
184         <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="s">&quot;OutLog&quot;</span><span class="p">,</span>
185                                     <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="s">&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>
186         <span class="c"># The initialization of the node where </span>
187         <span class="c"># to put the links to the other sat commands that can be called by any</span>
188         <span class="c"># command </span>
189         <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="s">&quot;Links&quot;</span><span class="p">)</span>
190 </div>
191 <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>
192                  <span class="n">log_file_name</span><span class="p">,</span>
193                  <span class="n">command_name</span><span class="p">,</span>
194                  <span class="n">command_res</span><span class="p">,</span>
195                  <span class="n">full_launched_command</span><span class="p">):</span>
196         <span class="sd">&quot;&quot;&quot;Add a link to another log file.</span>
197 <span class="sd">        </span>
198 <span class="sd">        :param log_file_name str: The file name of the link.</span>
199 <span class="sd">        :param command_name str: The name of the command linked.</span>
200 <span class="sd">        :param command_res str: The result of the command linked. &quot;0&quot; or &quot;1&quot;</span>
201 <span class="sd">        :parma full_launched_command str: The full lanch command </span>
202 <span class="sd">                                          (&quot;sat command ...&quot;)</span>
203 <span class="sd">        &quot;&quot;&quot;</span>
204         <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="s">&quot;Links&quot;</span><span class="p">)</span>
205         <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>
206                                        <span class="s">&quot;link&quot;</span><span class="p">,</span> 
207                                        <span class="n">text</span> <span class="o">=</span> <span class="n">log_file_name</span><span class="p">,</span>
208                                        <span class="n">attrib</span> <span class="o">=</span> <span class="p">{</span><span class="s">&quot;command&quot;</span> <span class="p">:</span> <span class="n">command_name</span><span class="p">,</span>
209                                                  <span class="s">&quot;passed&quot;</span> <span class="p">:</span> <span class="n">command_res</span><span class="p">,</span>
210                                            <span class="s">&quot;launchedCommand&quot;</span> <span class="p">:</span> <span class="n">full_launched_command</span><span class="p">})</span>
211 </div>
212 <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="bp">None</span><span class="p">,</span> <span class="n">screenOnly</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
213         <span class="sd">&quot;&quot;&quot;\</span>
214 <span class="sd">        function used in the commands </span>
215 <span class="sd">        to print in the terminal and the log file.</span>
216 <span class="sd">        </span>
217 <span class="sd">        :param message str: The message to print.</span>
218 <span class="sd">        :param level int: The output level corresponding </span>
219 <span class="sd">                          to the message 0 &lt; level &lt; 6.</span>
220 <span class="sd">        :param screenOnly boolean: if True, do not write in log file.</span>
221 <span class="sd">        &quot;&quot;&quot;</span>
222         <span class="c"># do not write message starting with \r to log file</span>
223         <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="s">&quot;</span><span class="se">\r</span><span class="s">&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>
224             <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="s">&quot;Log&quot;</span><span class="p">,</span> 
225                                           <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>
226
227         <span class="c"># get user or option output level</span>
228         <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>
229         <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="s">&#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>
230             <span class="c"># clean the message color if the terminal is redirected by user</span>
231             <span class="c"># ex: sat compile appli &gt; log.txt</span>
232             <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>
233         
234         <span class="c"># Print message regarding the output level value</span>
235         <span class="k">if</span> <span class="n">level</span><span class="p">:</span>
236             <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>
237                 <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>
238         <span class="k">else</span><span class="p">:</span>
239             <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>
240                 <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>
241         <span class="bp">self</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
242 </div>
243 <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>
244         <span class="sd">&quot;&quot;&quot;Print an error.</span>
245 <span class="sd">        </span>
246 <span class="sd">        :param message str: The message to print.</span>
247 <span class="sd">        &quot;&quot;&quot;</span>
248         <span class="c"># Print in the log file</span>
249         <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="s">&quot;traces&quot;</span><span class="p">,</span> <span class="n">_</span><span class="p">(</span><span class="s">&#39;ERROR:&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span><span class="p">)</span>
250
251         <span class="c"># Print in the terminal and clean colors if the terminal </span>
252         <span class="c"># is redirected by user</span>
253         <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="s">&#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>
254             <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="s">&#39;ERROR:&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span><span class="p">))</span>
255         <span class="k">else</span><span class="p">:</span>
256             <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="s">&#39;ERROR:&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span><span class="p">)</span>
257 </div>
258 <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>
259         <span class="sd">&quot;&quot;&quot;Flush terminal&quot;&quot;&quot;</span>
260         <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>
261         <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>
262         </div>
263 <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>
264         <span class="sd">&quot;&quot;&quot;\</span>
265 <span class="sd">        Called just after command end: Put all fields </span>
266 <span class="sd">        corresponding to the command end context (time).</span>
267 <span class="sd">        Write the log xml file on the hard drive.</span>
268 <span class="sd">        And display the command to launch to get the log</span>
269 <span class="sd">        </span>
270 <span class="sd">        :param attribute dict: the attribute to add to the node &quot;Site&quot;.</span>
271 <span class="sd">        &quot;&quot;&quot;</span>       
272         <span class="c"># Get current time (end of command) and format it</span>
273         <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>
274         <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>
275         <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>
276         <span class="n">tf</span> <span class="o">=</span> <span class="n">dt</span>
277         <span class="n">delta</span> <span class="o">=</span> <span class="n">tf</span> <span class="o">-</span> <span class="n">t0</span>
278         <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>
279         <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>
280         <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>
281         <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>
282         <span class="c"># Add the fields corresponding to the end time</span>
283         <span class="c"># and the total time of command</span>
284         <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="s">&#39;%Y/%m/</span><span class="si">%d</span><span class="s"> %Hh%Mm%Ss&#39;</span><span class="p">)</span>
285         <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="s">&quot;Site&quot;</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&quot;endTime&quot;</span> <span class="p">:</span> <span class="n">endtime</span><span class="p">})</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="s">&quot;Site&quot;</span><span class="p">,</span> 
287                 <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">&quot;TotalTime&quot;</span> <span class="p">:</span> <span class="s">&quot;</span><span class="si">%i</span><span class="s">h</span><span class="si">%i</span><span class="s">m</span><span class="si">%i</span><span class="s">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>
288         
289         <span class="c"># Add the attribute passed to the method</span>
290         <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="s">&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>
291         
292         <span class="c"># Call the method to write the xml file on the hard drive</span>
293         <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="s">&quot;command.xsl&quot;</span><span class="p">)</span>
294         
295         <span class="c"># Dump the config in a pyconf file in the log directory</span>
296         <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>
297         <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> 
298                                 <span class="o">+</span> <span class="s">&quot;_&quot;</span> 
299                                 <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> 
300                                 <span class="o">+</span> <span class="s">&quot;.pyconf&quot;</span><span class="p">)</span>
301         <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="s">&#39;OUT&#39;</span><span class="p">,</span> <span class="n">dumpedPyconfFileName</span><span class="p">)</span>
302         <span class="k">try</span><span class="p">:</span>
303             <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="s">&#39;w&#39;</span><span class="p">)</span>
304             <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>
305             <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
306         <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
307             <span class="k">pass</span>
308 </div></div>
309 <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>
310     <span class="sd">&quot;&quot;&quot;\</span>
311 <span class="sd">    From a string date in format YYYYMMDD_HHMMSS</span>
312 <span class="sd">    returns list year, mon, day, hour, minutes, seconds </span>
313 <span class="sd">    </span>
314 <span class="sd">    :param date str: The date in format YYYYMMDD_HHMMSS</span>
315 <span class="sd">    :return: the same date and time in separate variables.</span>
316 <span class="sd">    :rtype: (str,str,str,str,str,str)</span>
317 <span class="sd">    &quot;&quot;&quot;</span>
318     <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>
319     <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>
320     <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>
321     <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>
322     <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>
323     <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>
324     <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>
325 </div>
326 <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>
327     <span class="sd">&quot;&quot;&quot;\</span>
328 <span class="sd">    Replace total_seconds from datetime module </span>
329 <span class="sd">    in order to be compatible with old python versions</span>
330 <span class="sd">    </span>
331 <span class="sd">    :param timedelta datetime.timedelta: The delta between two dates</span>
332 <span class="sd">    :return: The number of seconds corresponding to timedelta.</span>
333 <span class="sd">    :rtype: float</span>
334 <span class="sd">    &quot;&quot;&quot;</span>
335     <span class="k">return</span> <span class="p">(</span>
336         <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>
337         <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>
338         </div>
339 <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>
340     <span class="sd">&quot;&quot;&quot;\</span>
341 <span class="sd">    Used in updateHatXml. </span>
342 <span class="sd">    Determine if the log xml file logFilePath </span>
343 <span class="sd">    has to be shown or not in the hat log.</span>
344 <span class="sd">    </span>
345 <span class="sd">    :param logFilePath str: the path to the command xml log file</span>
346 <span class="sd">    :param cmd str: the command of the log file</span>
347 <span class="sd">    :param application str: the application passed as parameter </span>
348 <span class="sd">                            to the salomeTools command</span>
349 <span class="sd">    :param notShownCommands list: the list of commands </span>
350 <span class="sd">                                  that are not shown by default</span>
351 <span class="sd">    </span>
352 <span class="sd">    :return: True if cmd is not in notShownCommands and the application </span>
353 <span class="sd">             in the log file corresponds to application</span>
354 <span class="sd">    :rtype: boolean</span>
355 <span class="sd">    &quot;&quot;&quot;</span>
356     <span class="c"># When the command is not in notShownCommands, no need to go further :</span>
357     <span class="c"># Do not show</span>
358     <span class="k">if</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">notShownCommands</span><span class="p">:</span>
359         <span class="k">return</span> <span class="bp">False</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span>
360  
361     <span class="c"># Get the application of the log file</span>
362     <span class="k">try</span><span class="p">:</span>
363         <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>
364     <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
365         <span class="n">msg</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s">&quot;WARNING: the log file </span><span class="si">%s</span><span class="s"> cannot be read:&quot;</span> <span class="o">%</span> <span class="n">logFilePath</span><span class="p">)</span>
366         <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="s">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s">&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>
367         <span class="k">return</span> <span class="bp">False</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span>
368
369     <span class="k">if</span> <span class="s">&#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>
370         <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="s">&#39;application&#39;</span><span class="p">)</span>
371         <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="s">&#39;Site&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">attrib</span><span class="p">[</span><span class="s">&#39;launchedCommand&#39;</span><span class="p">]</span>
372         <span class="c"># if it corresponds, then the log has to be shown</span>
373         <span class="k">if</span> <span class="n">appliLog</span> <span class="o">==</span> <span class="n">application</span><span class="p">:</span>
374             <span class="k">return</span> <span class="bp">True</span><span class="p">,</span> <span class="n">appliLog</span><span class="p">,</span> <span class="n">launched_cmd</span>
375         <span class="k">elif</span> <span class="n">application</span> <span class="o">!=</span> <span class="s">&#39;None&#39;</span><span class="p">:</span>
376             <span class="k">return</span> <span class="bp">False</span><span class="p">,</span> <span class="n">appliLog</span><span class="p">,</span> <span class="n">launched_cmd</span>
377         
378         <span class="k">return</span> <span class="bp">True</span><span class="p">,</span> <span class="n">appliLog</span><span class="p">,</span> <span class="n">launched_cmd</span>
379     
380     <span class="k">if</span> <span class="n">application</span> <span class="o">==</span> <span class="s">&#39;None&#39;</span><span class="p">:</span>
381             <span class="k">return</span> <span class="bp">True</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span>
382         
383     <span class="k">return</span> <span class="bp">False</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span>
384 </div>
385 <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>
386     <span class="sd">&quot;&quot;&quot;Find all files corresponding to expression in dirPath</span>
387 <span class="sd">    </span>
388 <span class="sd">    :param dirPath str: the directory where to search the files</span>
389 <span class="sd">    :param expression str: the regular expression of files to find</span>
390 <span class="sd">    :return: the list of files path and informations about it</span>
391 <span class="sd">    :rtype: list</span>
392 <span class="sd">    &quot;&quot;&quot;</span>
393     <span class="n">lRes</span> <span class="o">=</span> <span class="p">[]</span>
394     <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>
395         <span class="c"># YYYYMMDD_HHMMSS_namecmd.xml</span>
396         <span class="n">sExpr</span> <span class="o">=</span> <span class="n">expression</span>
397         <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>
398         <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>
399             <span class="n">file_name</span> <span class="o">=</span> <span class="n">fileName</span>
400             <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="s">&quot;micro_&quot;</span><span class="p">):</span>
401                 <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="s">&quot;micro_&quot;</span><span class="p">):]</span>
402             <span class="c"># get date and hour and format it</span>
403             <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="s">&#39;_&#39;</span><span class="p">)</span>
404             <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>
405             <span class="n">date</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">/</span><span class="si">%s</span><span class="s">/</span><span class="si">%s</span><span class="s">&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> 
406                                  <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> 
407                                  <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>
408             <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>
409             <span class="n">hour</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">:</span><span class="si">%s</span><span class="s">:</span><span class="si">%s</span><span class="s">&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> 
410                                  <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> 
411                                  <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>
412             <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>
413                 <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="s">&#39;.xml&#39;</span><span class="p">)]</span>
414                 <span class="n">host</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
415             <span class="k">else</span><span class="p">:</span>
416                 <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>
417                 <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="s">&#39;.xml&#39;</span><span class="p">)]</span>
418             <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> 
419                          <span class="n">date_not_formated</span><span class="p">,</span>
420                          <span class="n">date</span><span class="p">,</span>
421                          <span class="n">hour_not_formated</span><span class="p">,</span>
422                          <span class="n">hour</span><span class="p">,</span>
423                          <span class="n">cmd</span><span class="p">,</span>
424                          <span class="n">host</span><span class="p">))</span>
425     <span class="k">return</span> <span class="n">lRes</span>
426 </div>
427 <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="bp">None</span><span class="p">,</span> <span class="n">notShownCommands</span> <span class="o">=</span> <span class="p">[]):</span>
428     <span class="sd">&quot;&quot;&quot;\</span>
429 <span class="sd">    Create the xml file in logDir that contain all the xml file </span>
430 <span class="sd">    and have a name like YYYYMMDD_HHMMSS_namecmd.xml</span>
431 <span class="sd">    </span>
432 <span class="sd">    :param logDir str: the directory to parse</span>
433 <span class="sd">    :param application str: the name of the application if there is any</span>
434 <span class="sd">    &quot;&quot;&quot;</span>
435     <span class="c"># Create an instance of XmlLogFile class to create hat.xml file</span>
436     <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="s">&#39;hat.xml&#39;</span><span class="p">)</span>
437     <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>
438                                     <span class="s">&quot;LOGlist&quot;</span><span class="p">,</span> <span class="p">{</span><span class="s">&quot;application&quot;</span> <span class="p">:</span> <span class="n">application</span><span class="p">})</span>
439     <span class="c"># parse the log directory to find all the command logs, </span>
440     <span class="c"># then add it to the xml file</span>
441     <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>
442     <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>
443         <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>
444                                               <span class="n">application</span><span class="p">,</span> <span class="n">notShownCommands</span><span class="p">)</span>
445         <span class="c">#if cmd not in notShownCommands:</span>
446         <span class="k">if</span> <span class="n">showLog</span><span class="p">:</span>
447             <span class="c"># add a node to the hat.xml file</span>
448             <span class="n">xmlHat</span><span class="o">.</span><span class="n">add_simple_node</span><span class="p">(</span><span class="s">&quot;LogCommand&quot;</span><span class="p">,</span> 
449                                    <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> 
450                                    <span class="n">attrib</span> <span class="o">=</span> <span class="p">{</span><span class="s">&quot;date&quot;</span> <span class="p">:</span> <span class="n">date</span><span class="p">,</span> 
451                                              <span class="s">&quot;hour&quot;</span> <span class="p">:</span> <span class="n">hour</span><span class="p">,</span> 
452                                              <span class="s">&quot;cmd&quot;</span> <span class="p">:</span> <span class="n">cmd</span><span class="p">,</span> 
453                                              <span class="s">&quot;application&quot;</span> <span class="p">:</span> <span class="n">cmdAppli</span><span class="p">,</span>
454                                              <span class="s">&quot;full_command&quot;</span> <span class="p">:</span> <span class="n">full_cmd</span><span class="p">})</span>
455     
456     <span class="c"># Write the file on the hard drive</span>
457     <span class="n">xmlHat</span><span class="o">.</span><span class="n">write_tree</span><span class="p">(</span><span class="s">&#39;hat.xsl&#39;</span><span class="p">)</span></div>
458 </pre></div>
459
460           </div>
461         </div>
462       </div>
463       <div class="sphinxsidebar">
464         <div class="sphinxsidebarwrapper">
465             <p class="logo"><a href="../../index.html">
466               <img class="logo" src="../../_static/sat_v5.0.png" alt="Logo"/>
467             </a></p><div class="relations">
468 <h3>Related Topics</h3>
469 <ul>
470   <li><a href="../../index.html">Documentation overview</a><ul>
471   <li><a href="../index.html">Module code</a><ul>
472   </ul></li>
473   </ul></li>
474 </ul>
475 </div>
476 <div id="searchbox" style="display: none">
477   <h3>Quick search</h3>
478     <form class="search" action="../../search.html" method="get">
479       <input type="text" name="q" />
480       <input type="submit" value="Go" />
481       <input type="hidden" name="check_keywords" value="yes" />
482       <input type="hidden" name="area" value="default" />
483     </form>
484     <p class="searchtip" style="font-size: 90%">
485     Enter search terms or a module, class or function name.
486     </p>
487 </div>
488 <script type="text/javascript">$('#searchbox').show(0);</script>
489         </div>
490       </div>
491       <div class="clearer"></div>
492     </div>
493     <div class="footer">
494       &copy;2018, CEA.
495       
496       |
497       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.1.3</a>
498       &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster </a>
499       
500     </div>
501
502     
503
504     
505   </body>
506 </html>