Salome HOME
suppresion d'un log
[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">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">printcolors</span>
64 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">xmlManager</span>
65
66 <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>
67 <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>
68
69 <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>
70     <span class="sd">&quot;&quot;&quot;\</span>
71 <span class="sd">    Class to handle log mechanism.</span>
72 <span class="sd">    &quot;&quot;&quot;</span>
73     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
74                  <span class="n">config</span><span class="p">,</span>
75                  <span class="n">silent_sysstd</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
76                  <span class="n">all_in_terminal</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
77                  <span class="n">micro_command</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span>
78         <span class="sd">&quot;&quot;&quot;Initialization</span>
79 <span class="sd">        </span>
80 <span class="sd">        :param config pyconf.Config: The global configuration.</span>
81 <span class="sd">        :param silent_sysstd boolean: if True, do not write anything</span>
82 <span class="sd">                                      in terminal.</span>
83 <span class="sd">        &quot;&quot;&quot;</span>
84         <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">config</span>
85         <span class="bp">self</span><span class="o">.</span><span class="n">default_level</span> <span class="o">=</span> <span class="mi">3</span>
86         <span class="bp">self</span><span class="o">.</span><span class="n">silentSysStd</span> <span class="o">=</span> <span class="n">silent_sysstd</span>
87         
88         <span class="c1"># Construct xml log file location for sat prints.</span>
89         <span class="n">prefix</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
90         <span class="k">if</span> <span class="n">micro_command</span><span class="p">:</span>
91             <span class="n">prefix</span> <span class="o">=</span> <span class="s2">&quot;micro_&quot;</span>
92         <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> 
93                              <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> 
94                              <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>
95         <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>
96         <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>
97         <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>
98         <span class="c1"># Construct txt file location in order to log </span>
99         <span class="c1"># the external commands calls (cmake, make, git clone, etc...)</span>
100         <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>
101         <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>
102         
103         <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>
104         <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>
105         
106         <span class="c1"># The path of the log files (one for sat traces, and the other for </span>
107         <span class="c1"># the system commands traces)</span>
108         <span class="bp">self</span><span class="o">.</span><span class="n">logFileName</span> <span class="o">=</span> <span class="n">logFileName</span>
109         <span class="bp">self</span><span class="o">.</span><span class="n">logFilePath</span> <span class="o">=</span> <span class="n">logFilePath</span>
110         <span class="bp">self</span><span class="o">.</span><span class="n">txtFileName</span> <span class="o">=</span> <span class="n">txtFileName</span>
111         <span class="bp">self</span><span class="o">.</span><span class="n">txtFilePath</span> <span class="o">=</span> <span class="n">txtFilePath</span>
112         
113         <span class="c1"># The list of all log files corresponding to the current command and</span>
114         <span class="c1"># the commands called by the current command</span>
115         <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>
116         
117         <span class="c1"># Initialize xml instance and put first fields </span>
118         <span class="c1"># like beginTime, user, command, etc... </span>
119         <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> 
120                             <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>
121         <span class="bp">self</span><span class="o">.</span><span class="n">put_initial_xml_fields</span><span class="p">()</span>
122         <span class="c1"># Initialize the txt file for reading</span>
123         <span class="k">try</span><span class="p">:</span>
124             <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>
125         <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
126             <span class="c1">#msg1 = _(&quot;WARNING! Trying to write to a file that&quot;</span>
127             <span class="c1">#         &quot; is not accessible:&quot;)</span>
128             <span class="c1">#msg2 = _(&quot;The logs won&#39;t be written.&quot;)</span>
129             <span class="c1">#print(&quot;%s\n%s\n%s\n&quot; % (src.printcolors.printcWarning(msg1),</span>
130             <span class="c1">#                        src.printcolors.printcLabel(str(self.txtFilePath)),</span>
131             <span class="c1">#                        src.printcolors.printcWarning(msg2) ))</span>
132             <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>
133             
134         <span class="c1"># If the option all_in_terminal was called, all the system commands</span>
135         <span class="c1"># are redirected to the terminal</span>
136         <span class="k">if</span> <span class="n">all_in_terminal</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="n">sys</span><span class="o">.</span><span class="n">__stdout__</span>
138         
139 <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>
140         <span class="sd">&quot;&quot;&quot;\</span>
141 <span class="sd">        Called at class initialization: Put all fields </span>
142 <span class="sd">        corresponding to the command context (user, time, ...)</span>
143 <span class="sd">        &quot;&quot;&quot;</span>
144         <span class="c1"># command name</span>
145         <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> 
146                                                      <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>
147         <span class="c1"># version of salomeTools</span>
148         <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> 
149                                             <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>
150         <span class="c1"># machine name on which the command has been launched</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;hostname&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">VARS</span><span class="o">.</span><span class="n">hostname</span><span class="p">})</span>
153         <span class="c1"># Distribution of the machine</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;OS&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">dist</span><span class="p">})</span>
156         <span class="c1"># The user that have launched the command</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;user&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">user</span><span class="p">})</span>
159         <span class="c1"># The time when command was launched</span>
160         <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>
161         <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>
162         <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> 
163                                                         <span class="n">date_hour</span><span class="p">})</span>
164         <span class="c1"># The application if any</span>
165         <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>
166             <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> 
167                         <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>
168         <span class="c1"># The initialization of the trace node</span>
169         <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>
170         <span class="c1"># The system commands logs</span>
171         <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>
172                                     <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>
173         <span class="c1"># The initialization of the node where </span>
174         <span class="c1"># to put the links to the other sat commands that can be called by any</span>
175         <span class="c1"># command </span>
176         <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>
177
178 <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>
179                  <span class="n">log_file_name</span><span class="p">,</span>
180                  <span class="n">command_name</span><span class="p">,</span>
181                  <span class="n">command_res</span><span class="p">,</span>
182                  <span class="n">full_launched_command</span><span class="p">):</span>
183         <span class="sd">&quot;&quot;&quot;Add a link to another log file.</span>
184 <span class="sd">        </span>
185 <span class="sd">        :param log_file_name str: The file name of the link.</span>
186 <span class="sd">        :param command_name str: The name of the command linked.</span>
187 <span class="sd">        :param command_res str: The result of the command linked. &quot;0&quot; or &quot;1&quot;</span>
188 <span class="sd">        :parma full_launched_command str: The full lanch command </span>
189 <span class="sd">                                          (&quot;sat command ...&quot;)</span>
190 <span class="sd">        &quot;&quot;&quot;</span>
191         <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>
192         <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>
193                                        <span class="s2">&quot;link&quot;</span><span class="p">,</span> 
194                                        <span class="n">text</span> <span class="o">=</span> <span class="n">log_file_name</span><span class="p">,</span>
195                                        <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>
196                                                  <span class="s2">&quot;passed&quot;</span> <span class="p">:</span> <span class="n">command_res</span><span class="p">,</span>
197                                            <span class="s2">&quot;launchedCommand&quot;</span> <span class="p">:</span> <span class="n">full_launched_command</span><span class="p">})</span></div>
198
199 <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>
200         <span class="sd">&quot;&quot;&quot;\</span>
201 <span class="sd">        function used in the commands </span>
202 <span class="sd">        to print in the terminal and the log file.</span>
203 <span class="sd">        </span>
204 <span class="sd">        :param message str: The message to print.</span>
205 <span class="sd">        :param level int: The output level corresponding </span>
206 <span class="sd">                          to the message 0 &lt; level &lt; 6.</span>
207 <span class="sd">        :param screenOnly boolean: if True, do not write in log file.</span>
208 <span class="sd">        &quot;&quot;&quot;</span>
209         <span class="c1"># do not write message starting with \r to log file</span>
210         <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>
211             <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> 
212                                           <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>
213
214         <span class="c1"># get user or option output level</span>
215         <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>
216         <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>
217             <span class="c1"># clean the message color if the terminal is redirected by user</span>
218             <span class="c1"># ex: sat compile appli &gt; log.txt</span>
219             <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>
220         
221         <span class="c1"># Print message regarding the output level value</span>
222         <span class="k">if</span> <span class="n">level</span><span class="p">:</span>
223             <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>
224                 <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>
225         <span class="k">else</span><span class="p">:</span>
226             <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>
227                 <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>
228         <span class="bp">self</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span></div>
229
230 <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>
231         <span class="sd">&quot;&quot;&quot;Print an error.</span>
232 <span class="sd">        </span>
233 <span class="sd">        :param message str: The message to print.</span>
234 <span class="sd">        &quot;&quot;&quot;</span>
235         <span class="c1"># Print in the log file</span>
236         <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>
237
238         <span class="c1"># Print in the terminal and clean colors if the terminal </span>
239         <span class="c1"># is redirected by user</span>
240         <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>
241             <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>
242         <span class="k">else</span><span class="p">:</span>
243             <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>
244
245 <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>
246         <span class="sd">&quot;&quot;&quot;Flush terminal&quot;&quot;&quot;</span>
247         <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>
248         <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>
249         
250 <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>
251         <span class="sd">&quot;&quot;&quot;\</span>
252 <span class="sd">        Called just after command end: Put all fields </span>
253 <span class="sd">        corresponding to the command end context (time).</span>
254 <span class="sd">        Write the log xml file on the hard drive.</span>
255 <span class="sd">        And display the command to launch to get the log</span>
256 <span class="sd">        </span>
257 <span class="sd">        :param attribute dict: the attribute to add to the node &quot;Site&quot;.</span>
258 <span class="sd">        &quot;&quot;&quot;</span>       
259         <span class="c1"># Get current time (end of command) and format it</span>
260         <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>
261         <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>
262         <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>
263         <span class="n">tf</span> <span class="o">=</span> <span class="n">dt</span>
264         <span class="n">delta</span> <span class="o">=</span> <span class="n">tf</span> <span class="o">-</span> <span class="n">t0</span>
265         <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>
266         <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>
267         <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>
268         <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>
269         <span class="c1"># Add the fields corresponding to the end time</span>
270         <span class="c1"># and the total time of command</span>
271         <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>
272         <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>
273         <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> 
274                 <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>
275         
276         <span class="c1"># Add the attribute passed to the method</span>
277         <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>
278         
279         <span class="c1"># Call the method to write the xml file on the hard drive</span>
280         <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>
281         
282         <span class="c1"># Dump the config in a pyconf file in the log directory</span>
283         <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>
284         <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> 
285                                 <span class="o">+</span> <span class="s2">&quot;_&quot;</span> 
286                                 <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> 
287                                 <span class="o">+</span> <span class="s2">&quot;.pyconf&quot;</span><span class="p">)</span>
288         <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>
289         <span class="k">try</span><span class="p">:</span>
290             <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>
291             <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>
292             <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
293         <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
294             <span class="k">pass</span></div></div>
295
296 <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>
297     <span class="sd">&quot;&quot;&quot;\</span>
298 <span class="sd">    From a string date in format YYYYMMDD_HHMMSS</span>
299 <span class="sd">    returns list year, mon, day, hour, minutes, seconds </span>
300 <span class="sd">    </span>
301 <span class="sd">    :param date str: The date in format YYYYMMDD_HHMMSS</span>
302 <span class="sd">    :return: the same date and time in separate variables.</span>
303 <span class="sd">    :rtype: (str,str,str,str,str,str)</span>
304 <span class="sd">    &quot;&quot;&quot;</span>
305     <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>
306     <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>
307     <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>
308     <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>
309     <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>
310     <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>
311     <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>
312
313 <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>
314     <span class="sd">&quot;&quot;&quot;\</span>
315 <span class="sd">    Replace total_seconds from datetime module </span>
316 <span class="sd">    in order to be compatible with old python versions</span>
317 <span class="sd">    </span>
318 <span class="sd">    :param timedelta datetime.timedelta: The delta between two dates</span>
319 <span class="sd">    :return: The number of seconds corresponding to timedelta.</span>
320 <span class="sd">    :rtype: float</span>
321 <span class="sd">    &quot;&quot;&quot;</span>
322     <span class="k">return</span> <span class="p">(</span>
323         <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>
324         <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>
325         
326 <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>
327     <span class="sd">&quot;&quot;&quot;\</span>
328 <span class="sd">    Used in updateHatXml. </span>
329 <span class="sd">    Determine if the log xml file logFilePath </span>
330 <span class="sd">    has to be shown or not in the hat log.</span>
331 <span class="sd">    </span>
332 <span class="sd">    :param logFilePath str: the path to the command xml log file</span>
333 <span class="sd">    :param cmd str: the command of the log file</span>
334 <span class="sd">    :param application str: the application passed as parameter </span>
335 <span class="sd">                            to the salomeTools command</span>
336 <span class="sd">    :param notShownCommands list: the list of commands </span>
337 <span class="sd">                                  that are not shown by default</span>
338 <span class="sd">    </span>
339 <span class="sd">    :return: True if cmd is not in notShownCommands and the application </span>
340 <span class="sd">             in the log file corresponds to application</span>
341 <span class="sd">    :rtype: boolean</span>
342 <span class="sd">    &quot;&quot;&quot;</span>
343     <span class="c1"># When the command is not in notShownCommands, no need to go further :</span>
344     <span class="c1"># Do not show</span>
345     <span class="k">if</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">notShownCommands</span><span class="p">:</span>
346         <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>
347  
348     <span class="c1"># Get the application of the log file</span>
349     <span class="k">try</span><span class="p">:</span>
350         <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>
351     <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
352         <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>
353         <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>
354         <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>
355
356     <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>
357         <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>
358         <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>
359         <span class="c1"># if it corresponds, then the log has to be shown</span>
360         <span class="k">if</span> <span class="n">appliLog</span> <span class="o">==</span> <span class="n">application</span><span class="p">:</span>
361             <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>
362         <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>
363             <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>
364         
365         <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>
366     
367     <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>
368             <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>
369         
370     <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>
371
372 <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>
373     <span class="sd">&quot;&quot;&quot;Find all files corresponding to expression in dirPath</span>
374 <span class="sd">    </span>
375 <span class="sd">    :param dirPath str: the directory where to search the files</span>
376 <span class="sd">    :param expression str: the regular expression of files to find</span>
377 <span class="sd">    :return: the list of files path and informations about it</span>
378 <span class="sd">    :rtype: list</span>
379 <span class="sd">    &quot;&quot;&quot;</span>
380     <span class="n">lRes</span> <span class="o">=</span> <span class="p">[]</span>
381     <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>
382         <span class="c1"># YYYYMMDD_HHMMSS_namecmd.xml</span>
383         <span class="n">sExpr</span> <span class="o">=</span> <span class="n">expression</span>
384         <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>
385         <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>
386             <span class="n">file_name</span> <span class="o">=</span> <span class="n">fileName</span>
387             <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>
388                 <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>
389             <span class="c1"># get date and hour and format it</span>
390             <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>
391             <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>
392             <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> 
393                                  <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> 
394                                  <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>
395             <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>
396             <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> 
397                                  <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> 
398                                  <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>
399             <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>
400                 <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>
401                 <span class="n">host</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
402             <span class="k">else</span><span class="p">:</span>
403                 <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>
404                 <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>
405             <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> 
406                          <span class="n">date_not_formated</span><span class="p">,</span>
407                          <span class="n">date</span><span class="p">,</span>
408                          <span class="n">hour_not_formated</span><span class="p">,</span>
409                          <span class="n">hour</span><span class="p">,</span>
410                          <span class="n">cmd</span><span class="p">,</span>
411                          <span class="n">host</span><span class="p">))</span>
412     <span class="k">return</span> <span class="n">lRes</span></div>
413
414 <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>
415     <span class="sd">&quot;&quot;&quot;\</span>
416 <span class="sd">    Create the xml file in logDir that contain all the xml file </span>
417 <span class="sd">    and have a name like YYYYMMDD_HHMMSS_namecmd.xml</span>
418 <span class="sd">    </span>
419 <span class="sd">    :param logDir str: the directory to parse</span>
420 <span class="sd">    :param application str: the name of the application if there is any</span>
421 <span class="sd">    &quot;&quot;&quot;</span>
422     <span class="c1"># Create an instance of XmlLogFile class to create hat.xml file</span>
423     <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>
424     <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>
425                                     <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>
426     <span class="c1"># parse the log directory to find all the command logs, </span>
427     <span class="c1"># then add it to the xml file</span>
428     <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>
429     <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>
430         <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>
431                                               <span class="n">application</span><span class="p">,</span> <span class="n">notShownCommands</span><span class="p">)</span>
432         <span class="c1">#if cmd not in notShownCommands:</span>
433         <span class="k">if</span> <span class="n">showLog</span><span class="p">:</span>
434             <span class="c1"># add a node to the hat.xml file</span>
435             <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> 
436                                    <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> 
437                                    <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> 
438                                              <span class="s2">&quot;hour&quot;</span> <span class="p">:</span> <span class="n">hour</span><span class="p">,</span> 
439                                              <span class="s2">&quot;cmd&quot;</span> <span class="p">:</span> <span class="n">cmd</span><span class="p">,</span> 
440                                              <span class="s2">&quot;application&quot;</span> <span class="p">:</span> <span class="n">cmdAppli</span><span class="p">,</span>
441                                              <span class="s2">&quot;full_command&quot;</span> <span class="p">:</span> <span class="n">full_cmd</span><span class="p">})</span>
442     
443     <span class="c1"># Write the file on the hard drive</span>
444     <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>
445 </pre></div>
446
447           </div>
448         </div>
449       </div>
450       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
451         <div class="sphinxsidebarwrapper">
452             <p class="logo"><a href="../../index.html">
453               <img class="logo" src="../../_static/sat_v5.0.png" alt="Logo"/>
454             </a></p><div class="relations">
455 <h3>Related Topics</h3>
456 <ul>
457   <li><a href="../../index.html">Documentation overview</a><ul>
458   <li><a href="../index.html">Module code</a><ul>
459   <li><a href="../src.html">src</a><ul>
460   </ul></li>
461   </ul></li>
462   </ul></li>
463 </ul>
464 </div>
465 <div id="searchbox" style="display: none" role="search">
466   <h3>Quick search</h3>
467     <div class="searchformwrapper">
468     <form class="search" action="../../search.html" method="get">
469       <input type="text" name="q" />
470       <input type="submit" value="Go" />
471       <input type="hidden" name="check_keywords" value="yes" />
472       <input type="hidden" name="area" value="default" />
473     </form>
474     </div>
475 </div>
476 <script type="text/javascript">$('#searchbox').show(0);</script>
477         </div>
478       </div>
479       <div class="clearer"></div>
480     </div>
481     <div class="footer">
482       &copy;2018, CEA.
483       
484       |
485       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.7.3</a>
486       &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
487       
488     </div>
489
490     
491
492     
493   </body>
494 </html>