2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6 <html xmlns="http://www.w3.org/1999/xhtml">
8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 <title>src.logger — salomeTools 5.0.0dev documentation</title>
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" />
16 <script type="text/javascript">
17 var DOCUMENTATION_OPTIONS = {
20 COLLAPSE_INDEX: false,
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" />
32 <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
35 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
41 <div class="document">
42 <div class="documentwrapper">
43 <div class="bodywrapper">
44 <div class="body" role="main">
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>
65 <span class="sd">"""\</span>
66 <span class="sd">Implements the classes and method relative to the logging</span>
67 <span class="sd">"""</span>
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>
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>
79 <span class="n">log_macro_command_file_expression</span> <span class="o">=</span> <span class="s">"^[0-9]{8}_+[0-9]{6}_+.*\.xml$"</span>
80 <span class="n">log_all_command_file_expression</span> <span class="o">=</span> <span class="s">"^.*[0-9]{8}_+[0-9]{6}_+.*\.xml$"</span>
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">"""\</span>
84 <span class="sd"> Class to handle log mechanism.</span>
85 <span class="sd"> """</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">"""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"> """</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>
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">""</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">"micro_"</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">"_"</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">"_"</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">".xml"</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">".txt"</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">"OUT"</span><span class="p">,</span> <span class="n">txtFileName</span><span class="p">)</span>
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>
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>
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>
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">"SATcommand"</span><span class="p">,</span>
133 <span class="n">attrib</span> <span class="o">=</span> <span class="p">{</span><span class="s">"application"</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">'w'</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 = _("WARNING! Trying to write to a file that"</span>
140 <span class="c"># " is not accessible:")</span>
141 <span class="c">#msg2 = _("The logs won't be written.")</span>
142 <span class="c">#print("%s\n%s\n%s\n" % (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>
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>
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">"""\</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"> """</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">"Site"</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"command"</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">"Site"</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"satversion"</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">"Site"</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"hostname"</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">"Site"</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"OS"</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">"Site"</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"user"</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">"</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"</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">"Site"</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"beginTime"</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">"APPLICATION"</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">"Site"</span><span class="p">,</span>
180 <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"application"</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">"Log"</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="s">""</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">"OutLog"</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">"OUT"</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">"Links"</span><span class="p">)</span>
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">"""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. "0" or "1"</span>
201 <span class="sd"> :parma full_launched_command str: The full lanch command </span>
202 <span class="sd"> ("sat command ...")</span>
203 <span class="sd"> """</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">"Links"</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">"link"</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">"command"</span> <span class="p">:</span> <span class="n">command_name</span><span class="p">,</span>
209 <span class="s">"passed"</span> <span class="p">:</span> <span class="n">command_res</span><span class="p">,</span>
210 <span class="s">"launchedCommand"</span> <span class="p">:</span> <span class="n">full_launched_command</span><span class="p">})</span>
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">"""\</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 < level < 6.</span>
220 <span class="sd"> :param screenOnly boolean: if True, do not write in log file.</span>
221 <span class="sd"> """</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">"</span><span class="se">\r</span><span class="s">"</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">"Log"</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>
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">'isatty'</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 > 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>
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"><=</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"><=</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>
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">"""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"> """</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">"traces"</span><span class="p">,</span> <span class="n">_</span><span class="p">(</span><span class="s">'ERROR:'</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span><span class="p">)</span>
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">'isatty'</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">'ERROR:'</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">'ERROR:'</span><span class="p">)</span> <span class="o">+</span> <span class="n">message</span><span class="p">)</span>
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">"""Flush terminal"""</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>
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">"""\</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 "Site".</span>
271 <span class="sd"> """</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">'%Y/%m/</span><span class="si">%d</span><span class="s"> %Hh%Mm%Ss'</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">"Site"</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"endTime"</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">"Site"</span><span class="p">,</span>
287 <span class="n">attrib</span><span class="o">=</span><span class="p">{</span><span class="s">"TotalTime"</span> <span class="p">:</span> <span class="s">"</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"</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>
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">"Site"</span><span class="p">,</span> <span class="n">attrib</span><span class="o">=</span><span class="n">attribute</span><span class="p">)</span>
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">"command.xsl"</span><span class="p">)</span>
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">"_"</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">".pyconf"</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">'OUT'</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">'w'</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>
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">"""\</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"> """</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>
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">"""\</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"> """</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>
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">"""\</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"> """</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>
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">"WARNING: the log file </span><span class="si">%s</span><span class="s"> cannot be read:"</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">"</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s">"</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>
369 <span class="k">if</span> <span class="s">'application'</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">'application'</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">'Site'</span><span class="p">)</span><span class="o">.</span><span class="n">attrib</span><span class="p">[</span><span class="s">'launchedCommand'</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">'None'</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>
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>
380 <span class="k">if</span> <span class="n">application</span> <span class="o">==</span> <span class="s">'None'</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>
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>
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">"""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"> """</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">"micro_"</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">"micro_"</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">'_'</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">"</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">"</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">"</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">"</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"><</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">'.xml'</span><span class="p">)]</span>
414 <span class="n">host</span> <span class="o">=</span> <span class="s">""</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">'.xml'</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>
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">"""\</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"> """</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">'hat.xml'</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">"LOGlist"</span><span class="p">,</span> <span class="p">{</span><span class="s">"application"</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">"LogCommand"</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">"date"</span> <span class="p">:</span> <span class="n">date</span><span class="p">,</span>
451 <span class="s">"hour"</span> <span class="p">:</span> <span class="n">hour</span><span class="p">,</span>
452 <span class="s">"cmd"</span> <span class="p">:</span> <span class="n">cmd</span><span class="p">,</span>
453 <span class="s">"application"</span> <span class="p">:</span> <span class="n">cmdAppli</span><span class="p">,</span>
454 <span class="s">"full_command"</span> <span class="p">:</span> <span class="n">full_cmd</span><span class="p">})</span>
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">'hat.xsl'</span><span class="p">)</span></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>
470 <li><a href="../../index.html">Documentation overview</a><ul>
471 <li><a href="../index.html">Module code</a><ul>
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" />
484 <p class="searchtip" style="font-size: 90%">
485 Enter search terms or a module, class or function name.
488 <script type="text/javascript">$('#searchbox').show(0);</script>
491 <div class="clearer"></div>
497 Powered by <a href="http://sphinx-doc.org/">Sphinx 1.1.3</a>
498 & <a href="https://github.com/bitprophet/alabaster">Alabaster </a>