mermaid
Version:
Markdownish syntax for generating flowcharts, sequence diagrams and gantt charts.
172 lines (155 loc) • 14.9 kB
HTML
<html>
<head>
<title>logger.js</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" media="all" href="../doc-style.css" />
<script src="../doc-filelist.js"></script>
<script>
var relativeDir = "../", thisFile = "Users/knut/Documents/source/mermaid/src/logger.js", defaultSidebar = true;
</script>
<script src="../doc-script.js"></script>
<script src="../mermaid.js"></script>
<link rel="stylesheet" href="../mermaid.css" />
</head>
<body>
<div id="sidebar_wrapper">
<div id="sidebar_switch">
<span class="tree">Files</span>
<span class="headings">Headings</span>
</div>
<div id="tree"></div>
<div id="headings">
<div class="heading h1">
<a href="#logger.js">logger.js</a>
</div>
<div class="heading h1">
<a href="#logger">logger</a>
</div>
</div>
</div>
<div id="sidebar-toggle"></div>
<div id="container"><div class="background highlight"></div>
<table cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="docs"><div class="dox">
<div class="summary"><div class="pilwrap" id="logger">
<h1>
<a href="#logger" name="logger" class="pilcrow">¶</a>
logger</h1>
</div>
<p>logger = require('logger').create()
logger.info("blah")
=> [2011-3-3T20:24:4.810 info (5021)] blah
logger.debug("boom")
=>
logger.level = Logger.levels.debug
logger.debug(function() { return "booom" })
=> [2011-3-3T20:24:4.810 error (5021)] booom</p>
</div>
<div class="body">
</div>
</div>
</td>
<td class="code highlight"><div class="highlight"><pre><span class="kd">var</span> <span class="nx">Logger</span><span class="p">;</span>
<span class="nx">Logger</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nx">Logger</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">level</span><span class="p">,</span> <span class="nx">num</span><span class="p">,</span> <span class="nx">ref</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
<span class="k">this</span><span class="p">.</span><span class="nx">level</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">level</span> <span class="o">||</span> <span class="nx">Logger</span><span class="p">.</span><span class="nx">levels</span><span class="p">.</span><span class="k">default</span><span class="p">;</span>
<span class="nx">ref</span> <span class="o">=</span> <span class="nx">Logger</span><span class="p">.</span><span class="nx">levels</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">level</span> <span class="k">in</span> <span class="nx">ref</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">num</span> <span class="o">=</span> <span class="nx">ref</span><span class="p">[</span><span class="nx">level</span><span class="p">];</span>
<span class="nx">Logger</span><span class="p">.</span><span class="nx">define</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">level</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">Logger</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">level</span><span class="p">,</span> <span class="nx">message</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">level</span> <span class="o">></span> <span class="p">(</span><span class="nx">Logger</span><span class="p">.</span><span class="nx">levels</span><span class="p">[</span><span class="nx">level</span><span class="p">]</span> <span class="o">||</span> <span class="mi">5</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">message</span> <span class="o">=</span> <span class="nx">callback</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">message</span> <span class="o">===</span> <span class="s1">'function'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">message</span> <span class="o">=</span> <span class="nx">message</span><span class="p">();</span>
<span class="p">}</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">write</span><span class="p">({</span>
<span class="nx">timestamp</span><span class="o">:</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">,</span>
<span class="nx">severity</span><span class="o">:</span> <span class="nx">level</span><span class="p">,</span>
<span class="nx">message</span><span class="o">:</span> <span class="nx">message</span><span class="p">,</span>
<span class="nx">pid</span><span class="o">:</span> <span class="nx">process</span><span class="p">.</span><span class="nx">pid</span>
<span class="p">});</span>
<span class="p">};</span>
<span class="kd">function</span> <span class="nx">formatTime</span><span class="p">(</span><span class="nx">timestamp</span><span class="p">){</span>
<span class="kd">var</span> <span class="nx">hh</span> <span class="o">=</span> <span class="nx">timestamp</span><span class="p">.</span><span class="nx">getUTCHours</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">mm</span> <span class="o">=</span> <span class="nx">timestamp</span><span class="p">.</span><span class="nx">getUTCMinutes</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">ss</span> <span class="o">=</span> <span class="nx">timestamp</span><span class="p">.</span><span class="nx">getSeconds</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">ms</span> <span class="o">=</span> <span class="nx">timestamp</span><span class="p">.</span><span class="nx">getMilliseconds</span><span class="p">();</span>
</pre></div>
</td>
</tr>
<tr>
<td class="docs">
<div class="pilwrap">
<a class="pilcrow" href="#section-2" id="section-2">¶</a>
</div>
<p>If you were building a timestamp instead of a duration, you would uncomment the following line to get 12-hour (not 24) time
if (hh > 12) {hh = hh % 12;}
These lines ensure you have two-digits</p>
</td>
<td class="code highlight"><div class="highlight"><pre>
<span class="k">if</span> <span class="p">(</span><span class="nx">hh</span> <span class="o"><</span> <span class="mi">10</span><span class="p">)</span> <span class="p">{</span><span class="nx">hh</span> <span class="o">=</span> <span class="s2">"0"</span><span class="o">+</span><span class="nx">hh</span><span class="p">;}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">mm</span> <span class="o"><</span> <span class="mi">10</span><span class="p">)</span> <span class="p">{</span><span class="nx">mm</span> <span class="o">=</span> <span class="s2">"0"</span><span class="o">+</span><span class="nx">mm</span><span class="p">;}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">ss</span> <span class="o"><</span> <span class="mi">10</span><span class="p">)</span> <span class="p">{</span><span class="nx">ss</span> <span class="o">=</span> <span class="s2">"0"</span><span class="o">+</span><span class="nx">ss</span><span class="p">;}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">ms</span> <span class="o"><</span> <span class="mi">100</span><span class="p">){</span><span class="nx">ms</span> <span class="o">=</span> <span class="s2">"0"</span><span class="o">+</span><span class="nx">ms</span><span class="p">;}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">ms</span> <span class="o"><</span> <span class="mi">10</span><span class="p">)</span> <span class="p">{</span><span class="nx">ms</span> <span class="o">=</span> <span class="s2">"00"</span><span class="o">+</span><span class="nx">ms</span><span class="p">;}</span>
</pre></div>
</td>
</tr>
<tr>
<td class="docs">
<div class="pilwrap">
<a class="pilcrow" href="#section-3" id="section-3">¶</a>
</div>
<p>This formats your string to HH:MM:SS</p>
</td>
<td class="code highlight"><div class="highlight"><pre>
<span class="kd">var</span> <span class="nx">t</span> <span class="o">=</span> <span class="nx">hh</span><span class="o">+</span><span class="s2">":"</span><span class="o">+</span><span class="nx">mm</span><span class="o">+</span><span class="s2">":"</span><span class="o">+</span><span class="nx">ss</span> <span class="o">+</span><span class="s1">' ('</span><span class="o">+</span><span class="nx">ms</span><span class="o">+</span><span class="s1">')'</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">t</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">Logger</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">write</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">console</span> <span class="o">!==</span> <span class="s1">'undefined'</span><span class="p">){</span>
<span class="k">if</span><span class="p">(</span><span class="k">typeof</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span> <span class="o">!==</span> <span class="s1">'undefined'</span><span class="p">){</span>
<span class="k">return</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">build_message</span><span class="p">(</span><span class="nx">options</span><span class="p">));</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="nx">Logger</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">build_message</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="s2">"["</span> <span class="o">+</span> <span class="nx">formatTime</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">timestamp</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"] "</span> <span class="o">+</span> <span class="nx">options</span><span class="p">.</span><span class="nx">message</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">return</span> <span class="nx">Logger</span><span class="p">;</span>
<span class="p">})();</span>
<span class="nx">Logger</span><span class="p">.</span><span class="nx">define</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">logger</span><span class="p">,</span> <span class="nx">level</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">logger</span><span class="p">[</span><span class="nx">level</span><span class="p">]</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">message</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">level</span><span class="p">,</span> <span class="nx">message</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">};</span>
<span class="p">};</span>
<span class="nx">Logger</span><span class="p">.</span><span class="nx">levels</span> <span class="o">=</span> <span class="p">{</span>
<span class="nx">debug</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nx">info</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="nx">warn</span><span class="o">:</span> <span class="mi">3</span><span class="p">,</span>
<span class="nx">error</span><span class="o">:</span> <span class="mi">4</span><span class="p">,</span>
<span class="nx">fatal</span><span class="o">:</span> <span class="mi">5</span><span class="p">,</span>
<span class="k">default</span><span class="o">:</span><span class="mi">1</span>
<span class="p">};</span>
<span class="nx">exports</span><span class="p">.</span><span class="nx">create</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nx">Logger</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
<span class="p">};</span>
</pre></div>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>