1
<?xml version="1.0" encoding="ascii"?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
"DTD/xhtml1-transitional.dtd">
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
<title>screenlets.logger</title>
7
<link rel="stylesheet" href="epydoc.css" type="text/css" />
8
<script type="text/javascript" src="epydoc.js"></script>
11
<body bgcolor="white" text="black" link="blue" vlink="#204080"
13
<!-- ==================== NAVIGATION BAR ==================== -->
14
<table class="navbar" border="0" width="100%" cellpadding="0"
15
bgcolor="#a0c0ff" cellspacing="0">
18
<th> <a
19
href="screenlets-module.html">Home</a> </th>
22
<th> <a
23
href="module-tree.html">Trees</a> </th>
26
<th> <a
27
href="identifier-index.html">Indices</a> </th>
30
<th> <a
31
href="help.html">Help</a> </th>
33
<!-- Project homepage -->
34
<th class="navbar" align="right" width="100%">
35
<table border="0" cellpadding="0" cellspacing="0">
36
<tr><th class="navbar" align="center"
37
>Screenlets 0.1.4</th>
41
<table width="100%" cellpadding="0" cellspacing="0">
44
<span class="breadcrumbs">
45
<a href="screenlets-module.html">Package screenlets</a> ::
50
<table cellpadding="0" cellspacing="0">
51
<!-- hide/show private -->
52
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
53
onclick="toggle_private();">hide private</a>]</span></td></tr>
54
<tr><td align="right"><span class="options"
55
>[<a href="frames.html" target="_top">frames</a
56
>] | <a href="screenlets.logger-pysrc.html"
57
target="_top">no frames</a>]</span></td></tr>
62
<h1 class="epydoc">Source Code for <a href="screenlets.logger-module.html">Module screenlets.logger</a></h1>
64
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># This application is released under the GNU General Public License </tt> </tt>
65
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"># v3 (or, at your option, any later version). You can find the full </tt> </tt>
66
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># text of the license under http://www.gnu.org/licenses/gpl.txt. </tt> </tt>
67
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># By using, editing and/or distributing this software you agree to </tt> </tt>
68
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># the terms and conditions of this license. </tt> </tt>
69
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># Thank you for using free software!</tt> </tt>
70
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"> </tt>
71
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># Logger and command line parser for universal-applets.</tt> </tt>
72
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># (c) 2008 Przemyslaw Firszt (pefi) <pefi@epf.pl></tt> </tt>
73
<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"> </tt>
74
<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
75
<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
76
<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
77
<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"> </tt>
78
<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package screenlets=screenlets-module.html"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-0', 'screenlets', 'link-0');">screenlets</a></tt> </tt>
79
<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"> </tt>
80
<a name="logger_init"></a><div id="logger_init-def"><a name="L17"></a><tt class="py-lineno">17</tt> <a class="py-toggle" href="#" id="logger_init-toggle" onclick="return toggle('logger_init');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.logger-module.html#logger_init">logger_init</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
81
</div><div id="logger_init-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="logger_init-expanded"><a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"> <tt class="py-docstring">"""Initialize logger"""</tt> </tt>
82
<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"> <tt id="link-1" class="py-name" targets="Package screenlets.options=screenlets.options-module.html"><a title="screenlets.options" class="py-name" href="#" onclick="return doclink('link-1', 'options', 'link-1');">options</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-2', 'screenlets', 'link-0');">screenlets</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable screenlets.COMMAND_LINE_OPTIONS=screenlets-module.html#COMMAND_LINE_OPTIONS"><a title="screenlets.COMMAND_LINE_OPTIONS" class="py-name" href="#" onclick="return doclink('link-3', 'COMMAND_LINE_OPTIONS', 'link-3');">COMMAND_LINE_OPTIONS</a></tt> </tt>
83
<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"> <tt class="py-comment">#create main logger</tt> </tt>
84
<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"> <tt id="link-4" class="py-name" targets="Variable screenlets.logger.log=screenlets.logger-module.html#log"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-4', 'log', 'link-4');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt id="link-5" class="py-name"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-5', 'screenlets', 'link-0');">screenlets</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Variable screenlets.LOG_NAME=screenlets-module.html#LOG_NAME"><a title="screenlets.LOG_NAME" class="py-name" href="#" onclick="return doclink('link-6', 'LOG_NAME', 'link-6');">LOG_NAME</a></tt><tt class="py-op">)</tt> </tt>
85
<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-7" class="py-name"><a title="screenlets.options" class="py-name" href="#" onclick="return doclink('link-7', 'options', 'link-1');">options</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Variable screenlets.LOG_DISABLED=screenlets-module.html#LOG_DISABLED"><a title="screenlets.LOG_DISABLED" class="py-name" href="#" onclick="return doclink('link-8', 'LOG_DISABLED', 'link-8');">LOG_DISABLED</a></tt><tt class="py-op">:</tt> </tt>
86
<a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"> <tt class="py-comment">#set log output</tt> </tt>
87
<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-9" class="py-name"><a title="screenlets.options" class="py-name" href="#" onclick="return doclink('link-9', 'options', 'link-1');">options</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Variable screenlets.LOG_OUTPUT=screenlets-module.html#LOG_OUTPUT"><a title="screenlets.LOG_OUTPUT" class="py-name" href="#" onclick="return doclink('link-10', 'LOG_OUTPUT', 'link-10');">LOG_OUTPUT</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"STDOUT"</tt><tt class="py-op">:</tt> </tt>
88
<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"> <tt class="py-name">log_file</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">StreamHandler</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">)</tt> </tt>
89
<a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-11" class="py-name"><a title="screenlets.options" class="py-name" href="#" onclick="return doclink('link-11', 'options', 'link-1');">options</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="screenlets.LOG_OUTPUT" class="py-name" href="#" onclick="return doclink('link-12', 'LOG_OUTPUT', 'link-10');">LOG_OUTPUT</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"STDERR"</tt><tt class="py-op">:</tt> </tt>
90
<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> <tt class="py-name">log_file</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">StreamHandler</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
91
<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-13" class="py-name"><a title="screenlets.options" class="py-name" href="#" onclick="return doclink('link-13', 'options', 'link-1');">options</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="screenlets.LOG_OUTPUT" class="py-name" href="#" onclick="return doclink('link-14', 'LOG_OUTPUT', 'link-10');">LOG_OUTPUT</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"FILE"</tt><tt class="py-op">:</tt> </tt>
92
<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
93
<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> <tt class="py-name">log_file</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">FileHandler</tt><tt class="py-op">(</tt><tt id="link-15" class="py-name"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-15', 'screenlets', 'link-0');">screenlets</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Variable screenlets.LOG_FILE=screenlets-module.html#LOG_FILE"><a title="screenlets.LOG_FILE" class="py-name" href="#" onclick="return doclink('link-16', 'LOG_FILE', 'link-16');">LOG_FILE</a></tt><tt class="py-op">,</tt> <tt class="py-string">"w"</tt><tt class="py-op">)</tt> </tt>
94
<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">:</tt> </tt>
95
<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"> <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot create %s logfile. Using STDERR instead."</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt><tt class="py-op">(</tt><tt id="link-17" class="py-name"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-17', 'screenlets', 'link-0');">screenlets</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="screenlets.LOG_FILE" class="py-name" href="#" onclick="return doclink('link-18', 'LOG_FILE', 'link-16');">LOG_FILE</a></tt><tt class="py-op">)</tt> </tt>
96
<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> <tt class="py-name">log_file</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">StreamHandler</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
97
<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
98
<a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"> <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown output type: %s, using STDERR instead."</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt><tt class="py-op">(</tt><tt id="link-19" class="py-name"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-19', 'screenlets', 'link-0');">screenlets</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="screenlets.LOG_FILE" class="py-name" href="#" onclick="return doclink('link-20', 'LOG_FILE', 'link-16');">LOG_FILE</a></tt><tt class="py-op">)</tt> </tt>
99
<a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"> <tt class="py-name">log_file</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">StreamHandler</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
100
<a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"> <tt class="py-comment">#check if LOG_LEVEL is valid and set</tt> </tt>
101
<a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
102
<a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"> <tt class="py-name">level</tt> <tt class="py-op">=</tt> <tt class="py-number">51</tt> <tt class="py-op">-</tt> <tt class="py-op">(</tt><tt class="py-number">10</tt> <tt class="py-op">*</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-21" class="py-name"><a title="screenlets.options" class="py-name" href="#" onclick="return doclink('link-21', 'options', 'link-1');">options</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Variable screenlets.LOG_LEVEL=screenlets-module.html#LOG_LEVEL"><a title="screenlets.LOG_LEVEL" class="py-name" href="#" onclick="return doclink('link-22', 'LOG_LEVEL', 'link-22');">LOG_LEVEL</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment">#multiply by 10 and substract from 51 to fit into allowed range</tt> </tt>
103
<a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-23', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">)</tt> </tt>
104
<a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"> <tt class="py-name">log_file</tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">level</tt><tt class="py-op">)</tt> </tt>
105
<a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
106
<a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-op">(</tt><tt class="py-string">"LOG_LEVEL %s is not allowed. Use -h to get more information. Using LOG_LEVEL=5"</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-24', 'screenlets', 'link-0');">screenlets</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="screenlets.LOG_LEVEL" class="py-name" href="#" onclick="return doclink('link-25', 'LOG_LEVEL', 'link-22');">LOG_LEVEL</a></tt><tt class="py-op">)</tt> </tt>
107
<a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"> <tt id="link-26" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-26', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment">#command line paramete was wrong, but user wanted logging ..."1" means log everything</tt> </tt>
108
<a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"> <tt class="py-name">log_file</tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
109
<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
110
<a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"> <tt class="py-comment">#do not log anything but we still have to provide logger to avoid errors</tt> </tt>
111
<a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"> <tt class="py-name">log_file</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">StreamHandler</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
112
<a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"> <tt class="py-comment">#screenlets.LOG_LEVEL = 51</tt> </tt>
113
<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"> <tt id="link-27" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-27', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-number">51</tt><tt class="py-op">)</tt> </tt>
114
<a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"> <tt class="py-name">log_file</tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-number">51</tt><tt class="py-op">)</tt> </tt>
115
<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"> </tt>
116
<a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"> <tt class="py-comment">#set the format of log message</tt> </tt>
117
<a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"> <tt class="py-name">log_formatter</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">Formatter</tt><tt class="py-op">(</tt><tt class="py-string">"%(asctime)s - %(levelname)s - %(message)s"</tt><tt class="py-op">)</tt> </tt>
118
<a name="L55"></a><tt class="py-lineno">55</tt> <tt class="py-line"> <tt class="py-name">log_file</tt><tt class="py-op">.</tt><tt class="py-name">setFormatter</tt><tt class="py-op">(</tt><tt class="py-name">log_formatter</tt><tt class="py-op">)</tt> </tt>
119
<a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"> </tt>
120
<a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"> <tt class="py-comment">#add file to logger</tt> </tt>
121
<a name="L58"></a><tt class="py-lineno">58</tt> <tt class="py-line"> <tt id="link-28" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-28', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">addHandler</tt><tt class="py-op">(</tt><tt class="py-name">log_file</tt><tt class="py-op">)</tt> </tt>
122
<a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-29" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-29', 'log', 'link-4');">log</a></tt> </tt>
123
</div><a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"> </tt>
124
<a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"><tt id="link-30" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-30', 'log', 'link-4');">log</a></tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name" targets="Function screenlets.logger.logger_init()=screenlets.logger-module.html#logger_init"><a title="screenlets.logger.logger_init" class="py-name" href="#" onclick="return doclink('link-31', 'logger_init', 'link-31');">logger_init</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
125
<a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"> </tt>
126
<a name="get_default_logger"></a><div id="get_default_logger-def"><a name="L63"></a><tt class="py-lineno">63</tt> <a class="py-toggle" href="#" id="get_default_logger-toggle" onclick="return toggle('get_default_logger');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.logger-module.html#get_default_logger">get_default_logger</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
127
</div><div id="get_default_logger-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="get_default_logger-expanded"><a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"> <tt class="py-docstring">"""This function returns default logger"""</tt> </tt>
128
<a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-32" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-32', 'log', 'link-4');">log</a></tt> </tt>
129
<a name="L66"></a><tt class="py-lineno">66</tt> <tt class="py-line"> <tt class="py-comment"># Try to return the logger (an exception mean that the logger has not yet been initialized)</tt> </tt>
130
<a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
131
<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-33" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-33', 'log', 'link-4');">log</a></tt> </tt>
132
<a name="L69"></a><tt class="py-lineno">69</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">NameError</tt><tt class="py-op">:</tt> </tt>
133
<a name="L70"></a><tt class="py-lineno">70</tt> <tt class="py-line"> <tt id="link-34" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-34', 'log', 'link-4');">log</a></tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name"><a title="screenlets.logger.logger_init" class="py-name" href="#" onclick="return doclink('link-35', 'logger_init', 'link-31');">logger_init</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
134
<a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-36" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-36', 'log', 'link-4');">log</a></tt><tt class="py-op">:</tt> </tt>
135
<a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"> <tt id="link-37" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-37', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method screenlets.services.ScreenletService.debug()=screenlets.services.ScreenletService-class.html#debug"><a title="screenlets.services.ScreenletService.debug" class="py-name" href="#" onclick="return doclink('link-38', 'debug', 'link-38');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s: Logger initialized"</tt> <tt class="py-op">%</tt><tt id="link-39" class="py-name" targets="Variable screenlets.Screenlet.__name__=screenlets.Screenlet-class.html#__name__,Variable screenlets.ScreenletTheme.__name__=screenlets.ScreenletTheme-class.html#__name__,Variable screenlets.plugins.Amarok.AmarokAPI.__name__=screenlets.plugins.Amarok.AmarokAPI-class.html#__name__,Variable screenlets.plugins.Audacious.AudaciousAPI.__name__=screenlets.plugins.Audacious.AudaciousAPI-class.html#__name__,Variable screenlets.plugins.Banshee.BansheeAPI.__name__=screenlets.plugins.Banshee.BansheeAPI-class.html#__name__,Variable screenlets.plugins.BaseConverter.BaseConverter.__name__=screenlets.plugins.BaseConverter.BaseConverter-class.html#__name__,Variable screenlets.plugins.Convert.Converter.__name__=screenlets.plugins.Convert.Converter-class.html#__name__,Variable screenlets.plugins.Convert.RatioConverter.__name__=screenlets.plugins.Convert.RatioConverter-class.html#__name__,Variable screenlets.plugins.Exaile.ExaileAPI.__name__=screenlets.plugins.Exaile.ExaileAPI-class.html#__name__,Variable screenlets.plugins.GenericPlayer.GenericAPI.__name__=screenlets.plugins.GenericPlayer.GenericAPI-class.html#__name__,Variable screenlets.plugins.Juk.JukAPI.__name__=screenlets.plugins.Juk.JukAPI-class.html#__name__,Variable screenlets.plugins.Kaffeine.KaffeineAPI.__name__=screenlets.plugins.Kaffeine.KaffeineAPI-class.html#__name__,Variable screenlets.plugins.LastFMProxy.LastFMProxyAPI.__name__=screenlets.plugins.LastFMProxy.LastFMProxyAPI-class.html#__name__,Variable screenlets.plugins.LengthConverter.LengthConverter.__name__=screenlets.plugins.LengthConverter.LengthConverter-class.html#__name__,Variable screenlets.plugins.Listen.ListenAPI.__name__=screenlets.plugins.Listen.ListenAPI-class.html#__name__,Variable screenlets.plugins.Quodlibet.QuodlibetAPI.__name__=screenlets.plugins.Quodlibet.QuodlibetAPI-class.html#__name__,Variable screenlets.plugins.Rhythmbox.RhythmboxAPI.__name__=screenlets.plugins.Rhythmbox.RhythmboxAPI-class.html#__name__,Variable screenlets.plugins.SizeConverter.SizeConverter.__name__=screenlets.plugins.SizeConverter.SizeConverter-class.html#__name__,Variable screenlets.plugins.Sonata.SonataAPI.__name__=screenlets.plugins.Sonata.SonataAPI-class.html#__name__,Variable screenlets.plugins.Songbird.SongbirdAPI.__name__=screenlets.plugins.Songbird.SongbirdAPI-class.html#__name__,Variable screenlets.plugins.TemperatureConverter.TemperatureConverter.__name__=screenlets.plugins.TemperatureConverter.TemperatureConverter-class.html#__name__"><a title="screenlets.Screenlet.__name__
136
screenlets.ScreenletTheme.__name__
137
screenlets.plugins.Amarok.AmarokAPI.__name__
138
screenlets.plugins.Audacious.AudaciousAPI.__name__
139
screenlets.plugins.Banshee.BansheeAPI.__name__
140
screenlets.plugins.BaseConverter.BaseConverter.__name__
141
screenlets.plugins.Convert.Converter.__name__
142
screenlets.plugins.Convert.RatioConverter.__name__
143
screenlets.plugins.Exaile.ExaileAPI.__name__
144
screenlets.plugins.GenericPlayer.GenericAPI.__name__
145
screenlets.plugins.Juk.JukAPI.__name__
146
screenlets.plugins.Kaffeine.KaffeineAPI.__name__
147
screenlets.plugins.LastFMProxy.LastFMProxyAPI.__name__
148
screenlets.plugins.LengthConverter.LengthConverter.__name__
149
screenlets.plugins.Listen.ListenAPI.__name__
150
screenlets.plugins.Quodlibet.QuodlibetAPI.__name__
151
screenlets.plugins.Rhythmbox.RhythmboxAPI.__name__
152
screenlets.plugins.SizeConverter.SizeConverter.__name__
153
screenlets.plugins.Sonata.SonataAPI.__name__
154
screenlets.plugins.Songbird.SongbirdAPI.__name__
155
screenlets.plugins.TemperatureConverter.TemperatureConverter.__name__" class="py-name" href="#" onclick="return doclink('link-39', '__name__', 'link-39');">__name__</a></tt><tt class="py-op">)</tt> </tt>
156
<a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-40" class="py-name"><a title="screenlets.logger.log" class="py-name" href="#" onclick="return doclink('link-40', 'log', 'link-4');">log</a></tt> </tt>
157
<a name="L74"></a><tt class="py-lineno">74</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
158
<a name="L75"></a><tt class="py-lineno">75</tt> <tt class="py-line"> <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">"%s: Cannot initialize logger!"</tt> <tt class="py-op">%</tt><tt id="link-41" class="py-name"><a title="screenlets.Screenlet.__name__
159
screenlets.ScreenletTheme.__name__
160
screenlets.plugins.Amarok.AmarokAPI.__name__
161
screenlets.plugins.Audacious.AudaciousAPI.__name__
162
screenlets.plugins.Banshee.BansheeAPI.__name__
163
screenlets.plugins.BaseConverter.BaseConverter.__name__
164
screenlets.plugins.Convert.Converter.__name__
165
screenlets.plugins.Convert.RatioConverter.__name__
166
screenlets.plugins.Exaile.ExaileAPI.__name__
167
screenlets.plugins.GenericPlayer.GenericAPI.__name__
168
screenlets.plugins.Juk.JukAPI.__name__
169
screenlets.plugins.Kaffeine.KaffeineAPI.__name__
170
screenlets.plugins.LastFMProxy.LastFMProxyAPI.__name__
171
screenlets.plugins.LengthConverter.LengthConverter.__name__
172
screenlets.plugins.Listen.ListenAPI.__name__
173
screenlets.plugins.Quodlibet.QuodlibetAPI.__name__
174
screenlets.plugins.Rhythmbox.RhythmboxAPI.__name__
175
screenlets.plugins.SizeConverter.SizeConverter.__name__
176
screenlets.plugins.Sonata.SonataAPI.__name__
177
screenlets.plugins.Songbird.SongbirdAPI.__name__
178
screenlets.plugins.TemperatureConverter.TemperatureConverter.__name__" class="py-name" href="#" onclick="return doclink('link-41', '__name__', 'link-39');">__name__</a></tt><tt class="py-op">)</tt> <tt class="py-comment">#TODO to quit or not to quit? Lack of logger may cause random errors</tt> </tt>
179
<a name="L76"></a><tt class="py-lineno">76</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> <tt class="py-comment">#TODO Raise Exception?</tt> </tt>
180
</div><a name="L77"></a><tt class="py-lineno">77</tt> <tt class="py-line"> </tt><script type="text/javascript">
182
expandto(location.href);
187
<!-- ==================== NAVIGATION BAR ==================== -->
188
<table class="navbar" border="0" width="100%" cellpadding="0"
189
bgcolor="#a0c0ff" cellspacing="0">
192
<th> <a
193
href="screenlets-module.html">Home</a> </th>
196
<th> <a
197
href="module-tree.html">Trees</a> </th>
200
<th> <a
201
href="identifier-index.html">Indices</a> </th>
204
<th> <a
205
href="help.html">Help</a> </th>
207
<!-- Project homepage -->
208
<th class="navbar" align="right" width="100%">
209
<table border="0" cellpadding="0" cellspacing="0">
210
<tr><th class="navbar" align="center"
211
>Screenlets 0.1.4</th>
215
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
217
<td align="left" class="footer">
218
Generated by Epydoc 3.0.1 on Mon Jun 6 10:56:41 2011
220
<td align="right" class="footer">
221
<a target="mainFrame" href="http://epydoc.sourceforge.net"
222
>http://epydoc.sourceforge.net</a>
227
<script type="text/javascript">
229
// Private objects are initially displayed (because if
230
// javascript is turned off then we want them to be
231
// visible); but by default, we want to hide them. So hide
232
// them unless we have a cookie that says to show them.