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