Hex Artifact Content Вы: nobody
Вход

Artifact eba2107b44641dd008d51cf5860a1fed2eeb09e6:


0000: ef bb bf 24 65 6e 67 69 6e 65 20 4a 53 63 72 69  ...$engine JScri
0010: 70 74 0d 0a 24 75 6e 61 6d 65 20 6c 6f 67 34 6a  pt..$uname log4j
0020: 73 0d 0a 24 64 6e 61 6d 65 20 4c 69 62 72 61 72  s..$dname Librar
0030: 79 20 74 6f 20 6c 6f 67 20 69 6e 20 4a 61 76 61  y to log in Java
0040: 53 63 72 69 70 74 20 0d 0a 24 61 64 64 69 6e 20  Script ..$addin 
0050: 73 74 64 6c 69 62 0d 0a 24 61 64 64 69 6e 20 67  stdlib..$addin g
0060: 6c 6f 62 61 6c 0d 0a 0d 0a 2f 2a 0d 0a d0 9f d1  lobal..../*.....
0070: 80 d0 b8 d0 bc d0 b5 d1 80 20 d0 bf d0 be d0 b4  ......... ......
0080: d0 ba d0 bb d1 8e d1 87 d0 b5 d0 bd d0 b8 d1 8f  ................
0090: 20 d0 b2 20 d1 81 d0 ba d1 80 d0 b8 d0 bf d1 82   .. ............
00a0: d0 b0 d1 85 20 d0 a1 d0 bd d0 b5 d0 b3 d0 be d0  .... ...........
00b0: bf d0 b0 d1 82 d0 b0 0d 0a 09 76 61 72 20 6c 6f  ..........var lo
00c0: 67 67 65 72 20 3d 20 4c 6f 67 34 6a 73 2e 67 65  gger = Log4js.ge
00d0: 74 4c 6f 67 67 65 72 28 53 65 6c 66 53 63 72 69  tLogger(SelfScri
00e0: 70 74 2e 75 6e 69 71 75 65 4e 61 6d 65 29 3b 0d  pt.uniqueName);.
00f0: 0a 09 76 61 72 20 61 70 70 65 6e 64 65 72 20 3d  ..var appender =
0100: 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 42 72 6f 77   new Log4js.Brow
0110: 73 65 72 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64  serConsoleAppend
0120: 65 72 28 29 3b 0d 0a 09 61 70 70 65 6e 64 65 72  er();...appender
0130: 2e 73 65 74 4c 61 79 6f 75 74 28 6e 65 77 20 4c  .setLayout(new L
0140: 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79  og4js.PatternLay
0150: 6f 75 74 28 4c 6f 67 34 6a 73 2e 50 61 74 74 65  out(Log4js.Patte
0160: 72 6e 4c 61 79 6f 75 74 2e 54 54 43 43 5f 43 4f  rnLayout.TTCC_CO
0170: 4e 56 45 52 53 49 4f 4e 5f 50 41 54 54 45 52 4e  NVERSION_PATTERN
0180: 29 29 3b 0d 0a 09 2f 2f 20 d1 81 d0 bb d0 b5 d0  ));...// .......
0190: b4 d1 83 d1 8e d1 89 d0 b8 d0 b9 20 d0 ba d0 be  ........... ....
01a0: d0 b4 20 d0 bd d1 83 d0 b6 d0 b5 d0 bd 2c 20 d1  .. .........., .
01b0: 87 d1 82 d0 be d0 b1 d1 8b 20 d0 bf d1 80 d0 b8  ......... ......
01c0: 20 d0 bf d0 b5 d1 80 d0 b5 d0 b7 d0 b0 d0 bf d1   ...............
01d0: 83 d1 81 d0 ba d0 b5 20 d1 81 d0 ba d1 80 d0 b8  ....... ........
01e0: d0 bf d1 82 d0 b0 20 d0 b1 d0 b5 d0 b7 20 d0 bf  ...... ...... ..
01f0: d0 b5 d1 80 d0 b5 d0 b7 d0 b0 d0 bf d1 83 d1 81  ................
0200: d0 ba d0 b0 20 d0 9a d0 be d0 bd d1 84 d0 b8 d0  .... ...........
0210: b3 d1 83 d1 80 d0 b0 d1 82 d0 be d1 80 d0 b0 20  ............... 
0220: d0 bb d0 be d0 b3 20 d0 bd d0 b5 20 d0 b7 d0 b0  ...... .... ....
0230: d0 b4 d0 b2 d0 be d0 b8 d1 82 d1 81 d1 8f 0d 0a  ................
0240: 09 61 70 70 65 6e 64 65 72 73 20 3d 20 5b 5d 3b  .appenders = [];
0250: 0d 0a 09 61 70 70 65 6e 64 65 72 73 2e 70 75 73  ...appenders.pus
0260: 68 28 61 70 70 65 6e 64 65 72 29 3b 0d 0a 09 6c  h(appender);...l
0270: 6f 67 67 65 72 2e 6f 6e 6c 6f 67 20 3d 20 6e 65  ogger.onlog = ne
0280: 77 20 4c 6f 67 34 6a 73 2e 43 75 73 74 6f 6d 45  w Log4js.CustomE
0290: 76 65 6e 74 28 29 3b 0d 0a 09 6c 6f 67 67 65 72  vent();...logger
02a0: 2e 6f 6e 63 6c 65 61 72 20 3d 20 6e 65 77 20 4c  .onclear = new L
02b0: 6f 67 34 6a 73 2e 43 75 73 74 6f 6d 45 76 65 6e  og4js.CustomEven
02c0: 74 28 29 3b 0d 0a 0d 0a 09 6c 6f 67 67 65 72 2e  t();.....logger.
02d0: 73 65 74 41 70 70 65 6e 64 65 72 73 28 61 70 70  setAppenders(app
02e0: 65 6e 64 65 72 73 29 3b 20 2f 2f 20 d0 ba d0 be  enders); // ....
02f0: d0 bd d0 b5 d1 86 20 d0 b1 d0 bb d0 be d0 ba d0  ...... .........
0300: b0 20 d0 b8 d1 81 d0 ba d0 bb d1 8e d1 87 d0 b5  . ..............
0310: d0 bd d0 b8 d1 8f 20 d0 b7 d0 b0 d0 b4 d0 b2 d0  ...... .........
0320: be d0 b5 d0 bd d0 b8 d1 8f 20 d0 bb d0 be d0 b3  ......... ......
0330: d0 b0 0d 0a 0d 0a 09 6c 6f 67 67 65 72 2e 73 65  .......logger.se
0340: 74 4c 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65  tLevel(Log4js.Le
0350: 76 65 6c 2e 45 52 52 4f 52 29 3b 20 2f 2f 6c 6f  vel.ERROR); //lo
0360: 67 67 65 72 2e 73 65 74 4c 65 76 65 6c 28 4c 6f  gger.setLevel(Lo
0370: 67 34 6a 73 2e 4c 65 76 65 6c 2e 44 45 42 55 47  g4js.Level.DEBUG
0380: 29 3b 0d 0a 2a 2f 0d 0a 0d 0a 2f 2a 0d 0a 2a 20  );..*/..../*..* 
0390: 4c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74  Licensed under t
03a0: 68 65 20 41 70 61 63 68 65 20 4c 69 63 65 6e 73  he Apache Licens
03b0: 65 2c 20 56 65 72 73 69 6f 6e 20 32 2e 30 20 28  e, Version 2.0 (
03c0: 74 68 65 20 22 4c 69 63 65 6e 73 65 22 29 3b 0d  the "License");.
03d0: 0a 2a 20 79 6f 75 20 6d 61 79 20 6e 6f 74 20 75  .* you may not u
03e0: 73 65 20 74 68 69 73 20 66 69 6c 65 20 65 78 63  se this file exc
03f0: 65 70 74 20 69 6e 20 63 6f 6d 70 6c 69 61 6e 63  ept in complianc
0400: 65 20 77 69 74 68 20 74 68 65 20 4c 69 63 65 6e  e with the Licen
0410: 73 65 2e 0d 0a 2a 20 59 6f 75 20 6d 61 79 20 6f  se...* You may o
0420: 62 74 61 69 6e 20 61 20 63 6f 70 79 20 6f 66 20  btain a copy of 
0430: 74 68 65 20 4c 69 63 65 6e 73 65 20 61 74 0d 0a  the License at..
0440: 2a 0d 0a 2a 20 20 20 20 20 20 68 74 74 70 3a 2f  *..*      http:/
0450: 2f 77 77 77 2e 61 70 61 63 68 65 2e 6f 72 67 2f  /www.apache.org/
0460: 6c 69 63 65 6e 73 65 73 2f 4c 49 43 45 4e 53 45  licenses/LICENSE
0470: 2d 32 2e 30 0d 0a 2a 0d 0a 2a 20 55 6e 6c 65 73  -2.0..*..* Unles
0480: 73 20 72 65 71 75 69 72 65 64 20 62 79 20 61 70  s required by ap
0490: 70 6c 69 63 61 62 6c 65 20 6c 61 77 20 6f 72 20  plicable law or 
04a0: 61 67 72 65 65 64 20 74 6f 20 69 6e 20 77 72 69  agreed to in wri
04b0: 74 69 6e 67 2c 20 73 6f 66 74 77 61 72 65 0d 0a  ting, software..
04c0: 2a 20 64 69 73 74 72 69 62 75 74 65 64 20 75 6e  * distributed un
04d0: 64 65 72 20 74 68 65 20 4c 69 63 65 6e 73 65 20  der the License 
04e0: 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 6f  is distributed o
04f0: 6e 20 61 6e 20 22 41 53 20 49 53 22 20 42 41 53  n an "AS IS" BAS
0500: 49 53 2c 0d 0a 2a 20 57 49 54 48 4f 55 54 20 57  IS,..* WITHOUT W
0510: 41 52 52 41 4e 54 49 45 53 20 4f 52 20 43 4f 4e  ARRANTIES OR CON
0520: 44 49 54 49 4f 4e 53 20 4f 46 20 41 4e 59 20 4b  DITIONS OF ANY K
0530: 49 4e 44 2c 20 65 69 74 68 65 72 20 65 78 70 72  IND, either expr
0540: 65 73 73 20 6f 72 20 69 6d 70 6c 69 65 64 2e 0d  ess or implied..
0550: 0a 2a 20 53 65 65 20 74 68 65 20 4c 69 63 65 6e  .* See the Licen
0560: 73 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  se for the speci
0570: 66 69 63 20 6c 61 6e 67 75 61 67 65 20 67 6f 76  fic language gov
0580: 65 72 6e 69 6e 67 20 70 65 72 6d 69 73 73 69 6f  erning permissio
0590: 6e 73 20 61 6e 64 0d 0a 2a 20 6c 69 6d 69 74 61  ns and..* limita
05a0: 74 69 6f 6e 73 20 75 6e 64 65 72 20 74 68 65 20  tions under the 
05b0: 4c 69 63 65 6e 73 65 2e 0d 0a 2a 2f 0d 0a 0d 0a  License...*/....
05c0: 2f 2a 6a 73 6c 3a 6f 70 74 69 6f 6e 20 65 78 70  /*jsl:option exp
05d0: 6c 69 63 69 74 2a 2f 0d 0a 0d 0a 2f 2a 2a 0d 0a  licit*/..../**..
05e0: 2a 20 40 66 69 6c 65 6f 76 65 72 76 69 65 77 20  * @fileoverview 
05f0: 6c 6f 67 34 6a 73 20 69 73 20 61 20 6c 69 62 72  log4js is a libr
0600: 61 72 79 20 74 6f 20 6c 6f 67 20 69 6e 20 4a 61  ary to log in Ja
0610: 76 61 53 63 72 69 70 74 20 69 6e 20 73 69 6d 69  vaScript in simi
0620: 6c 61 72 20 6d 61 6e 6e 65 72 20 0d 0a 2a 20 74  lar manner ..* t
0630: 68 61 6e 20 69 6e 20 6c 6f 67 34 6a 20 66 6f 72  han in log4j for
0640: 20 4a 61 76 61 2e 20 54 68 65 20 41 50 49 20 73   Java. The API s
0650: 68 6f 75 6c 64 20 62 65 20 6e 65 61 72 6c 79 20  hould be nearly 
0660: 74 68 65 20 73 61 6d 65 2e 0d 0a 2a 20 0d 0a 2a  the same...* ..*
0670: 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61   This file conta
0680: 69 6e 73 20 61 6c 6c 20 6c 6f 67 34 6a 73 20 63  ins all log4js c
0690: 6f 64 65 20 61 6e 64 20 69 73 20 74 68 65 20 6f  ode and is the o
06a0: 6e 6c 79 20 66 69 6c 65 20 72 65 71 75 69 72 65  nly file require
06b0: 64 20 66 6f 72 20 6c 6f 67 67 69 6e 67 2e 0d 0a  d for logging...
06c0: 2a 20 0d 0a 2a 20 3c 68 33 3e 45 78 61 6d 70 6c  * ..* <h3>Exampl
06d0: 65 3a 3c 2f 68 33 3e 0d 0a 2a 20 3c 70 72 65 3e  e:</h3>..* <pre>
06e0: 0d 0a 2a 20 20 76 61 72 20 6c 6f 67 20 3d 20 6e  ..*  var log = n
06f0: 65 77 20 4c 6f 67 34 6a 73 2e 67 65 74 4c 6f 67  ew Log4js.getLog
0700: 67 65 72 28 22 73 6f 6d 65 2d 63 61 74 65 67 6f  ger("some-catego
0710: 72 79 2d 6e 61 6d 65 22 29 3b 20 2f 2f 63 72 65  ry-name"); //cre
0720: 61 74 65 20 6c 6f 67 67 65 72 20 69 6e 73 74 61  ate logger insta
0730: 6e 63 65 0d 0a 2a 20 20 6c 6f 67 2e 73 65 74 4c  nce..*  log.setL
0740: 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65  evel(Log4js.Leve
0750: 6c 2e 54 52 41 43 45 29 3b 20 2f 2f 73 65 74 20  l.TRACE); //set 
0760: 74 68 65 20 4c 65 76 65 6c 0d 0a 2a 20 20 6c 6f  the Level..*  lo
0770: 67 2e 61 64 64 41 70 70 65 6e 64 65 72 28 6e 65  g.addAppender(ne
0780: 77 20 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65  w ConsoleAppende
0790: 72 28 6c 6f 67 2c 20 66 61 6c 73 65 29 29 3b 20  r(log, false)); 
07a0: 2f 2f 20 63 6f 6e 73 6f 6c 65 20 74 68 61 74 20  // console that 
07b0: 6c 61 75 6e 63 68 65 73 20 69 6e 20 6e 65 77 20  launches in new 
07c0: 77 69 6e 64 6f 77 0d 0a 0d 0a 2a 20 20 2f 2f 20  window....*  // 
07d0: 69 66 20 6d 75 6c 74 69 70 6c 65 20 61 70 70 65  if multiple appe
07e0: 6e 64 65 72 73 20 61 72 65 20 73 65 74 20 61 6c  nders are set al
07f0: 6c 20 77 69 6c 6c 20 6c 6f 67 0d 0a 2a 20 20 6c  l will log..*  l
0800: 6f 67 2e 61 64 64 41 70 70 65 6e 64 65 72 28 6e  og.addAppender(n
0810: 65 77 20 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64  ew ConsoleAppend
0820: 65 72 28 6c 6f 67 2c 20 74 72 75 65 29 29 3b 20  er(log, true)); 
0830: 2f 2f 20 63 6f 6e 73 6f 6c 65 20 74 68 61 74 20  // console that 
0840: 69 73 20 69 6e 2d 6c 69 6e 65 20 69 6e 20 74 68  is in-line in th
0850: 65 20 70 61 67 65 0d 0a 2a 20 20 6c 6f 67 2e 61  e page..*  log.a
0860: 64 64 41 70 70 65 6e 64 65 72 28 6e 65 77 20 46  ddAppender(new F
0870: 69 6c 65 41 70 70 65 6e 64 65 72 28 22 43 3a 5c  ileAppender("C:\
0880: 5c 73 6f 6d 65 66 69 6c 65 2e 6c 6f 67 22 29 29  \somefile.log"))
0890: 3b 20 2f 2f 20 66 69 6c 65 20 61 70 70 65 6e 64  ; // file append
08a0: 65 72 20 6c 6f 67 73 20 74 6f 20 43 3a 5c 5c 73  er logs to C:\\s
08b0: 6f 6d 65 66 69 6c 65 2e 6c 6f 67 0d 0a 2a 20 0d  omefile.log..* .
08c0: 0a 2a 20 20 2e 2e 2e 0d 0a 2a 20 0d 0a 2a 20 20  .*  .....* ..*  
08d0: 2f 2f 63 61 6c 6c 20 74 68 65 20 6c 6f 67 0d 0a  //call the log..
08e0: 2a 20 20 6c 6f 67 2e 74 72 61 63 65 28 22 74 72  *  log.trace("tr
08f0: 61 63 65 20 6d 65 22 20 29 3b 0d 0a 2a 20 3c 2f  ace me" );..* </
0900: 70 72 65 3e 0d 0a 2a 0d 0a 2a 20 40 76 65 72 73  pre>..*..* @vers
0910: 69 6f 6e 20 30 2e 33 0d 0a 2a 20 40 61 75 74 68  ion 0.3..* @auth
0920: 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72 69 74  or Stephan Strit
0930: 74 6d 61 74 74 65 72 20 2d 20 68 74 74 70 3a 2f  tmatter - http:/
0940: 2f 6a 72 6f 6c 6c 65 72 2e 63 6f 6d 2f 70 61 67  /jroller.com/pag
0950: 65 2f 73 74 72 69 74 74 69 0d 0a 2a 20 40 61 75  e/stritti..* @au
0960: 74 68 6f 72 20 53 65 74 68 20 43 68 69 73 61 6d  thor Seth Chisam
0970: 6f 72 65 20 2d 20 68 74 74 70 3a 2f 2f 77 77 77  ore - http://www
0980: 2e 63 68 69 73 61 6d 6f 72 65 2e 63 6f 6d 0d 0a  .chisamore.com..
0990: 2a 20 40 73 69 6e 63 65 20 32 30 30 35 2d 30 35  * @since 2005-05
09a0: 2d 32 30 0d 0a 2a 20 57 65 62 73 69 74 65 3a 20  -20..* Website: 
09b0: 68 74 74 70 3a 2f 2f 6c 6f 67 34 6a 73 2e 62 65  http://log4js.be
09c0: 72 6c 69 6f 73 2e 64 65 0d 0a 2a 2f 0d 0a 76 61  rlios.de..*/..va
09d0: 72 20 4c 6f 67 34 6a 73 20 3d 20 7b 0d 0a 20 20  r Log4js = {..  
09e0: 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20    ..    /** ..  
09f0: 20 20 2a 20 43 75 72 72 65 6e 74 20 76 65 72 73    * Current vers
0a00: 69 6f 6e 20 6f 66 20 6c 6f 67 34 6a 73 2e 20 0d  ion of log4js. .
0a10: 0a 20 20 20 20 2a 20 40 73 74 61 74 69 63 0d 0a  .    * @static..
0a20: 20 20 20 20 2a 20 40 66 69 6e 61 6c 0d 0a 20 20      * @final..  
0a30: 20 20 2a 2f 0d 0a 20 20 20 20 76 65 72 73 69 6f    */..    versio
0a40: 6e 3a 20 22 31 2e 30 22 2c 0d 0a 0d 0a 20 20 20  n: "1.0",....   
0a50: 20 2f 2a 2a 20 20 0d 0a 20 20 20 20 2a 20 44 61   /**  ..    * Da
0a60: 74 65 20 6f 66 20 6c 6f 67 67 65 72 20 69 6e 69  te of logger ini
0a70: 74 69 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20 2a  tialized...    *
0a80: 20 40 73 74 61 74 69 63 0d 0a 20 20 20 20 2a 20   @static..    * 
0a90: 40 66 69 6e 61 6c 0d 0a 20 20 20 20 2a 2f 0d 0a  @final..    */..
0aa0: 20 20 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 53      applicationS
0ab0: 74 61 72 74 44 61 74 65 3a 20 6e 65 77 20 44 61  tartDate: new Da
0ac0: 74 65 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 0d  te(),..        .
0ad0: 0a 20 20 20 20 2f 2a 2a 20 20 0d 0a 20 20 20 20  .    /**  ..    
0ae0: 2a 20 48 61 73 68 74 61 62 6c 65 20 6f 66 20 6c  * Hashtable of l
0af0: 6f 67 67 65 72 73 2e 0d 0a 20 20 20 20 2a 20 40  oggers...    * @
0b00: 73 74 61 74 69 63 0d 0a 20 20 20 20 2a 20 40 66  static..    * @f
0b10: 69 6e 61 6c 0d 0a 20 20 20 20 2a 20 40 70 72 69  inal..    * @pri
0b20: 76 61 74 65 20 20 0d 0a 20 20 20 20 2a 2f 0d 0a  vate  ..    */..
0b30: 20 20 20 20 6c 6f 67 67 65 72 73 3a 20 7b 7d 2c      loggers: {},
0b40: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d  ..    ..    /**.
0b50: 0a 20 20 20 20 2a 20 47 65 74 20 61 20 6c 6f 67  .    * Get a log
0b60: 67 65 72 20 69 6e 73 74 61 6e 63 65 2e 20 49 6e  ger instance. In
0b70: 73 74 61 6e 63 65 20 69 73 20 63 61 63 68 65 64  stance is cached
0b80: 20 6f 6e 20 63 61 74 65 67 6f 72 79 4e 61 6d 65   on categoryName
0b90: 20 6c 65 76 65 6c 2e 0d 0a 20 20 20 20 2a 20 40   level...    * @
0ba0: 70 61 72 61 6d 20 20 7b 53 74 72 69 6e 67 7d 20  param  {String} 
0bb0: 63 61 74 65 67 6f 72 79 4e 61 6d 65 20 6e 61 6d  categoryName nam
0bc0: 65 20 6f 66 20 63 61 74 65 67 6f 72 79 20 74 6f  e of category to
0bd0: 20 6c 6f 67 20 74 6f 2e 0d 0a 20 20 20 20 2a 20   log to...    * 
0be0: 40 72 65 74 75 72 6e 20 7b 4c 6f 67 67 65 72 7d  @return {Logger}
0bf0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 6c 6f 67   instance of log
0c00: 67 65 72 20 66 6f 72 20 74 68 65 20 63 61 74 65  ger for the cate
0c10: 67 6f 72 79 0d 0a 20 20 20 20 2a 20 40 73 74 61  gory..    * @sta
0c20: 74 69 63 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  tic..    */..   
0c30: 20 67 65 74 4c 6f 67 67 65 72 3a 20 66 75 6e 63   getLogger: func
0c40: 74 69 6f 6e 28 63 61 74 65 67 6f 72 79 4e 61 6d  tion(categoryNam
0c50: 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 0d 0a  e) {..        ..
0c60: 20 20 20 20 20 20 20 20 2f 2f 20 55 73 65 20 64          // Use d
0c70: 65 66 61 75 6c 74 20 6c 6f 67 67 65 72 20 69 66  efault logger if
0c80: 20 63 61 74 65 67 6f 72 79 4e 61 6d 65 20 69 73   categoryName is
0c90: 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20 6f   not specified o
0ca0: 72 20 69 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20  r invalid..     
0cb0: 20 20 20 69 66 20 28 21 28 74 79 70 65 6f 66 20     if (!(typeof 
0cc0: 63 61 74 65 67 6f 72 79 4e 61 6d 65 20 3d 3d 20  categoryName == 
0cd0: 22 73 74 72 69 6e 67 22 29 29 20 7b 0d 0a 20 20  "string")) {..  
0ce0: 20 20 20 20 20 20 20 20 20 20 63 61 74 65 67 6f            catego
0cf0: 72 79 4e 61 6d 65 20 3d 20 22 5b 64 65 66 61 75  ryName = "[defau
0d00: 6c 74 5d 22 3b 0d 0a 20 20 20 20 20 20 20 20 7d  lt]";..        }
0d10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
0d20: 21 4c 6f 67 34 6a 73 2e 6c 6f 67 67 65 72 73 5b  !Log4js.loggers[
0d30: 63 61 74 65 67 6f 72 79 4e 61 6d 65 5d 29 20 7b  categoryName]) {
0d40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
0d50: 20 43 72 65 61 74 65 20 74 68 65 20 6c 6f 67 67   Create the logg
0d60: 65 72 20 66 6f 72 20 74 68 69 73 20 6e 61 6d 65  er for this name
0d70: 20 69 66 20 69 74 20 64 6f 65 73 6e 27 74 20 61   if it doesn't a
0d80: 6c 72 65 61 64 79 20 65 78 69 73 74 0d 0a 20 20  lready exist..  
0d90: 20 20 20 20 20 20 20 20 20 20 4c 6f 67 34 6a 73            Log4js
0da0: 2e 6c 6f 67 67 65 72 73 5b 63 61 74 65 67 6f 72  .loggers[categor
0db0: 79 4e 61 6d 65 5d 20 3d 20 6e 65 77 20 4c 6f 67  yName] = new Log
0dc0: 34 6a 73 2e 4c 6f 67 67 65 72 28 63 61 74 65 67  4js.Logger(categ
0dd0: 6f 72 79 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  oryName);..     
0de0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a     }..        ..
0df0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4c          return L
0e00: 6f 67 34 6a 73 2e 6c 6f 67 67 65 72 73 5b 63 61  og4js.loggers[ca
0e10: 74 65 67 6f 72 79 4e 61 6d 65 5d 3b 0d 0a 20 20  tegoryName];..  
0e20: 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20    },..    ..    
0e30: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 47 65 74 20 74  /**..    * Get t
0e40: 68 65 20 64 65 66 61 75 6c 74 20 6c 6f 67 67 65  he default logge
0e50: 72 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  r instance...   
0e60: 20 2a 20 40 72 65 74 75 72 6e 20 7b 4c 6f 67 67   * @return {Logg
0e70: 65 72 7d 20 69 6e 73 74 61 6e 63 65 20 6f 66 20  er} instance of 
0e80: 64 65 66 61 75 6c 74 20 6c 6f 67 67 65 72 0d 0a  default logger..
0e90: 20 20 20 20 2a 20 40 73 74 61 74 69 63 0d 0a 20      * @static.. 
0ea0: 20 20 20 2a 2f 0d 0a 20 20 20 20 67 65 74 44 65     */..    getDe
0eb0: 66 61 75 6c 74 4c 6f 67 67 65 72 3a 20 66 75 6e  faultLogger: fun
0ec0: 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20  ction() {..     
0ed0: 20 20 20 72 65 74 75 72 6e 20 4c 6f 67 34 6a 73     return Log4js
0ee0: 2e 67 65 74 4c 6f 67 67 65 72 28 22 5b 64 65 66  .getLogger("[def
0ef0: 61 75 6c 74 5d 22 29 3b 20 0d 0a 20 20 20 20 7d  ault]"); ..    }
0f00: 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a  ,..    ..    /**
0f10: 0d 0a 20 20 20 20 2a 20 41 74 61 74 63 68 20 61  ..    * Atatch a
0f20: 6e 20 6f 62 73 65 72 76 65 72 20 66 75 6e 63 74  n observer funct
0f30: 69 6f 6e 20 74 6f 20 61 6e 20 65 6c 65 6d 65 6e  ion to an elemen
0f40: 74 73 20 65 76 65 6e 74 20 62 72 6f 77 73 65 72  ts event browser
0f50: 20 69 6e 64 65 70 65 6e 64 65 6e 74 2e 0d 0a 20   independent... 
0f60: 20 20 20 2a 20 0d 0a 20 20 20 20 2a 20 40 70 61     * ..    * @pa
0f70: 72 61 6d 20 65 6c 65 6d 65 6e 74 20 65 6c 65 6d  ram element elem
0f80: 65 6e 74 20 74 6f 20 61 74 74 61 63 68 20 65 76  ent to attach ev
0f90: 65 6e 74 0d 0a 20 20 20 20 2a 20 40 70 61 72 61  ent..    * @para
0fa0: 6d 20 6e 61 6d 65 20 6e 61 6d 65 20 6f 66 20 65  m name name of e
0fb0: 76 65 6e 74 0d 0a 20 20 20 20 2a 20 40 70 61 72  vent..    * @par
0fc0: 61 6d 20 6f 62 73 65 72 76 65 72 20 6f 62 73 65  am observer obse
0fd0: 72 76 65 72 20 6d 65 74 68 6f 64 20 74 6f 20 62  rver method to b
0fe0: 65 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 2a 20  e called..    * 
0ff0: 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f  @private..    */
1000: 0d 0a 20 20 20 20 61 74 74 61 63 68 45 76 65 6e  ..    attachEven
1010: 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 65 6c 65  t: function (ele
1020: 6d 65 6e 74 2c 20 6e 61 6d 65 2c 20 6f 62 73 65  ment, name, obse
1030: 72 76 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20  rver) {..       
1040: 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 61 64 64   if (element.add
1050: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 29 20 7b  EventListener) {
1060: 20 2f 2f 44 4f 4d 20 65 76 65 6e 74 20 6d 6f 64   //DOM event mod
1070: 65 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  el..            
1080: 65 6c 65 6d 65 6e 74 2e 61 64 64 45 76 65 6e 74  element.addEvent
1090: 4c 69 73 74 65 6e 65 72 28 6e 61 6d 65 2c 20 6f  Listener(name, o
10a0: 62 73 65 72 76 65 72 2c 20 66 61 6c 73 65 29 3b  bserver, false);
10b0: 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65  ..        } else
10c0: 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 61 74 74   if (element.att
10d0: 61 63 68 45 76 65 6e 74 29 20 7b 20 2f 2f 4d 24  achEvent) { //M$
10e0: 20 65 76 65 6e 74 20 6d 6f 64 65 6c 0d 0a 20 20   event model..  
10f0: 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e            elemen
1100: 74 2e 61 74 74 61 63 68 45 76 65 6e 74 28 27 6f  t.attachEvent('o
1110: 6e 27 20 2b 20 6e 61 6d 65 2c 20 6f 62 73 65 72  n' + name, obser
1120: 76 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ver);..        }
1130: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 20  ..    }..    .. 
1140: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 4c 6f     /**..    * Lo
1150: 61 64 20 61 20 4a 53 2d 73 63 72 69 70 74 20 64  ad a JS-script d
1160: 79 6e 61 6d 69 63 61 6c 6c 79 2e 0d 0a 20 20 20  ynamically...   
1170: 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e   * @param {Strin
1180: 67 7d 20 73 72 63 0d 0a 20 20 20 20 2a 2f 0d 0a  g} src..    */..
1190: 2f 2a 09 24 69 6d 70 6f 72 74 3a 20 66 75 6e 63  /*.$import: func
11a0: 74 69 6f 6e 20 28 73 72 63 29 20 7b 0d 0a 20 20  tion (src) {..  
11b0: 20 20 20 20 20 20 76 61 72 20 64 6f 63 75 6d 65        var docume
11c0: 6e 74 53 63 72 69 70 74 73 20 3d 20 64 6f 63 75  ntScripts = docu
11d0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 73  ment.getElements
11e0: 42 79 54 61 67 4e 61 6d 65 28 22 73 63 72 69 70  ByTagName("scrip
11f0: 74 22 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20  t");..    ..    
1200: 20 20 20 20 66 6f 72 20 28 69 6e 64 65 78 20 3d      for (index =
1210: 20 30 3b 20 69 6e 64 65 78 20 3c 20 64 6f 63 75   0; index < docu
1220: 6d 65 6e 74 53 63 72 69 70 74 73 2e 6c 65 6e 67  mentScripts.leng
1230: 74 68 3b 20 2b 2b 69 6e 64 65 78 29 0d 0a 20 20  th; ++index)..  
1240: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1250: 20 20 20 20 20 76 61 72 20 64 6f 63 75 6d 65 6e       var documen
1260: 74 53 63 72 69 70 74 20 3d 20 64 6f 63 75 6d 65  tScript = docume
1270: 6e 74 53 63 72 69 70 74 73 5b 69 6e 64 65 78 5d  ntScripts[index]
1280: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ;..            i
1290: 66 20 28 64 6f 63 75 6d 65 6e 74 53 63 72 69 70  f (documentScrip
12a0: 74 2e 73 72 63 20 3d 3d 20 73 72 63 29 20 7b 0d  t.src == src) {.
12b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12c0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
12d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12f0: 20 20 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20    ..        var 
1300: 73 63 72 69 70 74 20 3d 20 64 6f 63 75 6d 65 6e  script = documen
1310: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  t.createElement(
1320: 27 73 63 72 69 70 74 27 29 3b 0d 0a 20 20 20 20  'script');..    
1330: 20 20 20 20 73 63 72 69 70 74 2e 74 79 70 65 20      script.type 
1340: 3d 20 27 74 65 78 74 2f 6a 61 76 61 73 63 72 69  = 'text/javascri
1350: 70 74 27 3b 0d 0a 20 20 20 20 20 20 20 20 73 63  pt';..        sc
1360: 72 69 70 74 2e 73 72 63 20 3d 20 73 72 63 3b 0d  ript.src = src;.
1370: 0a 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e  .        documen
1380: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42 79 54  t.getElementsByT
1390: 61 67 4e 61 6d 65 28 27 68 65 61 64 27 29 5b 30  agName('head')[0
13a0: 5d 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 73 63  ].appendChild(sc
13b0: 72 69 70 74 29 3b 20 0d 0a 20 20 20 20 20 20 20  ript); ..       
13c0: 20 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   ..        retur
13d0: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a  n true;..    }..
13e0: 20 20 20 20 2a 2f 0d 0a 7d 3b 0d 0a 0d 0a 2f 2a      */..};..../*
13f0: 2a 0d 0a 2a 20 49 6e 74 65 72 6e 61 6c 20 6f 62  *..* Internal ob
1400: 6a 65 63 74 20 65 78 74 65 6e 73 69 6f 6e 20 28  ject extension (
1410: 4f 4f 29 20 6d 65 74 68 6f 64 73 2e 0d 0a 2a 20  OO) methods...* 
1420: 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a 20  ..* @private..* 
1430: 40 69 67 6e 6f 72 65 0d 0a 2a 2f 0d 0a 4c 6f 67  @ignore..*/..Log
1440: 34 6a 73 2e 65 78 74 65 6e 64 20 3d 20 66 75 6e  4js.extend = fun
1450: 63 74 69 6f 6e 28 64 65 73 74 69 6e 61 74 69 6f  ction(destinatio
1460: 6e 2c 20 73 6f 75 72 63 65 29 20 7b 0d 0a 66 6f  n, source) {..fo
1470: 72 20 28 70 72 6f 70 65 72 74 79 20 69 6e 20 73  r (property in s
1480: 6f 75 72 63 65 29 20 7b 0d 0a 20 20 20 20 64 65  ource) {..    de
1490: 73 74 69 6e 61 74 69 6f 6e 5b 70 72 6f 70 65 72  stination[proper
14a0: 74 79 5d 20 3d 20 73 6f 75 72 63 65 5b 70 72 6f  ty] = source[pro
14b0: 70 65 72 74 79 5d 3b 0d 0a 7d 0d 0a 72 65 74 75  perty];..}..retu
14c0: 72 6e 20 64 65 73 74 69 6e 61 74 69 6f 6e 3b 0d  rn destination;.
14d0: 0a 7d 0d 0a 20 20 20 20 0d 0a 2f 2a 2a 0d 0a 2a  .}..    ../**..*
14e0: 20 46 75 6e 63 74 69 6f 6e 73 20 74 61 6b 65 6e   Functions taken
14f0: 20 66 72 6f 6d 20 50 72 6f 74 6f 74 79 70 65 20   from Prototype 
1500: 6c 69 62 72 61 72 79 2c 20 20 0d 0a 2a 20 64 69  library,  ..* di
1510: 64 6e 27 74 20 77 61 6e 74 20 74 6f 20 72 65 71  dn't want to req
1520: 75 69 72 65 20 66 6f 72 20 6a 75 73 74 20 66 65  uire for just fe
1530: 77 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 2a 20  w functions...* 
1540: 4d 6f 72 65 20 69 6e 66 6f 20 61 74 20 7b 40 6c  More info at {@l
1550: 69 6e 6b 20 68 74 74 70 3a 2f 2f 70 72 6f 74 6f  ink http://proto
1560: 74 79 70 65 2e 63 6f 6e 69 6f 2e 6e 65 74 2f 7d  type.conio.net/}
1570: 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f  ..* @private..*/
1580: 09 0d 0a 4c 6f 67 34 6a 73 2e 62 69 6e 64 20 3d  ...Log4js.bind =
1590: 20 66 75 6e 63 74 69 6f 6e 28 66 6e 2c 20 6f 62   function(fn, ob
15a0: 6a 65 63 74 29 20 7b 0d 0a 72 65 74 75 72 6e 20  ject) {..return 
15b0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
15c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 6e 2e        return fn.
15d0: 61 70 70 6c 79 28 6f 62 6a 65 63 74 2c 20 61 72  apply(object, ar
15e0: 67 75 6d 65 6e 74 73 29 3b 0d 0a 7d 3b 0d 0a 7d  guments);..};..}
15f0: 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 4c 6f 67 34  ;..../**..* Log4
1600: 6a 73 2e 4c 65 76 65 6c 20 45 6e 75 6d 65 72 61  js.Level Enumera
1610: 74 69 6f 6e 2e 20 44 6f 20 6e 6f 74 20 75 73 65  tion. Do not use
1620: 20 64 69 72 65 63 74 6c 79 2e 20 55 73 65 20 73   directly. Use s
1630: 74 61 74 69 63 20 6f 62 6a 65 63 74 73 20 69 6e  tatic objects in
1640: 73 74 65 61 64 2e 0d 0a 2a 20 40 63 6f 6e 73 74  stead...* @const
1650: 72 75 63 74 6f 72 0d 0a 2a 20 40 70 61 72 61 6d  ructor..* @param
1660: 20 7b 4e 75 6d 62 65 72 7d 20 6c 65 76 65 6c 20   {Number} level 
1670: 6e 75 6d 62 65 72 20 6f 66 20 6c 65 76 65 6c 0d  number of level.
1680: 0a 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e  .* @param {Strin
1690: 67 7d 20 6c 65 76 65 6c 53 74 72 69 6e 67 20 53  g} levelString S
16a0: 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61  tring representa
16b0: 74 69 6f 6e 20 6f 66 20 6c 65 76 65 6c 0d 0a 2a  tion of level..*
16c0: 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c   @private..*/..L
16d0: 6f 67 34 6a 73 2e 4c 65 76 65 6c 20 3d 20 66 75  og4js.Level = fu
16e0: 6e 63 74 69 6f 6e 28 6c 65 76 65 6c 2c 20 6c 65  nction(level, le
16f0: 76 65 6c 53 74 72 29 20 7b 0d 0a 20 20 20 20 74  velStr) {..    t
1700: 68 69 73 2e 6c 65 76 65 6c 20 3d 20 6c 65 76 65  his.level = leve
1710: 6c 3b 0d 0a 20 20 20 20 74 68 69 73 2e 6c 65 76  l;..    this.lev
1720: 65 6c 53 74 72 20 3d 20 6c 65 76 65 6c 53 74 72  elStr = levelStr
1730: 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e  ;..};....Log4js.
1740: 4c 65 76 65 6c 2e 70 72 6f 74 6f 74 79 70 65 20  Level.prototype 
1750: 3d 20 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a  =  {..    /** ..
1760: 20 20 20 20 2a 20 63 6f 6e 76 65 72 74 73 20 67      * converts g
1770: 69 76 65 6e 20 53 74 72 69 6e 67 20 74 6f 20 63  iven String to c
1780: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 4c 65 76  orresponding Lev
1790: 65 6c 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d  el..    * @param
17a0: 20 7b 53 74 72 69 6e 67 7d 20 73 41 72 67 20 53   {String} sArg S
17b0: 74 72 69 6e 67 20 76 61 6c 75 65 20 6f 66 20 4c  tring value of L
17c0: 65 76 65 6c 0d 0a 20 20 20 20 2a 20 40 70 61 72  evel..    * @par
17d0: 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  am {Log4js.Level
17e0: 7d 20 64 65 66 61 75 6c 74 4c 65 76 65 6c 20 64  } defaultLevel d
17f0: 65 66 61 75 6c 74 20 4c 65 76 65 6c 2c 20 69 66  efault Level, if
1800: 20 6e 6f 20 53 74 72 69 6e 67 20 72 65 70 72 65   no String repre
1810: 73 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 2a  sentation..    *
1820: 20 40 72 65 74 75 72 6e 20 4c 65 76 65 6c 20 6f   @return Level o
1830: 62 6a 65 63 74 0d 0a 20 20 20 20 2a 20 40 74 79  bject..    * @ty
1840: 70 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d  pe Log4js.Level.
1850: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 6f 4c  .    */..    toL
1860: 65 76 65 6c 3a 20 66 75 6e 63 74 69 6f 6e 28 73  evel: function(s
1870: 41 72 67 2c 20 64 65 66 61 75 6c 74 4c 65 76 65  Arg, defaultLeve
1880: 6c 29 20 7b 20 20 20 20 20 20 20 20 20 20 20 20  l) {            
1890: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
18a0: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
18b0: 20 20 69 66 28 73 41 72 67 20 3d 3d 3d 20 6e 75    if(sArg === nu
18c0: 6c 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ll) {..         
18d0: 20 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c     return defaul
18e0: 74 4c 65 76 65 6c 3b 0d 0a 20 20 20 20 20 20 20  tLevel;..       
18f0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20   }..        ..  
1900: 20 20 20 20 20 20 69 66 28 74 79 70 65 6f 66 20        if(typeof 
1910: 73 41 72 67 20 3d 3d 20 22 73 74 72 69 6e 67 22  sArg == "string"
1920: 29 20 7b 20 0d 0a 20 20 20 20 20 20 20 20 20 20  ) { ..          
1930: 20 20 76 61 72 20 73 20 3d 20 73 41 72 67 2e 74    var s = sArg.t
1940: 6f 55 70 70 65 72 43 61 73 65 28 29 3b 0d 0a 20  oUpperCase();.. 
1950: 20 20 20 20 20 20 20 20 20 20 20 69 66 28 73 20             if(s 
1960: 3d 3d 20 22 41 4c 4c 22 29 20 7b 72 65 74 75 72  == "ALL") {retur
1970: 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 41  n Log4js.Level.A
1980: 4c 4c 3b 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  LL;}..          
1990: 20 20 69 66 28 73 20 3d 3d 20 22 44 45 42 55 47    if(s == "DEBUG
19a0: 22 29 20 7b 72 65 74 75 72 6e 20 4c 6f 67 34 6a  ") {return Log4j
19b0: 73 2e 4c 65 76 65 6c 2e 44 45 42 55 47 3b 7d 0d  s.Level.DEBUG;}.
19c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28  .            if(
19d0: 73 20 3d 3d 20 22 49 4e 46 4f 22 29 20 7b 72 65  s == "INFO") {re
19e0: 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65  turn Log4js.Leve
19f0: 6c 2e 49 4e 46 4f 3b 7d 0d 0a 20 20 20 20 20 20  l.INFO;}..      
1a00: 20 20 20 20 20 20 69 66 28 73 20 3d 3d 20 22 57        if(s == "W
1a10: 41 52 4e 22 29 20 7b 72 65 74 75 72 6e 20 4c 6f  ARN") {return Lo
1a20: 67 34 6a 73 2e 4c 65 76 65 6c 2e 57 41 52 4e 3b  g4js.Level.WARN;
1a30: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
1a40: 66 28 73 20 3d 3d 20 22 45 52 52 4f 52 22 29 20  f(s == "ERROR") 
1a50: 7b 72 65 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c  {return Log4js.L
1a60: 65 76 65 6c 2e 45 52 52 4f 52 3b 7d 0d 0a 20 20  evel.ERROR;}..  
1a70: 20 20 20 20 20 20 20 20 20 20 69 66 28 73 20 3d            if(s =
1a80: 3d 20 22 46 41 54 41 4c 22 29 20 7b 72 65 74 75  = "FATAL") {retu
1a90: 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  rn Log4js.Level.
1aa0: 46 41 54 41 4c 3b 7d 0d 0a 20 20 20 20 20 20 20  FATAL;}..       
1ab0: 20 20 20 20 20 69 66 28 73 20 3d 3d 20 22 4f 46       if(s == "OF
1ac0: 46 22 29 20 7b 72 65 74 75 72 6e 20 4c 6f 67 34  F") {return Log4
1ad0: 6a 73 2e 4c 65 76 65 6c 2e 4f 46 46 3b 7d 0d 0a  js.Level.OFF;}..
1ae0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 73              if(s
1af0: 20 3d 3d 20 22 54 52 41 43 45 22 29 20 7b 72 65   == "TRACE") {re
1b00: 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65  turn Log4js.Leve
1b10: 6c 2e 54 52 41 43 45 3b 7d 0d 0a 20 20 20 20 20  l.TRACE;}..     
1b20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65         return de
1b30: 66 61 75 6c 74 4c 65 76 65 6c 3b 0d 0a 20 20 20  faultLevel;..   
1b40: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 28 74       } else if(t
1b50: 79 70 65 6f 66 20 73 41 72 67 20 3d 3d 20 22 6e  ypeof sArg == "n
1b60: 75 6d 62 65 72 22 29 20 7b 0d 0a 20 20 20 20 20  umber") {..     
1b70: 20 20 20 20 20 20 20 73 77 69 74 63 68 28 73 41         switch(sA
1b80: 72 67 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  rg) {..         
1b90: 20 20 20 20 20 20 20 63 61 73 65 20 41 4c 4c 5f         case ALL_
1ba0: 49 4e 54 3a 20 72 65 74 75 72 6e 20 4c 6f 67 34  INT: return Log4
1bb0: 6a 73 2e 4c 65 76 65 6c 2e 41 4c 4c 3b 0d 0a 20  js.Level.ALL;.. 
1bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1bd0: 61 73 65 20 44 45 42 55 47 5f 49 4e 54 3a 20 72  ase DEBUG_INT: r
1be0: 65 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76  eturn Log4js.Lev
1bf0: 65 6c 2e 44 45 42 55 47 3b 0d 0a 20 20 20 20 20  el.DEBUG;..     
1c00: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1c10: 49 4e 46 4f 5f 49 4e 54 3a 20 72 65 74 75 72 6e  INFO_INT: return
1c20: 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 49 4e   Log4js.Level.IN
1c30: 46 4f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  FO;..           
1c40: 20 20 20 20 20 63 61 73 65 20 57 41 52 4e 5f 49       case WARN_I
1c50: 4e 54 3a 20 72 65 74 75 72 6e 20 4c 6f 67 34 6a  NT: return Log4j
1c60: 73 2e 4c 65 76 65 6c 2e 57 41 52 4e 3b 0d 0a 20  s.Level.WARN;.. 
1c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1c80: 61 73 65 20 45 52 52 4f 52 5f 49 4e 54 3a 20 72  ase ERROR_INT: r
1c90: 65 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76  eturn Log4js.Lev
1ca0: 65 6c 2e 45 52 52 4f 52 3b 0d 0a 20 20 20 20 20  el.ERROR;..     
1cb0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1cc0: 46 41 54 41 4c 5f 49 4e 54 3a 20 72 65 74 75 72  FATAL_INT: retur
1cd0: 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 46  n Log4js.Level.F
1ce0: 41 54 41 4c 3b 0d 0a 20 20 20 20 20 20 20 20 20  ATAL;..         
1cf0: 20 20 20 20 20 20 20 63 61 73 65 20 4f 46 46 5f         case OFF_
1d00: 49 4e 54 3a 20 72 65 74 75 72 6e 20 4c 6f 67 34  INT: return Log4
1d10: 6a 73 2e 4c 65 76 65 6c 2e 4f 46 46 3b 0d 0a 20  js.Level.OFF;.. 
1d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1d30: 61 73 65 20 54 52 41 43 45 5f 49 4e 54 3a 20 72  ase TRACE_INT: r
1d40: 65 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76  eturn Log4js.Lev
1d50: 65 6c 2e 54 52 41 43 45 3b 0d 0a 20 20 20 20 20  el.TRACE;..     
1d60: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
1d70: 6c 74 3a 20 72 65 74 75 72 6e 20 64 65 66 61 75  lt: return defau
1d80: 6c 74 4c 65 76 65 6c 3b 0d 0a 20 20 20 20 20 20  ltLevel;..      
1d90: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1da0: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
1db0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65         return de
1dc0: 66 61 75 6c 74 4c 65 76 65 6c 3b 09 0d 0a 20 20  faultLevel;...  
1dd0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 09        }..    },.
1de0: 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20  ..    /** ..    
1df0: 2a 20 40 72 65 74 75 72 6e 20 20 63 6f 6e 76 65  * @return  conve
1e00: 72 74 65 64 20 4c 65 76 65 6c 20 74 6f 20 53 74  rted Level to St
1e10: 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74 79 70  ring..    * @typ
1e20: 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f  e String..    */
1e30: 09 09 0d 0a 20 20 20 20 74 6f 53 74 72 69 6e 67  ....    toString
1e40: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a  : function() {..
1e50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1e60: 68 69 73 2e 6c 65 76 65 6c 53 74 72 3b 09 0d 0a  his.levelStr;...
1e70: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20      },..    /** 
1e80: 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20  ..    * @return 
1e90: 69 6e 74 65 72 6e 61 6c 20 4e 75 6d 62 65 72 20  internal Number 
1ea0: 76 61 6c 75 65 20 6f 66 20 4c 65 76 65 6c 0d 0a  value of Level..
1eb0: 20 20 20 20 2a 20 40 74 79 70 65 20 4e 75 6d 62      * @type Numb
1ec0: 65 72 0d 0a 20 20 20 20 2a 2f 09 09 09 0d 0a 20  er..    */..... 
1ed0: 20 20 20 76 61 6c 75 65 4f 66 3a 20 66 75 6e 63     valueOf: func
1ee0: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20  tion() {..      
1ef0: 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6c 65    return this.le
1f00: 76 65 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d  vel;..    }..};.
1f10: 0a 0d 0a 2f 2f 20 53 74 61 74 69 63 20 76 61 72  ...// Static var
1f20: 69 61 62 6c 65 73 0d 0a 2f 2a 2a 20 0d 0a 2a 20  iables../** ..* 
1f30: 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f  @private..*/..Lo
1f40: 67 34 6a 73 2e 4c 65 76 65 6c 2e 4f 46 46 5f 49  g4js.Level.OFF_I
1f50: 4e 54 20 3d 20 4e 75 6d 62 65 72 2e 4d 41 58 5f  NT = Number.MAX_
1f60: 56 41 4c 55 45 3b 0d 0a 2f 2a 2a 20 0d 0a 2a 20  VALUE;../** ..* 
1f70: 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f  @private..*/..Lo
1f80: 67 34 6a 73 2e 4c 65 76 65 6c 2e 46 41 54 41 4c  g4js.Level.FATAL
1f90: 5f 49 4e 54 20 3d 20 35 30 30 30 30 3b 0d 0a 2f  _INT = 50000;../
1fa0: 2a 2a 20 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d  ** ..* @private.
1fb0: 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65  .*/..Log4js.Leve
1fc0: 6c 2e 45 52 52 4f 52 5f 49 4e 54 20 3d 20 34 30  l.ERROR_INT = 40
1fd0: 30 30 30 3b 0d 0a 2f 2a 2a 20 0d 0a 2a 20 40 70  000;../** ..* @p
1fe0: 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34  rivate..*/..Log4
1ff0: 6a 73 2e 4c 65 76 65 6c 2e 57 41 52 4e 5f 49 4e  js.Level.WARN_IN
2000: 54 20 3d 20 33 30 30 30 30 3b 0d 0a 2f 2a 2a 20  T = 30000;../** 
2010: 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f  ..* @private..*/
2020: 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 49  ..Log4js.Level.I
2030: 4e 46 4f 5f 49 4e 54 20 3d 20 32 30 30 30 30 3b  NFO_INT = 20000;
2040: 0d 0a 2f 2a 2a 20 0d 0a 2a 20 40 70 72 69 76 61  ../** ..* @priva
2050: 74 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c  te..*/..Log4js.L
2060: 65 76 65 6c 2e 44 45 42 55 47 5f 49 4e 54 20 3d  evel.DEBUG_INT =
2070: 20 31 30 30 30 30 3b 0d 0a 2f 2a 2a 20 0d 0a 2a   10000;../** ..*
2080: 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c   @private..*/..L
2090: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 54 52 41 43  og4js.Level.TRAC
20a0: 45 5f 49 4e 54 20 3d 20 35 30 30 30 3b 0d 0a 2f  E_INT = 5000;../
20b0: 2a 2a 20 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d  ** ..* @private.
20c0: 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65  .*/..Log4js.Leve
20d0: 6c 2e 41 4c 4c 5f 49 4e 54 20 3d 20 4e 75 6d 62  l.ALL_INT = Numb
20e0: 65 72 2e 4d 49 4e 5f 56 41 4c 55 45 3b 0d 0a 0d  er.MIN_VALUE;...
20f0: 0a 2f 2a 2a 20 0d 0a 2a 20 4c 6f 67 67 69 6e 67  ./** ..* Logging
2100: 20 4c 65 76 65 6c 20 4f 46 46 20 2d 20 61 6c 6c   Level OFF - all
2110: 20 64 69 73 61 62 6c 65 64 0d 0a 2a 20 40 74 79   disabled..* @ty
2120: 70 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d  pe Log4js.Level.
2130: 0a 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a  .* @static..*/..
2140: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 4f 46 46  Log4js.Level.OFF
2150: 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c 65   = new Log4js.Le
2160: 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  vel(Log4js.Level
2170: 2e 4f 46 46 5f 49 4e 54 2c 20 22 4f 46 46 22 29  .OFF_INT, "OFF")
2180: 3b 0d 0a 2f 2a 2a 20 0d 0a 2a 20 4c 6f 67 67 69  ;../** ..* Loggi
2190: 6e 67 20 4c 65 76 65 6c 20 46 61 74 61 6c 0d 0a  ng Level Fatal..
21a0: 2a 20 40 74 79 70 65 20 4c 6f 67 34 6a 73 2e 4c  * @type Log4js.L
21b0: 65 76 65 6c 0d 0a 2a 20 40 73 74 61 74 69 63 0d  evel..* @static.
21c0: 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65  .*/..Log4js.Leve
21d0: 6c 2e 46 41 54 41 4c 20 3d 20 6e 65 77 20 4c 6f  l.FATAL = new Lo
21e0: 67 34 6a 73 2e 4c 65 76 65 6c 28 4c 6f 67 34 6a  g4js.Level(Log4j
21f0: 73 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 5f 49 4e  s.Level.FATAL_IN
2200: 54 2c 20 22 46 41 54 41 4c 22 29 3b 0d 0a 2f 2a  T, "FATAL");../*
2210: 2a 20 0d 0a 2a 20 4c 6f 67 67 69 6e 67 20 4c 65  * ..* Logging Le
2220: 76 65 6c 20 45 72 72 6f 72 0d 0a 2a 20 40 74 79  vel Error..* @ty
2230: 70 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d  pe Log4js.Level.
2240: 0a 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a  .* @static..*/..
2250: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 45 52 52  Log4js.Level.ERR
2260: 4f 52 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e  OR = new Log4js.
2270: 4c 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76  Level(Log4js.Lev
2280: 65 6c 2e 45 52 52 4f 52 5f 49 4e 54 2c 20 22 45  el.ERROR_INT, "E
2290: 52 52 4f 52 22 29 3b 20 0d 0a 2f 2a 2a 20 0d 0a  RROR"); ../** ..
22a0: 2a 20 4c 6f 67 67 69 6e 67 20 4c 65 76 65 6c 20  * Logging Level 
22b0: 57 61 72 6e 0d 0a 2a 20 40 74 79 70 65 20 4c 6f  Warn..* @type Lo
22c0: 67 34 6a 73 2e 4c 65 76 65 6c 0d 0a 2a 20 40 73  g4js.Level..* @s
22d0: 74 61 74 69 63 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a  tatic..*/..Log4j
22e0: 73 2e 4c 65 76 65 6c 2e 57 41 52 4e 20 3d 20 6e  s.Level.WARN = n
22f0: 65 77 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 28  ew Log4js.Level(
2300: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 57 41 52  Log4js.Level.WAR
2310: 4e 5f 49 4e 54 2c 20 22 57 41 52 4e 22 29 3b 20  N_INT, "WARN"); 
2320: 0d 0a 2f 2a 2a 20 0d 0a 2a 20 4c 6f 67 67 69 6e  ../** ..* Loggin
2330: 67 20 4c 65 76 65 6c 20 49 6e 66 6f 0d 0a 2a 20  g Level Info..* 
2340: 40 74 79 70 65 20 4c 6f 67 34 6a 73 2e 4c 65 76  @type Log4js.Lev
2350: 65 6c 0d 0a 2a 20 40 73 74 61 74 69 63 0d 0a 2a  el..* @static..*
2360: 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  /..Log4js.Level.
2370: 49 4e 46 4f 20 3d 20 6e 65 77 20 4c 6f 67 34 6a  INFO = new Log4j
2380: 73 2e 4c 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c  s.Level(Log4js.L
2390: 65 76 65 6c 2e 49 4e 46 4f 5f 49 4e 54 2c 20 22  evel.INFO_INT, "
23a0: 49 4e 46 4f 22 29 3b 20 20 20 20 20 0d 0a 2f 2a  INFO");     ../*
23b0: 2a 20 0d 0a 2a 20 4c 6f 67 67 69 6e 67 20 4c 65  * ..* Logging Le
23c0: 76 65 6c 20 44 65 62 75 67 0d 0a 2a 20 40 74 79  vel Debug..* @ty
23d0: 70 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d  pe Log4js.Level.
23e0: 0a 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a  .* @static..*/..
23f0: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 44 45 42  Log4js.Level.DEB
2400: 55 47 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e  UG = new Log4js.
2410: 4c 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76  Level(Log4js.Lev
2420: 65 6c 2e 44 45 42 55 47 5f 49 4e 54 2c 20 22 44  el.DEBUG_INT, "D
2430: 45 42 55 47 22 29 3b 20 20 0d 0a 2f 2a 2a 20 0d  EBUG");  ../** .
2440: 0a 2a 20 4c 6f 67 67 69 6e 67 20 4c 65 76 65 6c  .* Logging Level
2450: 20 54 72 61 63 65 0d 0a 2a 20 40 74 79 70 65 20   Trace..* @type 
2460: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d 0a 2a 20  Log4js.Level..* 
2470: 40 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a 4c 6f 67  @static..*/..Log
2480: 34 6a 73 2e 4c 65 76 65 6c 2e 54 52 41 43 45 20  4js.Level.TRACE 
2490: 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c 65 76  = new Log4js.Lev
24a0: 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  el(Log4js.Level.
24b0: 54 52 41 43 45 5f 49 4e 54 2c 20 22 54 52 41 43  TRACE_INT, "TRAC
24c0: 45 22 29 3b 20 20 0d 0a 2f 2a 2a 20 0d 0a 2a 20  E");  ../** ..* 
24d0: 4c 6f 67 67 69 6e 67 20 4c 65 76 65 6c 20 41 6c  Logging Level Al
24e0: 6c 20 2d 20 41 6c 6c 20 74 72 61 63 65 73 20 61  l - All traces a
24f0: 72 65 20 65 6e 61 62 6c 65 64 0d 0a 2a 20 40 74  re enabled..* @t
2500: 79 70 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  ype Log4js.Level
2510: 0d 0a 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f 0d  ..* @static..*/.
2520: 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 41 4c  .Log4js.Level.AL
2530: 4c 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c  L = new Log4js.L
2540: 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65  evel(Log4js.Leve
2550: 6c 2e 41 4c 4c 5f 49 4e 54 2c 20 22 41 4c 4c 22  l.ALL_INT, "ALL"
2560: 29 3b 20 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 4c 6f  ); ..../**..* Lo
2570: 67 34 6a 73 20 43 75 73 74 6f 6d 45 76 65 6e 74  g4js CustomEvent
2580: 0d 0a 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f 72  ..* @constructor
2590: 0d 0a 2a 20 40 61 75 74 68 6f 72 20 43 6f 72 65  ..* @author Core
25a0: 79 20 4a 6f 68 6e 73 6f 6e 20 2d 20 6f 72 69 67  y Johnson - orig
25b0: 69 6e 61 6c 20 63 6f 64 65 20 69 6e 20 4c 75 6d  inal code in Lum
25c0: 62 65 72 6a 61 63 6b 20 28 68 74 74 70 3a 2f 2f  berjack (http://
25d0: 67 6c 65 65 70 67 6c 6f 70 2e 63 6f 6d 2f 6a 61  gleepglop.com/ja
25e0: 76 61 73 63 72 69 70 74 73 2f 6c 6f 67 67 65 72  vascripts/logger
25f0: 2f 29 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53 65  /)..* @author Se
2600: 74 68 20 43 68 69 73 61 6d 6f 72 65 20 2d 20 61  th Chisamore - a
2610: 64 61 70 74 65 64 20 66 6f 72 20 4c 6f 67 34 6a  dapted for Log4j
2620: 73 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a  s..* @private..*
2630: 2f 0d 0a 4c 6f 67 34 6a 73 2e 43 75 73 74 6f 6d  /..Log4js.Custom
2640: 45 76 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e  Event = function
2650: 28 29 20 7b 0d 0a 20 20 20 20 74 68 69 73 2e 6c  () {..    this.l
2660: 69 73 74 65 6e 65 72 73 20 3d 20 5b 5d 3b 0d 0a  isteners = [];..
2670: 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 43 75 73  };....Log4js.Cus
2680: 74 6f 6d 45 76 65 6e 74 2e 70 72 6f 74 6f 74 79  tomEvent.prototy
2690: 70 65 20 3d 20 7b 0d 0a 0d 0a 20 20 20 20 2f 2a  pe = {....    /*
26a0: 2a 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20  *..    * @param 
26b0: 6d 65 74 68 6f 64 20 6d 65 74 68 6f 64 20 74 6f  method method to
26c0: 20 62 65 20 61 64 64 65 64 0d 0a 20 20 20 20 2a   be added..    *
26d0: 2f 20 0d 0a 20 20 20 20 61 64 64 4c 69 73 74 65  / ..    addListe
26e0: 6e 65 72 20 3a 20 66 75 6e 63 74 69 6f 6e 28 6d  ner : function(m
26f0: 65 74 68 6f 64 29 20 7b 0d 0a 20 20 20 20 20 20  ethod) {..      
2700: 20 20 74 68 69 73 2e 6c 69 73 74 65 6e 65 72 73    this.listeners
2710: 2e 70 75 73 68 28 6d 65 74 68 6f 64 29 3b 0d 0a  .push(method);..
2720: 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f 2a      },....    /*
2730: 2a 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20  *..    * @param 
2740: 6d 65 74 68 6f 64 20 6d 65 74 68 6f 64 20 74 6f  method method to
2750: 20 62 65 20 72 65 6d 6f 76 65 64 0d 0a 20 20 20   be removed..   
2760: 20 2a 2f 20 0d 0a 20 20 20 20 72 65 6d 6f 76 65   */ ..    remove
2770: 4c 69 73 74 65 6e 65 72 20 3a 20 66 75 6e 63 74  Listener : funct
2780: 69 6f 6e 28 6d 65 74 68 6f 64 29 20 7b 0d 0a 20  ion(method) {.. 
2790: 20 20 20 20 20 20 20 76 61 72 20 66 6f 75 6e 64         var found
27a0: 49 6e 64 65 78 65 73 20 3d 20 74 68 69 73 2e 66  Indexes = this.f
27b0: 69 6e 64 4c 69 73 74 65 6e 65 72 49 6e 64 65 78  indListenerIndex
27c0: 65 73 28 6d 65 74 68 6f 64 29 3b 0d 0a 0d 0a 20  es(method);.... 
27d0: 20 20 20 20 20 20 20 66 6f 72 28 76 61 72 20 69         for(var i
27e0: 20 3d 20 30 3b 20 69 20 3c 20 66 6f 75 6e 64 49   = 0; i < foundI
27f0: 6e 64 65 78 65 73 2e 6c 65 6e 67 74 68 3b 20 69  ndexes.length; i
2800: 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ++) {..         
2810: 20 20 20 74 68 69 73 2e 6c 69 73 74 65 6e 65 72     this.listener
2820: 73 2e 73 70 6c 69 63 65 28 66 6f 75 6e 64 49 6e  s.splice(foundIn
2830: 64 65 78 65 73 5b 69 5d 2c 20 31 29 3b 0d 0a 20  dexes[i], 1);.. 
2840: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c         }..    },
2850: 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20  ....    /**..   
2860: 20 2a 20 40 70 61 72 61 6d 20 68 61 6e 64 6c 65   * @param handle
2870: 72 0d 0a 20 20 20 20 2a 2f 20 0d 0a 20 20 20 20  r..    */ ..    
2880: 64 69 73 70 61 74 63 68 20 3a 20 66 75 6e 63 74  dispatch : funct
2890: 69 6f 6e 28 68 61 6e 64 6c 65 72 29 20 7b 0d 0a  ion(handler) {..
28a0: 20 20 20 20 20 20 20 20 66 6f 72 28 76 61 72 20          for(var 
28b0: 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e  i = 0; i < this.
28c0: 6c 69 73 74 65 6e 65 72 73 2e 6c 65 6e 67 74 68  listeners.length
28d0: 3b 20 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20  ; i++) {..      
28e0: 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20        try {..   
28f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
2900: 73 2e 6c 69 73 74 65 6e 65 72 73 5b 69 5d 28 68  s.listeners[i](h
2910: 61 6e 64 6c 65 72 29 3b 0d 0a 20 20 20 20 20 20  andler);..      
2920: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2930: 20 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b       catch (e) {
2940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2950: 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 77    log4jsLogger.w
2960: 61 72 6e 28 22 43 6f 75 6c 64 20 6e 6f 74 20 72  arn("Could not r
2970: 75 6e 20 74 68 65 20 6c 69 73 74 65 6e 65 72 20  un the listener 
2980: 22 20 2b 20 74 68 69 73 2e 6c 69 73 74 65 6e 65  " + this.listene
2990: 72 73 5b 69 5d 20 2b 20 22 2e 20 5c 6e 22 20 2b  rs[i] + ". \n" +
29a0: 20 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   e);..          
29b0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
29c0: 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f 2a      },....    /*
29d0: 2a 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74  *..    * @privat
29e0: 65 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20  e..    * @param 
29f0: 6d 65 74 68 6f 64 0d 0a 20 20 20 20 2a 2f 0d 0a  method..    */..
2a00: 20 20 20 20 66 69 6e 64 4c 69 73 74 65 6e 65 72      findListener
2a10: 49 6e 64 65 78 65 73 20 3a 20 66 75 6e 63 74 69  Indexes : functi
2a20: 6f 6e 28 6d 65 74 68 6f 64 29 20 7b 0d 0a 20 20  on(method) {..  
2a30: 20 20 20 20 20 20 76 61 72 20 69 6e 64 65 78 65        var indexe
2a40: 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 20  s = [];..       
2a50: 20 66 6f 72 28 76 61 72 20 69 20 3d 20 30 3b 20   for(var i = 0; 
2a60: 69 20 3c 20 74 68 69 73 2e 6c 69 73 74 65 6e 65  i < this.listene
2a70: 72 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20  rs.length; i++) 
2a80: 7b 09 09 09 0d 0a 20 20 20 20 20 20 20 20 20 20  {.....          
2a90: 20 20 69 66 20 28 74 68 69 73 2e 6c 69 73 74 65    if (this.liste
2aa0: 6e 65 72 73 5b 69 5d 20 3d 3d 20 6d 65 74 68 6f  ners[i] == metho
2ab0: 64 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  d) {..          
2ac0: 20 20 20 20 20 20 69 6e 64 65 78 65 73 2e 70 75        indexes.pu
2ad0: 73 68 28 69 29 3b 0d 0a 20 20 20 20 20 20 20 20  sh(i);..        
2ae0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
2af0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
2b00: 72 6e 20 69 6e 64 65 78 65 73 3b 0d 0a 20 20 20  rn indexes;..   
2b10: 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a   }..};..../**..*
2b20: 20 4d 6f 64 65 6c 73 20 61 20 6c 6f 67 67 69 6e   Models a loggin
2b30: 67 20 65 76 65 6e 74 2e 0d 0a 2a 20 40 63 6f 6e  g event...* @con
2b40: 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40 70 61 72  structor..* @par
2b50: 61 6d 20 7b 53 74 72 69 6e 67 7d 20 63 61 74 65  am {String} cate
2b60: 67 6f 72 79 4e 61 6d 65 20 6e 61 6d 65 20 6f 66  goryName name of
2b70: 20 63 61 74 65 67 6f 72 79 0d 0a 2a 20 40 70 61   category..* @pa
2b80: 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 65 76 65  ram {Log4js.Leve
2b90: 6c 7d 20 6c 65 76 65 6c 20 6c 65 76 65 6c 20 6f  l} level level o
2ba0: 66 20 6d 65 73 73 61 67 65 0d 0a 2a 20 40 70 61  f message..* @pa
2bb0: 72 61 6d 20 7b 53 74 72 69 6e 67 7d 20 6d 65 73  ram {String} mes
2bc0: 73 61 67 65 20 6d 65 73 73 61 67 65 20 74 6f 20  sage message to 
2bd0: 6c 6f 67 0d 0a 2a 20 40 70 61 72 61 6d 20 7b 4c  log..* @param {L
2be0: 6f 67 34 6a 73 2e 4c 6f 67 67 65 72 7d 20 6c 6f  og4js.Logger} lo
2bf0: 67 67 65 72 20 74 68 65 20 61 73 73 6f 63 69 61  gger the associa
2c00: 74 65 64 20 6c 6f 67 67 65 72 0d 0a 2a 20 40 61  ted logger..* @a
2c10: 75 74 68 6f 72 20 53 65 74 68 20 43 68 69 73 61  uthor Seth Chisa
2c20: 6d 6f 72 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73  more..*/..Log4js
2c30: 2e 4c 6f 67 67 69 6e 67 45 76 65 6e 74 20 3d 20  .LoggingEvent = 
2c40: 66 75 6e 63 74 69 6f 6e 28 63 61 74 65 67 6f 72  function(categor
2c50: 79 4e 61 6d 65 2c 20 6c 65 76 65 6c 2c 20 6d 65  yName, level, me
2c60: 73 73 61 67 65 2c 20 65 78 63 65 70 74 69 6f 6e  ssage, exception
2c70: 2c 20 6c 6f 67 67 65 72 29 20 7b 0d 0a 20 20 20  , logger) {..   
2c80: 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 74 68 65 20   /**..    * the 
2c90: 74 69 6d 65 73 74 61 6d 70 20 6f 66 20 74 68 65  timestamp of the
2ca0: 20 4c 6f 67 67 69 6e 67 20 45 76 65 6e 74 0d 0a   Logging Event..
2cb0: 20 20 20 20 2a 20 40 74 79 70 65 20 44 61 74 65      * @type Date
2cc0: 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65  ..    * @private
2cd0: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68  ..    */..    th
2ce0: 69 73 2e 73 74 61 72 74 54 69 6d 65 20 3d 20 6e  is.startTime = n
2cf0: 65 77 20 44 61 74 65 28 29 3b 0d 0a 20 20 20 20  ew Date();..    
2d00: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 63 61 74 65 67  /**..    * categ
2d10: 6f 72 79 20 6f 66 20 65 76 65 6e 74 0d 0a 20 20  ory of event..  
2d20: 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e 67    * @type String
2d30: 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65  ..    * @private
2d40: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68  ..    */..    th
2d50: 69 73 2e 63 61 74 65 67 6f 72 79 4e 61 6d 65 20  is.categoryName 
2d60: 3d 20 63 61 74 65 67 6f 72 79 4e 61 6d 65 3b 0d  = categoryName;.
2d70: 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
2d80: 74 68 65 20 6c 6f 67 67 69 6e 67 20 6d 65 73 73  the logging mess
2d90: 61 67 65 0d 0a 20 20 20 20 2a 20 40 74 79 70 65  age..    * @type
2da0: 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40   String..    * @
2db0: 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d  private..    */.
2dc0: 0a 20 20 20 20 74 68 69 73 2e 6d 65 73 73 61 67  .    this.messag
2dd0: 65 20 3d 20 6d 65 73 73 61 67 65 3b 0d 0a 20 20  e = message;..  
2de0: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 74 68 65    /**..    * the
2df0: 20 6c 6f 67 67 69 6e 67 20 65 78 63 65 70 74 69   logging excepti
2e00: 6f 6e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  on..    * @type 
2e10: 45 78 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20 2a  Exception..    *
2e20: 20 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a   @private..    *
2e30: 2f 0d 0a 20 20 20 20 74 68 69 73 2e 65 78 63 65  /..    this.exce
2e40: 70 74 69 6f 6e 20 3d 20 65 78 63 65 70 74 69 6f  ption = exceptio
2e50: 6e 3b 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20  n;..    /**..   
2e60: 20 2a 20 6c 65 76 65 6c 20 6f 66 20 6c 6f 67 0d   * level of log.
2e70: 0a 20 20 20 20 2a 20 40 74 79 70 65 20 4c 6f 67  .    * @type Log
2e80: 34 6a 73 2e 4c 65 76 65 6c 0d 0a 20 20 20 20 2a  4js.Level..    *
2e90: 20 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a   @private..    *
2ea0: 2f 0d 0a 20 20 20 20 74 68 69 73 2e 6c 65 76 65  /..    this.leve
2eb0: 6c 20 3d 20 6c 65 76 65 6c 3b 0d 0a 20 20 20 20  l = level;..    
2ec0: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 72 65 66 65 72  /**..    * refer
2ed0: 65 6e 63 65 20 74 6f 20 6c 6f 67 67 65 72 0d 0a  ence to logger..
2ee0: 20 20 20 20 2a 20 40 74 79 70 65 20 4c 6f 67 34      * @type Log4
2ef0: 6a 73 2e 4c 6f 67 67 65 72 0d 0a 20 20 20 20 2a  js.Logger..    *
2f00: 20 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a   @private..    *
2f10: 2f 0d 0a 20 20 20 20 74 68 69 73 2e 6c 6f 67 67  /..    this.logg
2f20: 65 72 20 3d 20 6c 6f 67 67 65 72 3b 0d 0a 7d 3b  er = logger;..};
2f30: 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 4c 6f 67 67 69  ....Log4js.Loggi
2f40: 6e 67 45 76 65 6e 74 2e 70 72 6f 74 6f 74 79 70  ngEvent.prototyp
2f50: 65 20 3d 20 7b 09 0d 0a 20 20 20 20 2f 2a 2a 0d  e = {...    /**.
2f60: 0a 20 20 20 20 2a 20 67 65 74 20 74 68 65 20 74  .    * get the t
2f70: 69 6d 65 73 74 61 6d 70 20 66 6f 72 6d 61 74 74  imestamp formatt
2f80: 65 64 20 61 73 20 53 74 72 69 6e 67 2e 0d 0a 20  ed as String... 
2f90: 20 20 20 2a 20 40 72 65 74 75 72 6e 20 7b 53 74     * @return {St
2fa0: 72 69 6e 67 7d 20 66 6f 72 6d 61 74 74 65 64 20  ring} formatted 
2fb0: 74 69 6d 65 73 74 61 6d 70 0d 0a 20 20 20 20 2a  timestamp..    *
2fc0: 20 40 73 65 65 20 4c 6f 67 34 6a 73 23 73 65 74   @see Log4js#set
2fd0: 44 61 74 65 46 6f 72 6d 61 74 28 29 0d 0a 20 20  DateFormat()..  
2fe0: 20 20 2a 2f 0d 0a 20 20 20 20 67 65 74 46 6f 72    */..    getFor
2ff0: 6d 61 74 74 65 64 54 69 6d 65 73 74 61 6d 70 3a  mattedTimestamp:
3000: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
3010: 20 20 20 20 20 20 20 69 66 28 74 68 69 73 2e 6c         if(this.l
3020: 6f 67 67 65 72 29 20 7b 0d 0a 20 20 20 20 20 20  ogger) {..      
3030: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69        return thi
3040: 73 2e 6c 6f 67 67 65 72 2e 67 65 74 46 6f 72 6d  s.logger.getForm
3050: 61 74 74 65 64 54 69 6d 65 73 74 61 6d 70 28 74  attedTimestamp(t
3060: 68 69 73 2e 73 74 61 72 74 54 69 6d 65 29 3b 0d  his.startTime);.
3070: 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20  .        } else 
3080: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
3090: 65 74 75 72 6e 20 74 68 69 73 2e 73 74 61 72 74  eturn this.start
30a0: 54 69 6d 65 2e 74 6f 47 4d 54 53 74 72 69 6e 67  Time.toGMTString
30b0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ();..        }..
30c0: 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 2f 2a 2a      }..};..../**
30d0: 0d 0a 2a 20 4c 6f 67 67 65 72 20 74 6f 20 6c 6f  ..* Logger to lo
30e0: 67 20 6d 65 73 73 61 67 65 73 20 74 6f 20 74 68  g messages to th
30f0: 65 20 64 65 66 69 6e 65 64 20 61 70 70 65 6e 64  e defined append
3100: 65 72 2e 3c 2f 70 3e 0d 0a 2a 20 44 65 66 61 75  er.</p>..* Defau
3110: 6c 74 20 61 70 70 65 6e 64 65 72 20 69 73 20 41  lt appender is A
3120: 70 70 65 6e 64 65 72 2c 20 77 68 69 63 68 20 69  ppender, which i
3130: 73 20 69 67 6e 6f 72 69 6e 67 20 61 6c 6c 20 6d  s ignoring all m
3140: 65 73 73 61 67 65 73 2e 20 50 6c 65 61 73 65 0d  essages. Please.
3150: 0a 2a 20 75 73 65 20 73 65 74 41 70 70 65 6e 64  .* use setAppend
3160: 65 72 28 29 20 74 6f 20 73 65 74 20 61 20 73 70  er() to set a sp
3170: 65 63 69 66 69 63 20 61 70 70 65 6e 64 65 72 20  ecific appender 
3180: 28 65 2e 67 2e 20 57 69 6e 64 6f 77 41 70 70 65  (e.g. WindowAppe
3190: 6e 64 65 72 29 2e 0d 0a 2a 20 75 73 65 20 7b 40  nder)...* use {@
31a0: 73 65 65 20 4c 6f 67 34 6a 73 23 67 65 74 4c 6f  see Log4js#getLo
31b0: 67 67 65 72 28 53 74 72 69 6e 67 29 7d 20 74 6f  gger(String)} to
31c0: 20 67 65 74 20 61 6e 20 69 6e 73 74 61 6e 63 65   get an instance
31d0: 2e 0d 0a 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f  ...* @constructo
31e0: 72 0d 0a 2a 20 40 70 61 72 61 6d 20 6e 61 6d 65  r..* @param name
31f0: 20 6e 61 6d 65 20 6f 66 20 63 61 74 65 67 6f 72   name of categor
3200: 79 20 74 6f 20 6c 6f 67 20 74 6f 0d 0a 2a 20 40  y to log to..* @
3210: 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20 53  author Stephan S
3220: 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d  trittmatter..*/.
3230: 0a 4c 6f 67 34 6a 73 2e 4c 6f 67 67 65 72 20 3d  .Log4js.Logger =
3240: 20 66 75 6e 63 74 69 6f 6e 28 6e 61 6d 65 29 20   function(name) 
3250: 7b 0d 0a 20 20 20 20 74 68 69 73 2e 6c 6f 67 67  {..    this.logg
3260: 69 6e 67 45 76 65 6e 74 73 20 3d 20 5b 5d 3b 0d  ingEvents = [];.
3270: 0a 20 20 20 20 74 68 69 73 2e 61 70 70 65 6e 64  .    this.append
3280: 65 72 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 2f  ers = [];..    /
3290: 2a 2a 20 63 61 74 65 67 6f 72 79 20 6f 66 20 6c  ** category of l
32a0: 6f 67 67 65 72 20 2a 2f 0d 0a 20 20 20 20 74 68  ogger */..    th
32b0: 69 73 2e 63 61 74 65 67 6f 72 79 20 3d 20 6e 61  is.category = na
32c0: 6d 65 20 7c 7c 20 22 22 3b 0d 0a 20 20 20 20 2f  me || "";..    /
32d0: 2a 2a 20 6c 65 76 65 6c 20 74 6f 20 62 65 20 6c  ** level to be l
32e0: 6f 67 67 65 64 20 2a 2f 0d 0a 20 20 20 20 74 68  ogged */..    th
32f0: 69 73 2e 6c 65 76 65 6c 20 3d 20 4c 6f 67 34 6a  is.level = Log4j
3300: 73 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 3b 0d 0a  s.Level.FATAL;..
3310: 20 20 20 20 0d 0a 20 20 20 20 74 68 69 73 2e 64      ..    this.d
3320: 61 74 65 66 6f 72 6d 61 74 20 3d 20 4c 6f 67 34  ateformat = Log4
3330: 6a 73 2e 44 61 74 65 46 6f 72 6d 61 74 74 65 72  js.DateFormatter
3340: 2e 44 45 46 41 55 4c 54 5f 44 41 54 45 5f 46 4f  .DEFAULT_DATE_FO
3350: 52 4d 41 54 3b 0d 0a 20 20 20 20 74 68 69 73 2e  RMAT;..    this.
3360: 64 61 74 65 66 6f 72 6d 61 74 74 65 72 20 3d 20  dateformatter = 
3370: 6e 65 77 20 4c 6f 67 34 6a 73 2e 44 61 74 65 46  new Log4js.DateF
3380: 6f 72 6d 61 74 74 65 72 28 29 3b 0d 0a 20 20 20  ormatter();..   
3390: 20 0d 0a 20 20 20 20 74 68 69 73 2e 6f 6e 6c 6f   ..    this.onlo
33a0: 67 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 43  g = new Log4js.C
33b0: 75 73 74 6f 6d 45 76 65 6e 74 28 29 3b 0d 0a 20  ustomEvent();.. 
33c0: 20 20 20 74 68 69 73 2e 6f 6e 63 6c 65 61 72 20     this.onclear 
33d0: 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 43 75 73  = new Log4js.Cus
33e0: 74 6f 6d 45 76 65 6e 74 28 29 3b 0d 0a 20 20 20  tomEvent();..   
33f0: 20 0d 0a 20 20 20 20 2f 2a 2a 20 61 70 70 65 6e   ..    /** appen
3400: 64 65 72 20 74 6f 20 77 72 69 74 65 20 69 6e 20  der to write in 
3410: 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 61 70 70  */..    this.app
3420: 65 6e 64 65 72 73 2e 70 75 73 68 28 6e 65 77 20  enders.push(new 
3430: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28  Log4js.Appender(
3440: 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 0d 0a 20  this));..    .. 
3450: 20 20 20 2f 2f 20 69 66 20 6d 75 6c 74 69 70 6c     // if multipl
3460: 65 20 6c 6f 67 20 6f 62 6a 65 63 74 73 20 61 72  e log objects ar
3470: 65 20 69 6e 73 74 61 6e 74 69 61 74 65 64 20 74  e instantiated t
3480: 68 69 73 20 77 69 6c 6c 20 6f 6e 6c 79 20 6c 6f  his will only lo
3490: 67 20 74 6f 20 74 68 65 20 6c 6f 67 20 0d 0a 20  g to the log .. 
34a0: 20 20 20 2f 2f 20 6f 62 6a 65 63 74 20 74 68 61     // object tha
34b0: 74 20 69 73 20 64 65 63 6c 61 72 65 64 20 6c 61  t is declared la
34c0: 73 74 20 63 61 6e 27 74 20 73 65 65 6d 20 74 6f  st can't seem to
34d0: 20 67 65 74 20 74 68 65 20 61 74 74 61 63 68 45   get the attachE
34e0: 76 65 6e 74 20 6d 65 74 68 6f 64 20 74 6f 20 0d  vent method to .
34f0: 0a 20 20 20 20 2f 2f 20 77 6f 72 6b 20 63 6f 72  .    // work cor
3500: 72 65 63 74 6c 79 0d 0a 20 20 20 20 74 72 79 20  rectly..    try 
3510: 7b 0d 0a 20 20 20 20 20 20 20 20 77 69 6e 64 6f  {..        windo
3520: 77 2e 6f 6e 65 72 72 6f 72 20 3d 20 74 68 69 73  w.onerror = this
3530: 2e 77 69 6e 64 6f 77 45 72 72 6f 72 2e 62 69 6e  .windowError.bin
3540: 64 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 20  d(this);..    } 
3550: 63 61 74 63 68 20 28 65 29 20 7b 0d 0a 20 20 20  catch (e) {..   
3560: 20 20 20 20 20 2f 2f 6c 6f 67 34 6a 73 4c 6f 67       //log4jsLog
3570: 67 65 72 2e 66 61 74 61 6c 28 65 29 3b 0d 0a 20  ger.fatal(e);.. 
3580: 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 20 20 20 20     }..    ..    
3590: 66 6f 72 20 28 76 61 72 20 6b 20 69 6e 20 4c 6f  for (var k in Lo
35a0: 67 34 6a 73 2e 4c 65 76 65 6c 29 7b 0d 0a 20 20  g4js.Level){..  
35b0: 20 20 20 20 20 20 76 61 72 20 6c 65 76 20 3d 20        var lev = 
35c0: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 5b 6b 5d 3b  Log4js.Level[k];
35d0: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 79  ..        var ty
35e0: 70 65 4e 61 6d 65 20 3d 20 4f 62 6a 65 63 74 2e  peName = Object.
35f0: 70 72 6f 74 6f 74 79 70 65 2e 74 6f 53 74 72 69  prototype.toStri
3600: 6e 67 2e 63 61 6c 6c 28 6c 65 76 29 3b 0d 0a 20  ng.call(lev);.. 
3610: 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65 4e         if (typeN
3620: 61 6d 65 20 3d 3d 20 22 5b 6f 62 6a 65 63 74 20  ame == "[object 
3630: 4f 62 6a 65 63 74 5d 22 29 7b 0d 0a 20 20 20 20  Object]"){..    
3640: 20 20 20 20 20 20 20 20 76 61 72 20 6d 61 63 72          var macr
3650: 6f 73 20 3d 20 53 65 6c 66 53 63 72 69 70 74 2e  os = SelfScript.
3660: 73 65 6c 66 5b 22 6d 61 63 72 6f 73 d0 a3 d1 81  self["macros....
3670: d1 82 d0 b0 d0 bd d0 be d0 b2 d0 b8 d1 82 d1 8c  ................
3680: 20 d0 bb d0 be d0 b3 d0 b3 20 22 2b 6e 61 6d 65   ........ "+name
3690: 2b 22 20 d0 bd d0 b0 20 22 20 2b 20 6b 5d 3b 0d  +" .... " + k];.
36a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
36b0: 28 21 6d 61 63 72 6f 73 29 7b 0d 0a 20 20 20 20  (!macros){..    
36c0: 20 20 20 20 20 20 20 20 20 20 20 20 53 65 6c 66              Self
36d0: 53 63 72 69 70 74 2e 73 65 6c 66 5b 22 6d 61 63  Script.self["mac
36e0: 72 6f 73 d0 a3 d1 81 d1 82 d0 b0 d0 bd d0 be d0  ros.............
36f0: b2 d0 b8 d1 82 d1 8c 20 d0 bb d0 be d0 b3 d0 b3  ....... ........
3700: 20 22 2b 6e 61 6d 65 2b 22 20 d0 bd d0 b0 20 22   "+name+" .... "
3710: 20 2b 20 6b 5d 20 3d 20 6e 65 77 20 46 75 6e 63   + k] = new Func
3720: 74 69 6f 6e 28 27 76 61 72 20 6c 6f 67 67 65 72  tion('var logger
3730: 20 3d 20 4c 6f 67 34 6a 73 2e 67 65 74 4c 6f 67   = Log4js.getLog
3740: 67 65 72 28 22 27 20 2b 20 6e 61 6d 65 20 2b 20  ger("' + name + 
3750: 27 22 29 3b 20 6c 6f 67 67 65 72 2e 73 65 74 4c  '"); logger.setL
3760: 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65  evel(Log4js.Leve
3770: 6c 2e 27 2b 6c 65 76 2e 74 6f 53 74 72 69 6e 67  l.'+lev.toString
3780: 28 29 2b 27 29 3b 20 6c 6f 67 67 65 72 2e 6c 6f  ()+'); logger.lo
3790: 67 28 22 d0 a3 d1 80 d0 be d0 b2 d0 b5 d0 bd d1  g(".............
37a0: 8c 20 d0 bb d0 be d0 b3 d0 b0 20 d0 b8 d0 b7 d0  . ........ .....
37b0: bc d0 b5 d0 bd d0 b5 d0 bd 20 d0 bd d0 b0 20 27  ......... .... '
37c0: 2b 6c 65 76 2e 74 6f 53 74 72 69 6e 67 28 29 2b  +lev.toString()+
37d0: 27 20 22 29 3b 27 29 3b 0d 0a 20 20 20 20 20 20  ' ");');..      
37e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
37f0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d   }..    }..    .
3800: 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 4c 6f  .};....Log4js.Lo
3810: 67 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 20 3d  gger.prototype =
3820: 20 7b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20   {....    /**.. 
3830: 20 20 20 2a 20 61 64 64 20 61 64 64 69 74 69 6f     * add additio
3840: 6e 61 6c 20 61 70 70 65 6e 64 65 72 2e 20 44 65  nal appender. De
3850: 66 61 75 6c 74 41 70 70 65 6e 64 65 72 20 61 6c  faultAppender al
3860: 77 61 79 73 20 69 73 20 74 68 65 72 65 2e 0d 0a  ways is there...
3870: 20 20 20 20 2a 20 40 70 61 72 61 6d 20 61 70 70      * @param app
3880: 65 6e 64 65 72 20 61 64 64 69 74 69 6f 6e 61 6c  ender additional
3890: 20 77 61 6e 74 65 64 20 61 70 70 65 6e 64 65 72   wanted appender
38a0: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 61 64  ..    */..    ad
38b0: 64 41 70 70 65 6e 64 65 72 3a 20 66 75 6e 63 74  dAppender: funct
38c0: 69 6f 6e 28 61 70 70 65 6e 64 65 72 29 20 7b 0d  ion(appender) {.
38d0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 61 70 70  .        if (app
38e0: 65 6e 64 65 72 20 69 6e 73 74 61 6e 63 65 6f 66  ender instanceof
38f0: 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72   Log4js.Appender
3900: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
3910: 20 61 70 70 65 6e 64 65 72 2e 73 65 74 4c 6f 67   appender.setLog
3920: 67 65 72 28 74 68 69 73 29 3b 0d 0a 20 20 20 20  ger(this);..    
3930: 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 70 70          this.app
3940: 65 6e 64 65 72 73 2e 70 75 73 68 28 61 70 70 65  enders.push(appe
3950: 6e 64 65 72 29 3b 09 09 09 0d 0a 20 20 20 20 20  nder);.....     
3960: 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20     } else {..   
3970: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 22           throw "
3980: 4e 6f 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20  Not instance of 
3990: 61 6e 20 41 70 70 65 6e 64 65 72 3a 20 22 20 2b  an Appender: " +
39a0: 20 61 70 70 65 6e 64 65 72 3b 0d 0a 20 20 20 20   appender;..    
39b0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 0d      }..    },...
39c0: 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
39d0: 73 65 74 20 41 72 72 61 79 20 6f 66 20 61 70 70  set Array of app
39e0: 65 6e 64 65 72 73 2e 20 50 72 65 76 69 6f 75 73  enders. Previous
39f0: 20 41 70 70 65 6e 64 65 72 73 20 61 72 65 20 63   Appenders are c
3a00: 6c 65 61 72 65 64 20 61 6e 64 20 72 65 6d 6f 76  leared and remov
3a10: 65 64 2e 0d 0a 20 20 20 20 2a 20 40 70 61 72 61  ed...    * @para
3a20: 6d 20 7b 41 72 72 61 79 7d 20 61 70 70 65 6e 64  m {Array} append
3a30: 65 72 73 20 41 72 72 61 79 20 6f 66 20 41 70 70  ers Array of App
3a40: 65 6e 64 65 72 73 0d 0a 20 20 20 20 2a 2f 0d 0a  enders..    */..
3a50: 20 20 20 20 73 65 74 41 70 70 65 6e 64 65 72 73      setAppenders
3a60: 3a 20 66 75 6e 63 74 69 6f 6e 28 61 70 70 65 6e  : function(appen
3a70: 64 65 72 73 29 20 7b 0d 0a 20 20 20 20 20 20 20  ders) {..       
3a80: 20 2f 2f 63 6c 65 61 72 20 66 69 72 73 74 20 61   //clear first a
3a90: 6c 6c 20 65 78 69 73 74 69 6e 67 20 61 70 70 65  ll existing appe
3aa0: 6e 64 65 72 73 0d 0a 20 20 20 20 20 20 20 20 66  nders..        f
3ab0: 6f 72 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20  or(var i = 0; i 
3ac0: 3c 20 74 68 69 73 2e 61 70 70 65 6e 64 65 72 73  < this.appenders
3ad0: 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0d  .length; i++) {.
3ae0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
3af0: 73 2e 61 70 70 65 6e 64 65 72 73 5b 69 5d 2e 64  s.appenders[i].d
3b00: 6f 43 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20 20  oClear();..     
3b10: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a     }..        ..
3b20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 61 70 70          this.app
3b30: 65 6e 64 65 72 73 20 3d 20 61 70 70 65 6e 64 65  enders = appende
3b40: 72 73 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20  rs;..        .. 
3b50: 20 20 20 20 20 20 20 66 6f 72 28 76 61 72 20 6a         for(var j
3b60: 20 3d 20 30 3b 20 6a 20 3c 20 74 68 69 73 2e 61   = 0; j < this.a
3b70: 70 70 65 6e 64 65 72 73 2e 6c 65 6e 67 74 68 3b  ppenders.length;
3b80: 20 6a 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20   j++) {..       
3b90: 20 20 20 20 20 74 68 69 73 2e 61 70 70 65 6e 64       this.append
3ba0: 65 72 73 5b 6a 5d 2e 73 65 74 4c 6f 67 67 65 72  ers[j].setLogger
3bb0: 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20  (this);..       
3bc0: 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20   }..    },..    
3bd0: 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a  ..    /**..    *
3be0: 20 53 65 74 20 74 68 65 20 4c 6f 67 6c 65 76 65   Set the Logleve
3bf0: 6c 20 64 65 66 61 75 6c 74 20 69 73 20 4c 6f 67  l default is Log
3c00: 4c 45 76 65 6c 2e 54 52 41 43 45 0d 0a 20 20 20  LEvel.TRACE..   
3c10: 20 2a 20 40 70 61 72 61 6d 20 6c 65 76 65 6c 20   * @param level 
3c20: 77 61 6e 74 65 64 20 6c 6f 67 67 69 6e 67 20 6c  wanted logging l
3c30: 65 76 65 6c 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  evel..    */..  
3c40: 20 20 73 65 74 4c 65 76 65 6c 3a 20 66 75 6e 63    setLevel: func
3c50: 74 69 6f 6e 28 6c 65 76 65 6c 29 20 7b 0d 0a 20  tion(level) {.. 
3c60: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 65 76 65         this.leve
3c70: 6c 20 3d 20 6c 65 76 65 6c 3b 0d 0a 20 20 20 20  l = level;..    
3c80: 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a  },..    ..    /*
3c90: 2a 20 0d 0a 20 20 20 20 2a 20 6d 61 69 6e 20 6c  * ..    * main l
3ca0: 6f 67 20 6d 65 74 68 6f 64 20 6c 6f 67 67 69 6e  og method loggin
3cb0: 67 20 74 6f 20 61 6c 6c 20 61 76 61 69 6c 61 62  g to all availab
3cc0: 6c 65 20 61 70 70 65 6e 64 65 72 73 20 0d 0a 20  le appenders .. 
3cd0: 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20     * @private.. 
3ce0: 20 20 20 2a 2f 0d 0a 20 20 20 20 6c 6f 67 3a 20     */..    log: 
3cf0: 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 4c 65 76 65  function(logLeve
3d00: 6c 2c 20 6d 65 73 73 61 67 65 2c 20 65 78 63 65  l, message, exce
3d10: 70 74 69 6f 6e 29 20 7b 0d 0a 20 20 20 20 20 20  ption) {..      
3d20: 20 20 76 61 72 20 6c 6f 67 67 69 6e 67 45 76 65    var loggingEve
3d30: 6e 74 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e  nt = new Log4js.
3d40: 4c 6f 67 67 69 6e 67 45 76 65 6e 74 28 74 68 69  LoggingEvent(thi
3d50: 73 2e 63 61 74 65 67 6f 72 79 2c 20 6c 6f 67 4c  s.category, logL
3d60: 65 76 65 6c 2c 20 0d 0a 20 20 20 20 20 20 20 20  evel, ..        
3d70: 20 20 20 20 6d 65 73 73 61 67 65 2c 20 65 78 63      message, exc
3d80: 65 70 74 69 6f 6e 2c 20 74 68 69 73 29 3b 0d 0a  eption, this);..
3d90: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67          this.log
3da0: 67 69 6e 67 45 76 65 6e 74 73 2e 70 75 73 68 28  gingEvents.push(
3db0: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 3b 0d 0a  loggingEvent);..
3dc0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 6e 6c          this.onl
3dd0: 6f 67 2e 64 69 73 70 61 74 63 68 28 6c 6f 67 67  og.dispatch(logg
3de0: 69 6e 67 45 76 65 6e 74 29 3b 0d 0a 20 20 20 20  ingEvent);..    
3df0: 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a  },..    ..    /*
3e00: 2a 20 63 6c 65 61 72 20 6c 6f 67 67 69 6e 67 20  * clear logging 
3e10: 2a 2f 0d 0a 20 20 20 20 63 6c 65 61 72 20 3a 20  */..    clear : 
3e20: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20  function () {.. 
3e30: 20 20 20 20 20 20 20 74 72 79 7b 0d 0a 20 20 20         try{..   
3e40: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f           this.lo
3e50: 67 67 69 6e 67 45 76 65 6e 74 73 20 3d 20 5b 5d  ggingEvents = []
3e60: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
3e70: 68 69 73 2e 6f 6e 63 6c 65 61 72 2e 64 69 73 70  his.onclear.disp
3e80: 61 74 63 68 28 29 3b 0d 0a 20 20 20 20 20 20 20  atch();..       
3e90: 20 7d 20 63 61 74 63 68 28 65 29 7b 7d 0d 0a 20   } catch(e){}.. 
3ea0: 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 63     },..    /** c
3eb0: 68 65 63 6b 73 20 69 66 20 4c 65 76 65 6c 20 54  hecks if Level T
3ec0: 72 61 63 65 20 69 73 20 65 6e 61 62 6c 65 64 20  race is enabled 
3ed0: 2a 2f 0d 0a 20 20 20 20 69 73 54 72 61 63 65 45  */..    isTraceE
3ee0: 6e 61 62 6c 65 64 3a 20 66 75 6e 63 74 69 6f 6e  nabled: function
3ef0: 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66  () {..        if
3f00: 20 28 74 68 69 73 2e 6c 65 76 65 6c 2e 76 61 6c   (this.level.val
3f10: 75 65 4f 66 28 29 20 3c 3d 20 4c 6f 67 34 6a 73  ueOf() <= Log4js
3f20: 2e 4c 65 76 65 6c 2e 54 52 41 43 45 2e 76 61 6c  .Level.TRACE.val
3f30: 75 65 4f 66 28 29 29 20 7b 0d 0a 20 20 20 20 20  ueOf()) {..     
3f40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
3f50: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
3f60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
3f70: 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20  alse;..    },.. 
3f80: 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 54     /** ..    * T
3f90: 72 61 63 65 20 6d 65 73 73 61 67 65 73 20 0d 0a  race messages ..
3fa0: 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d 65 73      * @param mes
3fb0: 73 61 67 65 20 7b 4f 62 6a 65 63 74 7d 20 6d 65  sage {Object} me
3fc0: 73 73 61 67 65 20 74 6f 20 62 65 20 6c 6f 67 67  ssage to be logg
3fd0: 65 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  ed..    */..    
3fe0: 74 72 61 63 65 3a 20 66 75 6e 63 74 69 6f 6e 28  trace: function(
3ff0: 6d 65 73 73 61 67 65 29 20 7b 0d 0a 20 20 20 20  message) {..    
4000: 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 54      if (this.isT
4010: 72 61 63 65 45 6e 61 62 6c 65 64 28 29 29 20 7b  raceEnabled()) {
4020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4030: 69 73 2e 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65  is.log(Log4js.Le
4040: 76 65 6c 2e 54 52 41 43 45 2c 20 6d 65 73 73 61  vel.TRACE, messa
4050: 67 65 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20  ge, null);..    
4060: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20      }..    },.. 
4070: 20 20 20 2f 2a 2a 20 63 68 65 63 6b 73 20 69 66     /** checks if
4080: 20 4c 65 76 65 6c 20 44 65 62 75 67 20 69 73 20   Level Debug is 
4090: 65 6e 61 62 6c 65 64 20 2a 2f 0d 0a 20 20 20 20  enabled */..    
40a0: 69 73 44 65 62 75 67 45 6e 61 62 6c 65 64 3a 20  isDebugEnabled: 
40b0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
40c0: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c        if (this.l
40d0: 65 76 65 6c 2e 76 61 6c 75 65 4f 66 28 29 20 3c  evel.valueOf() <
40e0: 3d 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 44  = Log4js.Level.D
40f0: 45 42 55 47 2e 76 61 6c 75 65 4f 66 28 29 29 20  EBUG.valueOf()) 
4100: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
4110: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
4120: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4130: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
4140: 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d     },..    /** .
4150: 0a 20 20 20 20 2a 20 44 65 62 75 67 20 6d 65 73  .    * Debug mes
4160: 73 61 67 65 73 20 0d 0a 20 20 20 20 2a 20 40 70  sages ..    * @p
4170: 61 72 61 6d 20 6d 65 73 73 61 67 65 20 7b 4f 62  aram message {Ob
4180: 6a 65 63 74 7d 20 6d 65 73 73 61 67 65 20 74 6f  ject} message to
4190: 20 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20   be logged..    
41a0: 2a 2f 0d 0a 20 20 20 20 64 65 62 75 67 3a 20 66  */..    debug: f
41b0: 75 6e 63 74 69 6f 6e 28 6d 65 73 73 61 67 65 29  unction(message)
41c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
41d0: 74 68 69 73 2e 69 73 44 65 62 75 67 45 6e 61 62  this.isDebugEnab
41e0: 6c 65 64 28 29 29 20 7b 0d 0a 20 20 20 20 20 20  led()) {..      
41f0: 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 28 4c        this.log(L
4200: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 44 45 42 55  og4js.Level.DEBU
4210: 47 2c 20 6d 65 73 73 61 67 65 2c 20 6e 75 6c 6c  G, message, null
4220: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
4230: 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 0d 0a     },..    /**..
4240: 20 20 20 20 2a 20 44 65 62 75 67 20 6d 65 73 73      * Debug mess
4250: 61 67 65 73 20 0d 0a 20 20 20 20 2a 20 40 70 61  ages ..    * @pa
4260: 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 6d 65 73  ram {Object} mes
4270: 73 61 67 65 20 20 6d 65 73 73 61 67 65 20 74 6f  sage  message to
4280: 20 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20   be logged..    
4290: 2a 20 40 70 61 72 61 6d 20 7b 54 68 72 6f 77 61  * @param {Throwa
42a0: 62 6c 65 7d 20 74 68 72 6f 77 61 62 6c 65 20 0d  ble} throwable .
42b0: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 65 62  .    */..    deb
42c0: 75 67 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 65 73  ug: function(mes
42d0: 73 61 67 65 2c 20 74 68 72 6f 77 61 62 6c 65 29  sage, throwable)
42e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
42f0: 74 68 69 73 2e 69 73 44 65 62 75 67 45 6e 61 62  this.isDebugEnab
4300: 6c 65 64 28 29 29 20 7b 0d 0a 20 20 20 20 20 20  led()) {..      
4310: 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 28 4c        this.log(L
4320: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 44 45 42 55  og4js.Level.DEBU
4330: 47 2c 20 6d 65 73 73 61 67 65 2c 20 74 68 72 6f  G, message, thro
4340: 77 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  wable);..       
4350: 20 7d 0d 0a 20 20 20 20 7d 2c 09 0d 0a 20 20 20   }..    },...   
4360: 20 2f 2a 2a 20 63 68 65 63 6b 73 20 69 66 20 4c   /** checks if L
4370: 65 76 65 6c 20 49 6e 66 6f 20 69 73 20 65 6e 61  evel Info is ena
4380: 62 6c 65 64 20 2a 2f 0d 0a 20 20 20 20 69 73 49  bled */..    isI
4390: 6e 66 6f 45 6e 61 62 6c 65 64 3a 20 66 75 6e 63  nfoEnabled: func
43a0: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20  tion() {..      
43b0: 20 20 69 66 20 28 74 68 69 73 2e 6c 65 76 65 6c    if (this.level
43c0: 2e 76 61 6c 75 65 4f 66 28 29 20 3c 3d 20 4c 6f  .valueOf() <= Lo
43d0: 67 34 6a 73 2e 4c 65 76 65 6c 2e 49 4e 46 4f 2e  g4js.Level.INFO.
43e0: 76 61 6c 75 65 4f 66 28 29 29 20 7b 0d 0a 20 20  valueOf()) {..  
43f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4400: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
4410: 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  }..        retur
4420: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 2c  n false;..    },
4430: 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20  ..    /** ..    
4440: 2a 20 6c 6f 67 67 69 6e 67 20 69 6e 66 6f 20 6d  * logging info m
4450: 65 73 73 61 67 65 73 20 0d 0a 20 20 20 20 2a 20  essages ..    * 
4460: 40 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20  @param {Object} 
4470: 6d 65 73 73 61 67 65 20 20 6d 65 73 73 61 67 65  message  message
4480: 20 74 6f 20 62 65 20 6c 6f 67 67 65 64 0d 0a 20   to be logged.. 
4490: 20 20 20 2a 2f 0d 0a 20 20 20 20 69 6e 66 6f 3a     */..    info:
44a0: 20 66 75 6e 63 74 69 6f 6e 28 6d 65 73 73 61 67   function(messag
44b0: 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66  e) {..        if
44c0: 20 28 74 68 69 73 2e 69 73 49 6e 66 6f 45 6e 61   (this.isInfoEna
44d0: 62 6c 65 64 28 29 29 20 7b 0d 0a 20 20 20 20 20  bled()) {..     
44e0: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 28         this.log(
44f0: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 49 4e 46  Log4js.Level.INF
4500: 4f 2c 20 6d 65 73 73 61 67 65 2c 20 6e 75 6c 6c  O, message, null
4510: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
4520: 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d     },..    /** .
4530: 0a 20 20 20 20 2a 20 6c 6f 67 67 69 6e 67 20 69  .    * logging i
4540: 6e 66 6f 20 6d 65 73 73 61 67 65 73 20 0d 0a 20  nfo messages .. 
4550: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 4f 62 6a     * @param {Obj
4560: 65 63 74 7d 20 6d 65 73 73 61 67 65 20 20 6d 65  ect} message  me
4570: 73 73 61 67 65 20 74 6f 20 62 65 20 6c 6f 67 67  ssage to be logg
4580: 65 64 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d  ed..    * @param
4590: 20 7b 54 68 72 6f 77 61 62 6c 65 7d 20 74 68 72   {Throwable} thr
45a0: 6f 77 61 62 6c 65 20 20 0d 0a 20 20 20 20 2a 2f  owable  ..    */
45b0: 0d 0a 20 20 20 20 69 6e 66 6f 3a 20 66 75 6e 63  ..    info: func
45c0: 74 69 6f 6e 28 6d 65 73 73 61 67 65 2c 20 74 68  tion(message, th
45d0: 72 6f 77 61 62 6c 65 29 20 7b 0d 0a 20 20 20 20  rowable) {..    
45e0: 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 49      if (this.isI
45f0: 6e 66 6f 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d  nfoEnabled()) {.
4600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
4610: 73 2e 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76  s.log(Log4js.Lev
4620: 65 6c 2e 49 4e 46 4f 2c 20 6d 65 73 73 61 67 65  el.INFO, message
4630: 2c 20 74 68 72 6f 77 61 62 6c 65 29 3b 0d 0a 20  , throwable);.. 
4640: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c         }..    },
4650: 0d 0a 20 20 20 20 2f 2a 2a 20 63 68 65 63 6b 73  ..    /** checks
4660: 20 69 66 20 4c 65 76 65 6c 20 57 61 72 6e 20 69   if Level Warn i
4670: 73 20 65 6e 61 62 6c 65 64 20 2a 2f 0d 0a 20 20  s enabled */..  
4680: 20 20 69 73 57 61 72 6e 45 6e 61 62 6c 65 64 3a    isWarnEnabled:
4690: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
46a0: 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
46b0: 6c 65 76 65 6c 2e 76 61 6c 75 65 4f 66 28 29 20  level.valueOf() 
46c0: 3c 3d 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  <= Log4js.Level.
46d0: 57 41 52 4e 2e 76 61 6c 75 65 4f 66 28 29 29 20  WARN.valueOf()) 
46e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
46f0: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
4700: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4710: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
4720: 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f 2a 2a     },....    /**
4730: 20 6c 6f 67 67 69 6e 67 20 77 61 72 6e 20 6d 65   logging warn me
4740: 73 73 61 67 65 73 20 2a 2f 0d 0a 20 20 20 20 77  ssages */..    w
4750: 61 72 6e 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 65  arn: function(me
4760: 73 73 61 67 65 29 20 7b 0d 0a 20 20 20 20 20 20  ssage) {..      
4770: 20 20 69 66 20 28 74 68 69 73 2e 69 73 57 61 72    if (this.isWar
4780: 6e 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d 0a 20  nEnabled()) {.. 
4790: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
47a0: 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  log(Log4js.Level
47b0: 2e 57 41 52 4e 2c 20 6d 65 73 73 61 67 65 2c 20  .WARN, message, 
47c0: 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  null);..        
47d0: 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f  }..    },..    /
47e0: 2a 2a 20 6c 6f 67 67 69 6e 67 20 77 61 72 6e 20  ** logging warn 
47f0: 6d 65 73 73 61 67 65 73 20 2a 2f 0d 0a 20 20 20  messages */..   
4800: 20 77 61 72 6e 3a 20 66 75 6e 63 74 69 6f 6e 28   warn: function(
4810: 6d 65 73 73 61 67 65 2c 20 74 68 72 6f 77 61 62  message, throwab
4820: 6c 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69  le) {..        i
4830: 66 20 28 74 68 69 73 2e 69 73 57 61 72 6e 45 6e  f (this.isWarnEn
4840: 61 62 6c 65 64 28 29 29 20 7b 0d 0a 20 20 20 20  abled()) {..    
4850: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67          this.log
4860: 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 57 41  (Log4js.Level.WA
4870: 52 4e 2c 20 6d 65 73 73 61 67 65 2c 20 74 68 72  RN, message, thr
4880: 6f 77 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20  owable);..      
4890: 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20    }..    },..   
48a0: 20 2f 2a 2a 20 63 68 65 63 6b 73 20 69 66 20 4c   /** checks if L
48b0: 65 76 65 6c 20 45 72 72 6f 72 20 69 73 20 65 6e  evel Error is en
48c0: 61 62 6c 65 64 20 2a 2f 0d 0a 20 20 20 20 69 73  abled */..    is
48d0: 45 72 72 6f 72 45 6e 61 62 6c 65 64 3a 20 66 75  ErrorEnabled: fu
48e0: 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
48f0: 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 65 76      if (this.lev
4900: 65 6c 2e 76 61 6c 75 65 4f 66 28 29 20 3c 3d 20  el.valueOf() <= 
4910: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 45 52 52  Log4js.Level.ERR
4920: 4f 52 2e 76 61 6c 75 65 4f 66 28 29 29 20 7b 0d  OR.valueOf()) {.
4930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
4940: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
4950: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65     }..        re
4960: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
4970: 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 6c 6f 67   },..    /** log
4980: 67 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61  ging error messa
4990: 67 65 73 20 2a 2f 0d 0a 20 20 20 20 65 72 72 6f  ges */..    erro
49a0: 72 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 65 73 73  r: function(mess
49b0: 61 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  age) {..        
49c0: 69 66 20 28 74 68 69 73 2e 69 73 45 72 72 6f 72  if (this.isError
49d0: 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d 0a 20 20  Enabled()) {..  
49e0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
49f0: 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  og(Log4js.Level.
4a00: 45 52 52 4f 52 2c 20 6d 65 73 73 61 67 65 2c 20  ERROR, message, 
4a10: 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  null);..        
4a20: 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f  }..    },..    /
4a30: 2a 2a 20 6c 6f 67 67 69 6e 67 20 65 72 72 6f 72  ** logging error
4a40: 20 6d 65 73 73 61 67 65 73 20 2a 2f 0d 0a 20 20   messages */..  
4a50: 20 20 65 72 72 6f 72 3a 20 66 75 6e 63 74 69 6f    error: functio
4a60: 6e 28 6d 65 73 73 61 67 65 2c 20 74 68 72 6f 77  n(message, throw
4a70: 61 62 6c 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  able) {..       
4a80: 20 69 66 20 28 74 68 69 73 2e 69 73 45 72 72 6f   if (this.isErro
4a90: 72 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d 0a 20  rEnabled()) {.. 
4aa0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
4ab0: 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  log(Log4js.Level
4ac0: 2e 45 52 52 4f 52 2c 20 6d 65 73 73 61 67 65 2c  .ERROR, message,
4ad0: 20 74 68 72 6f 77 61 62 6c 65 29 3b 0d 0a 20 20   throwable);..  
4ae0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d        }..    },.
4af0: 0a 20 20 20 20 2f 2a 2a 20 63 68 65 63 6b 73 20  .    /** checks 
4b00: 69 66 20 4c 65 76 65 6c 20 46 61 74 61 6c 20 69  if Level Fatal i
4b10: 73 20 65 6e 61 62 6c 65 64 20 2a 2f 0d 0a 20 20  s enabled */..  
4b20: 20 20 69 73 46 61 74 61 6c 45 6e 61 62 6c 65 64    isFatalEnabled
4b30: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a  : function() {..
4b40: 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
4b50: 2e 6c 65 76 65 6c 2e 76 61 6c 75 65 4f 66 28 29  .level.valueOf()
4b60: 20 3c 3d 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c   <= Log4js.Level
4b70: 2e 46 41 54 41 4c 2e 76 61 6c 75 65 4f 66 28 29  .FATAL.valueOf()
4b80: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
4b90: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
4ba0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4bb0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
4bc0: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a  .    },..    /**
4bd0: 20 6c 6f 67 67 69 6e 67 20 66 61 74 61 6c 20 6d   logging fatal m
4be0: 65 73 73 61 67 65 73 20 2a 2f 0d 0a 20 20 20 20  essages */..    
4bf0: 66 61 74 61 6c 3a 20 66 75 6e 63 74 69 6f 6e 28  fatal: function(
4c00: 6d 65 73 73 61 67 65 29 20 7b 0d 0a 20 20 20 20  message) {..    
4c10: 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 46      if (this.isF
4c20: 61 74 61 6c 45 6e 61 62 6c 65 64 28 29 29 20 7b  atalEnabled()) {
4c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4c40: 69 73 2e 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65  is.log(Log4js.Le
4c50: 76 65 6c 2e 46 41 54 41 4c 2c 20 6d 65 73 73 61  vel.FATAL, messa
4c60: 67 65 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20  ge, null);..    
4c70: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20      }..    },.. 
4c80: 20 20 20 2f 2a 2a 20 6c 6f 67 67 69 6e 67 20 66     /** logging f
4c90: 61 74 61 6c 20 6d 65 73 73 61 67 65 73 20 2a 2f  atal messages */
4ca0: 0d 0a 20 20 20 20 66 61 74 61 6c 3a 20 66 75 6e  ..    fatal: fun
4cb0: 63 74 69 6f 6e 28 6d 65 73 73 61 67 65 2c 20 74  ction(message, t
4cc0: 68 72 6f 77 61 62 6c 65 29 20 7b 0d 0a 20 20 20  hrowable) {..   
4cd0: 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73       if (this.is
4ce0: 46 61 74 61 6c 45 6e 61 62 6c 65 64 28 29 29 20  FatalEnabled()) 
4cf0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
4d00: 68 69 73 2e 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c  his.log(Log4js.L
4d10: 65 76 65 6c 2e 46 41 54 41 4c 2c 20 6d 65 73 73  evel.FATAL, mess
4d20: 61 67 65 2c 20 74 68 72 6f 77 61 62 6c 65 29 3b  age, throwable);
4d30: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
4d40: 20 7d 2c 09 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a   },...    /** ..
4d50: 20 20 20 20 2a 20 43 61 70 74 75 72 65 20 6d 61      * Capture ma
4d60: 69 6e 20 77 69 6e 64 6f 77 20 65 72 72 6f 72 73  in window errors
4d70: 20 61 6e 64 20 6c 6f 67 20 61 73 20 66 61 74 61   and log as fata
4d80: 6c 2e 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61  l...    * @priva
4d90: 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  te..    */..    
4da0: 77 69 6e 64 6f 77 45 72 72 6f 72 3a 20 66 75 6e  windowError: fun
4db0: 63 74 69 6f 6e 28 6d 73 67 2c 20 75 72 6c 2c 20  ction(msg, url, 
4dc0: 6c 69 6e 65 29 7b 0d 0a 20 20 20 20 20 20 20 20  line){..        
4dd0: 76 61 72 20 6d 65 73 73 61 67 65 20 3d 20 22 45  var message = "E
4de0: 72 72 6f 72 20 69 6e 20 28 22 20 2b 20 28 75 72  rror in (" + (ur
4df0: 6c 20 7c 7c 20 77 69 6e 64 6f 77 2e 6c 6f 63 61  l || window.loca
4e00: 74 69 6f 6e 29 20 2b 20 22 29 20 6f 6e 20 6c 69  tion) + ") on li
4e10: 6e 65 20 22 2b 20 6c 69 6e 65 20 2b 22 20 77 69  ne "+ line +" wi
4e20: 74 68 20 6d 65 73 73 61 67 65 20 28 22 20 2b 20  th message (" + 
4e30: 6d 73 67 20 2b 20 22 29 22 3b 0d 0a 20 20 20 20  msg + ")";..    
4e40: 20 20 20 20 74 68 69 73 2e 6c 6f 67 28 4c 6f 67      this.log(Log
4e50: 34 6a 73 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 2c  4js.Level.FATAL,
4e60: 20 6d 65 73 73 61 67 65 2c 20 6e 75 6c 6c 29 3b   message, null);
4e70: 09 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d  ...    },..    .
4e80: 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
4e90: 53 65 74 20 74 68 65 20 64 61 74 65 20 66 6f 72  Set the date for
4ea0: 6d 61 74 20 6f 66 20 6c 6f 67 67 65 72 2e 20 46  mat of logger. F
4eb0: 6f 6c 6c 6f 77 69 6e 67 20 73 77 69 74 63 68 65  ollowing switche
4ec0: 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 3a  s are supported:
4ed0: 0d 0a 20 20 20 20 2a 20 3c 75 6c 3e 0d 0a 20 20  ..    * <ul>..  
4ee0: 20 20 2a 20 3c 6c 69 3e 79 79 79 79 20 2d 20 54    * <li>yyyy - T
4ef0: 68 65 20 79 65 61 72 3c 2f 6c 69 3e 0d 0a 20 20  he year</li>..  
4f00: 20 20 2a 20 3c 6c 69 3e 4d 4d 20 2d 20 74 68 65    * <li>MM - the
4f10: 20 6d 6f 6e 74 68 3c 2f 6c 69 3e 0d 0a 20 20 20   month</li>..   
4f20: 20 2a 20 3c 6c 69 3e 64 64 20 2d 20 74 68 65 20   * <li>dd - the 
4f30: 64 61 79 20 6f 66 20 6d 6f 6e 74 68 3c 6c 69 3e  day of month<li>
4f40: 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e 68 68 20 2d  ..    * <li>hh -
4f50: 20 74 68 65 20 68 6f 75 72 3c 6c 69 3e 0d 0a 20   the hour<li>.. 
4f60: 20 20 20 2a 20 3c 6c 69 3e 6d 6d 20 2d 20 6d 69     * <li>mm - mi
4f70: 6e 75 74 65 73 3c 2f 6c 69 3e 0d 0a 20 20 20 20  nutes</li>..    
4f80: 2a 20 3c 6c 69 3e 4f 20 2d 20 74 69 6d 65 7a 6f  * <li>O - timezo
4f90: 6e 65 20 6f 66 66 73 65 74 3c 2f 6c 69 3e 0d 0a  ne offset</li>..
4fa0: 20 20 20 20 2a 20 3c 2f 75 6c 3e 0d 0a 20 20 20      * </ul>..   
4fb0: 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e   * @param {Strin
4fc0: 67 7d 20 66 6f 72 6d 61 74 20 66 6f 72 6d 61 74  g} format format
4fd0: 20 53 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20   String for the 
4fe0: 64 61 74 65 0d 0a 20 20 20 20 2a 20 40 73 65 65  date..    * @see
4ff0: 20 23 67 65 74 54 69 6d 65 73 74 61 6d 70 0d 0a   #getTimestamp..
5000: 20 20 20 20 2a 2f 0d 0a 20 20 20 20 73 65 74 44      */..    setD
5010: 61 74 65 46 6f 72 6d 61 74 3a 20 66 75 6e 63 74  ateFormat: funct
5020: 69 6f 6e 28 66 6f 72 6d 61 74 29 20 7b 0d 0a 20  ion(format) {.. 
5030: 20 20 20 20 20 20 20 74 68 69 73 2e 64 61 74 65         this.date
5040: 66 6f 72 6d 61 74 20 3d 20 66 6f 72 6d 61 74 3b  format = format;
5050: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a  ..    },..    ..
5060: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 47      /**..    * G
5070: 65 6e 65 72 61 74 65 73 20 61 20 74 69 6d 65 73  enerates a times
5080: 74 61 6d 70 20 75 73 69 6e 67 20 74 68 65 20 66  tamp using the f
5090: 6f 72 6d 61 74 20 73 65 74 20 69 6e 20 7b 4c 6f  ormat set in {Lo
50a0: 67 34 6a 73 2e 73 65 74 44 61 74 65 46 6f 72 6d  g4js.setDateForm
50b0: 61 74 7d 2e 0d 0a 20 20 20 20 2a 20 40 70 61 72  at}...    * @par
50c0: 61 6d 20 7b 44 61 74 65 7d 20 64 61 74 65 20 74  am {Date} date t
50d0: 68 65 20 64 61 74 65 20 74 6f 20 66 6f 72 6d 61  he date to forma
50e0: 74 0d 0a 20 20 20 20 2a 20 40 73 65 65 20 23 73  t..    * @see #s
50f0: 65 74 44 61 74 65 46 6f 72 6d 61 74 0d 0a 20 20  etDateFormat..  
5100: 20 20 2a 20 40 72 65 74 75 72 6e 20 41 20 66 6f    * @return A fo
5110: 72 6d 61 74 74 65 64 20 74 69 6d 65 73 74 61 6d  rmatted timestam
5120: 70 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65  p with the curre
5130: 6e 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  nt date and time
5140: 2e 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67  ...    */..    g
5150: 65 74 46 6f 72 6d 61 74 74 65 64 54 69 6d 65 73  etFormattedTimes
5160: 74 61 6d 70 3a 20 66 75 6e 63 74 69 6f 6e 28 64  tamp: function(d
5170: 61 74 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ate) {..        
5180: 72 65 74 75 72 6e 20 74 68 69 73 2e 64 61 74 65  return this.date
5190: 66 6f 72 6d 61 74 74 65 72 2e 66 6f 72 6d 61 74  formatter.format
51a0: 44 61 74 65 28 64 61 74 65 2c 20 74 68 69 73 2e  Date(date, this.
51b0: 64 61 74 65 66 6f 72 6d 61 74 29 3b 0d 0a 20 20  dateformat);..  
51c0: 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a    }..};..../**..
51d0: 2a 20 41 62 73 74 72 61 63 74 20 62 61 73 65 20  * Abstract base 
51e0: 63 6c 61 73 73 20 66 6f 72 20 6f 74 68 65 72 20  class for other 
51f0: 61 70 70 65 6e 64 65 72 73 2e 20 0d 0a 2a 20 49  appenders. ..* I
5200: 74 20 69 73 20 64 6f 69 6e 67 20 6e 6f 74 68 69  t is doing nothi
5210: 6e 67 2e 0d 0a 2a 0d 0a 2a 20 40 63 6f 6e 73 74  ng...*..* @const
5220: 72 75 63 74 6f 72 0d 0a 2a 20 40 70 61 72 61 6d  ructor..* @param
5230: 20 7b 4c 6f 67 34 6a 73 2e 4c 6f 67 67 65 72 7d   {Log4js.Logger}
5240: 20 6c 6f 67 67 65 72 20 6c 6f 67 34 6a 73 20 69   logger log4js i
5250: 6e 73 74 61 6e 63 65 20 74 68 69 73 20 61 70 70  nstance this app
5260: 65 6e 64 65 72 20 69 73 20 61 74 74 61 63 68 65  ender is attache
5270: 64 20 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20  d to..* @author 
5280: 53 74 65 70 68 61 6e 20 53 74 72 69 74 74 6d 61  Stephan Strittma
5290: 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73  tter..*/..Log4js
52a0: 2e 41 70 70 65 6e 64 65 72 20 3d 20 66 75 6e 63  .Appender = func
52b0: 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 2f  tion () {..    /
52c0: 2a 2a 0d 0a 20 20 20 20 2a 20 52 65 66 65 72 65  **..    * Refere
52d0: 6e 63 65 20 74 6f 20 63 61 6c 6c 69 6e 67 20 6c  nce to calling l
52e0: 6f 67 67 65 72 0d 0a 20 20 20 20 2a 20 40 74 79  ogger..    * @ty
52f0: 70 65 20 4c 6f 67 34 6a 73 2e 4c 6f 67 67 65 72  pe Log4js.Logger
5300: 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65  ..    * @private
5310: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68  ..    */..    th
5320: 69 73 2e 6c 6f 67 67 65 72 20 3d 20 6e 75 6c 6c  is.logger = null
5330: 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e  ;..};....Log4js.
5340: 41 70 70 65 6e 64 65 72 2e 70 72 6f 74 6f 74 79  Appender.prototy
5350: 70 65 20 3d 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20  pe = {..    /** 
5360: 0d 0a 20 20 20 20 2a 20 61 70 70 65 6e 64 73 20  ..    * appends 
5370: 74 68 65 20 67 69 76 65 6e 20 6c 6f 67 67 69 6e  the given loggin
5380: 67 45 76 65 6e 74 20 61 70 70 65 6e 64 65 72 20  gEvent appender 
5390: 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20 2a 20  specific..    * 
53a0: 40 70 61 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c  @param {Log4js.L
53b0: 6f 67 67 69 6e 67 45 76 65 6e 74 7d 20 6c 6f 67  oggingEvent} log
53c0: 67 69 6e 67 45 76 65 6e 74 20 6c 6f 67 67 69 6e  gingEvent loggin
53d0: 67 45 76 65 6e 74 20 74 6f 20 61 70 70 65 6e 64  gEvent to append
53e0: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f  ..    */..    do
53f0: 41 70 70 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e  Append: function
5400: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b  (loggingEvent) {
5410: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
5420: 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f  ;..    },..    /
5430: 2a 2a 20 0d 0a 20 20 20 20 2a 20 63 6c 65 61 72  ** ..    * clear
5440: 73 20 74 68 65 20 41 70 70 65 6e 64 65 72 0d 0a  s the Appender..
5450: 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f 43 6c      */..    doCl
5460: 65 61 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  ear: function() 
5470: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
5480: 6e 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  n;..    },..    
5490: 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a  ..    /**..    *
54a0: 20 53 65 74 20 74 68 65 20 4c 61 79 6f 75 74 20   Set the Layout 
54b0: 66 6f 72 20 74 68 69 73 20 61 70 70 65 6e 64 65  for this appende
54c0: 72 2e 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d  r...    * @param
54d0: 20 7b 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 7d   {Log4js.Layout}
54e0: 20 6c 61 79 6f 75 74 20 4c 61 79 6f 75 74 20 66   layout Layout f
54f0: 6f 72 20 66 6f 72 6d 61 74 74 69 6e 67 20 6c 6f  or formatting lo
5500: 67 67 69 6e 67 45 76 65 6e 74 0d 0a 20 20 20 20  ggingEvent..    
5510: 2a 2f 0d 0a 20 20 20 20 73 65 74 4c 61 79 6f 75  */..    setLayou
5520: 74 3a 20 66 75 6e 63 74 69 6f 6e 28 6c 61 79 6f  t: function(layo
5530: 75 74 29 7b 0d 0a 20 20 20 20 20 20 20 20 74 68  ut){..        th
5540: 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6c 61 79 6f  is.layout = layo
5550: 75 74 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  ut;..    },..   
5560: 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 53 65 74 20   /**..    * Set 
5570: 72 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65  reference to the
5580: 20 6c 6f 67 67 65 72 2e 0d 0a 20 20 20 20 2a 20   logger...    * 
5590: 40 70 61 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c  @param {Log4js.L
55a0: 6f 67 67 65 72 7d 20 74 68 65 20 69 6e 76 6f 6b  ogger} the invok
55b0: 69 6e 67 20 6c 6f 67 67 65 72 0d 0a 20 20 20 20  ing logger..    
55c0: 2a 2f 0d 0a 20 20 20 20 73 65 74 4c 6f 67 67 65  */..    setLogge
55d0: 72 3a 20 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 67  r: function(logg
55e0: 65 72 29 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er){..        //
55f0: 20 61 64 64 20 6c 69 73 74 65 6e 65 72 20 74 6f   add listener to
5600: 20 74 68 65 20 6c 6f 67 67 65 72 20 6d 65 74 68   the logger meth
5610: 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67  ods..        log
5620: 67 65 72 2e 6f 6e 6c 6f 67 2e 61 64 64 4c 69 73  ger.onlog.addLis
5630: 74 65 6e 65 72 28 4c 6f 67 34 6a 73 2e 62 69 6e  tener(Log4js.bin
5640: 64 28 74 68 69 73 2e 64 6f 41 70 70 65 6e 64 2c  d(this.doAppend,
5650: 20 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 20 20   this));..      
5660: 20 20 6c 6f 67 67 65 72 2e 6f 6e 63 6c 65 61 72    logger.onclear
5670: 2e 61 64 64 4c 69 73 74 65 6e 65 72 28 4c 6f 67  .addListener(Log
5680: 34 6a 73 2e 62 69 6e 64 28 74 68 69 73 2e 64 6f  4js.bind(this.do
5690: 43 6c 65 61 72 2c 20 74 68 69 73 29 29 3b 0d 0a  Clear, this));..
56a0: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 74 68      ..        th
56b0: 69 73 2e 6c 6f 67 67 65 72 20 3d 20 6c 6f 67 67  is.logger = logg
56c0: 65 72 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a  er;..    }..};..
56d0: 0d 0a 2f 2a 2a 0d 0a 2a 20 49 6e 74 65 72 66 61  ../**..* Interfa
56e0: 63 65 20 66 6f 72 20 4c 61 79 6f 75 74 73 2e 0d  ce for Layouts..
56f0: 0a 2a 20 55 73 65 20 74 68 69 73 20 4c 61 79 6f  .* Use this Layo
5700: 75 74 20 61 73 20 22 69 6e 74 65 72 66 61 63 65  ut as "interface
5710: 22 20 66 6f 72 20 6f 74 68 65 72 20 4c 61 79 6f  " for other Layo
5720: 75 74 73 2e 20 49 74 20 69 73 20 64 6f 69 6e 67  uts. It is doing
5730: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 2a 0d 0a 2a 20   nothing...*..* 
5740: 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20  @constructor..* 
5750: 40 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20  @author Stephan 
5760: 53 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f  Strittmatter..*/
5770: 0d 0a 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 20  ..Log4js.Layout 
5780: 3d 20 66 75 6e 63 74 69 6f 6e 28 29 7b 72 65 74  = function(){ret
5790: 75 72 6e 3b 7d 3b 0d 0a 4c 6f 67 34 6a 73 2e 4c  urn;};..Log4js.L
57a0: 61 79 6f 75 74 2e 70 72 6f 74 6f 74 79 70 65 20  ayout.prototype 
57b0: 3d 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20  = {..    /** .. 
57c0: 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 20 74     * Implement t
57d0: 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20 63 72  his method to cr
57e0: 65 61 74 65 20 79 6f 75 72 20 6f 77 6e 20 6c 61  eate your own la
57f0: 79 6f 75 74 20 66 6f 72 6d 61 74 2e 0d 0a 20 20  yout format...  
5800: 20 20 2a 20 40 70 61 72 61 6d 20 7b 4c 6f 67 34    * @param {Log4
5810: 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65 6e 74 7d  js.LoggingEvent}
5820: 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 6c 6f   loggingEvent lo
5830: 67 67 69 6e 67 45 76 65 6e 74 20 74 6f 20 66 6f  ggingEvent to fo
5840: 72 6d 61 74 0d 0a 20 20 20 20 2a 20 40 72 65 74  rmat..    * @ret
5850: 75 72 6e 20 66 6f 72 6d 61 74 74 65 64 20 53 74  urn formatted St
5860: 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74 79 70  ring..    * @typ
5870: 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f  e String..    */
5880: 0d 0a 20 20 20 20 66 6f 72 6d 61 74 3a 20 66 75  ..    format: fu
5890: 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76  nction(loggingEv
58a0: 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ent) {..        
58b0: 72 65 74 75 72 6e 20 22 22 3b 0d 0a 20 20 20 20  return "";..    
58c0: 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20  },..    /** ..  
58d0: 20 20 2a 20 52 65 74 75 72 6e 73 20 74 68 65 20    * Returns the 
58e0: 63 6f 6e 74 65 6e 74 20 74 79 70 65 20 6f 75 74  content type out
58f0: 70 75 74 20 62 79 20 74 68 69 73 20 6c 61 79 6f  put by this layo
5900: 75 74 2e 20 0d 0a 20 20 20 20 2a 20 40 72 65 74  ut. ..    * @ret
5910: 75 72 6e 20 54 68 65 20 62 61 73 65 20 63 6c 61  urn The base cla
5920: 73 73 20 72 65 74 75 72 6e 73 20 22 74 65 78 74  ss returns "text
5930: 2f 70 6c 61 69 6e 22 2e 0d 0a 20 20 20 20 2a 20  /plain"...    * 
5940: 40 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20  @type String..  
5950: 20 20 2a 2f 0d 0a 20 20 20 20 67 65 74 43 6f 6e    */..    getCon
5960: 74 65 6e 74 54 79 70 65 3a 20 66 75 6e 63 74 69  tentType: functi
5970: 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  on() {..        
5980: 72 65 74 75 72 6e 20 22 74 65 78 74 2f 70 6c 61  return "text/pla
5990: 69 6e 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20  in";..    },..  
59a0: 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40 72    /** ..    * @r
59b0: 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20 74 68  eturn Returns th
59c0: 65 20 68 65 61 64 65 72 20 66 6f 72 20 74 68 65  e header for the
59d0: 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 20   layout format. 
59e0: 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 72  The base class r
59f0: 65 74 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20 20  eturns null...  
5a00: 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e 67    * @type String
5a10: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67 65  ..    */..    ge
5a20: 74 48 65 61 64 65 72 3a 20 66 75 6e 63 74 69 6f  tHeader: functio
5a30: 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  n() {..        r
5a40: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
5a50: 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20   },..    /** .. 
5a60: 20 20 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74     * @return Ret
5a70: 75 72 6e 73 20 74 68 65 20 66 6f 6f 74 65 72 20  urns the footer 
5a80: 66 6f 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66  for the layout f
5a90: 6f 72 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20  ormat. The base 
5aa0: 63 6c 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75  class returns nu
5ab0: 6c 6c 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65  ll...    * @type
5ac0: 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d   String..    */.
5ad0: 0a 20 20 20 20 67 65 74 46 6f 6f 74 65 72 3a 20  .    getFooter: 
5ae0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
5af0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
5b00: 6c 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  l;..    },..    
5b10: 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a  ..    /**..    *
5b20: 20 40 72 65 74 75 72 6e 20 53 65 70 61 72 61 74   @return Separat
5b30: 6f 72 20 62 65 74 77 65 65 6e 20 65 76 65 6e 74  or between event
5b40: 73 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53  s..    * @type S
5b50: 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20  tring..    */.. 
5b60: 20 20 20 67 65 74 53 65 70 61 72 61 74 6f 72 3a     getSeparator:
5b70: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
5b80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 22         return ""
5b90: 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a  ;..    }..};....
5ba0: 2f 2a 2a 0d 0a 2a 20 43 6f 6e 73 6f 6c 65 20 41  /**..* Console A
5bb0: 70 70 65 6e 64 65 72 20 77 72 69 74 65 73 20 74  ppender writes t
5bc0: 68 65 20 6c 6f 67 73 20 74 6f 20 61 20 63 6f 6e  he logs to a con
5bd0: 73 6f 6c 65 2e 20 20 49 66 20 22 69 6e 6c 69 6e  sole.  If "inlin
5be0: 65 22 20 69 73 0d 0a 2a 20 73 65 74 20 74 6f 20  e" is..* set to 
5bf0: 22 66 61 6c 73 65 22 20 74 68 65 20 63 6f 6e 73  "false" the cons
5c00: 6f 6c 65 20 6c 61 75 6e 63 68 65 73 20 69 6e 20  ole launches in 
5c10: 61 6e 6f 74 68 65 72 20 77 69 6e 64 6f 77 20 6f  another window o
5c20: 74 68 65 72 77 69 73 65 0d 0a 2a 20 74 68 65 20  therwise..* the 
5c30: 77 69 6e 64 6f 77 20 69 73 20 69 6e 6c 69 6e 65  window is inline
5c40: 20 6f 6e 20 74 68 65 20 70 61 67 65 20 61 6e 64   on the page and
5c50: 20 74 6f 67 67 6c 65 64 20 6f 6e 20 61 6e 64 20   toggled on and 
5c60: 6f 66 66 20 77 69 74 68 20 22 41 6c 74 2d 44 22  off with "Alt-D"
5c70: 2e 0d 0a 2a 20 4e 6f 74 65 3a 20 41 74 20 46 69  ...* Note: At Fi
5c80: 72 65 46 6f 78 20 26 67 62 3b 20 32 2e 30 20 74  reFox &gb; 2.0 t
5c90: 68 65 20 6b 65 79 73 74 72 6f 6b 65 20 69 73 20  he keystroke is 
5ca0: 6c 69 74 74 6c 65 20 64 69 66 66 65 72 65 6e 74  little different
5cb0: 20 6e 6f 77 3a 20 22 53 48 49 46 54 2b 41 4c 54   now: "SHIFT+ALT
5cc0: 2b 44 22 2e 0d 0a 2a 0d 0a 2a 20 40 63 6f 6e 73  +D"...*..* @cons
5cd0: 74 72 75 63 74 6f 72 0d 0a 2a 20 40 65 78 74 65  tructor..* @exte
5ce0: 6e 64 73 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e  nds Log4js.Appen
5cf0: 64 65 72 0d 0a 2a 20 40 70 61 72 61 6d 20 7b 62  der..* @param {b
5d00: 6f 6f 6c 65 61 6e 7d 20 69 73 49 6e 6c 69 6e 65  oolean} isInline
5d10: 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 20 74   boolean value t
5d20: 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 77 68  hat indicates wh
5d30: 65 74 68 65 72 20 74 68 65 20 63 6f 6e 73 6f 6c  ether the consol
5d40: 65 20 62 65 20 70 6c 61 63 65 64 20 69 6e 6c 69  e be placed inli
5d50: 6e 65 2c 20 64 65 66 61 75 6c 74 20 69 73 20 74  ne, default is t
5d60: 6f 20 6c 61 75 6e 63 68 20 69 6e 20 6e 65 77 20  o launch in new 
5d70: 77 69 6e 64 6f 77 0d 0a 2a 0d 0a 2a 20 40 61 75  window..*..* @au
5d80: 74 68 6f 72 20 43 6f 72 65 79 20 4a 6f 68 6e 73  thor Corey Johns
5d90: 6f 6e 20 2d 20 6f 72 69 67 69 6e 61 6c 20 63 6f  on - original co
5da0: 6e 73 6f 6c 65 20 63 6f 64 65 20 69 6e 20 4c 75  nsole code in Lu
5db0: 6d 62 65 72 6a 61 63 6b 20 28 68 74 74 70 3a 2f  mberjack (http:/
5dc0: 2f 67 6c 65 65 70 67 6c 6f 70 2e 63 6f 6d 2f 6a  /gleepglop.com/j
5dd0: 61 76 61 73 63 72 69 70 74 73 2f 6c 6f 67 67 65  avascripts/logge
5de0: 72 2f 29 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53  r/)..* @author S
5df0: 65 74 68 20 43 68 69 73 61 6d 6f 72 65 20 2d 20  eth Chisamore - 
5e00: 61 64 61 70 74 65 64 20 66 6f 72 20 75 73 65 20  adapted for use 
5e10: 61 73 20 61 20 6c 6f 67 34 6a 73 20 61 70 70 65  as a log4js appe
5e20: 6e 64 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73  nder..*/..Log4js
5e30: 2e 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72  .ConsoleAppender
5e40: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 69 73 49 6e   = function(isIn
5e50: 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 0d 0a 20  line) {..    .. 
5e60: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 74     /**..    * @t
5e70: 79 70 65 20 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75  ype Log4js.Layou
5e80: 74 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74  t..    * @privat
5e90: 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74  e..    */..    t
5ea0: 68 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e 65 77  his.layout = new
5eb0: 20 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c   Log4js.PatternL
5ec0: 61 79 6f 75 74 28 4c 6f 67 34 6a 73 2e 50 61 74  ayout(Log4js.Pat
5ed0: 74 65 72 6e 4c 61 79 6f 75 74 2e 54 54 43 43 5f  ternLayout.TTCC_
5ee0: 43 4f 4e 56 45 52 53 49 4f 4e 5f 50 41 54 54 45  CONVERSION_PATTE
5ef0: 52 4e 29 3b 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20  RN);..    /**.. 
5f00: 20 20 20 2a 20 40 74 79 70 65 20 62 6f 6f 6c 65     * @type boole
5f10: 61 6e 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61  an..    * @priva
5f20: 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  te..    */..    
5f30: 74 68 69 73 2e 69 6e 6c 69 6e 65 20 3d 20 69 73  this.inline = is
5f40: 49 6e 6c 69 6e 65 3b 0d 0a 0d 0a 20 20 20 20 2f  Inline;....    /
5f50: 2a 2a 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  **..    * @type 
5f60: 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 70  String..    * @p
5f70: 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a  rivate..    */..
5f80: 20 20 20 20 74 68 69 73 2e 61 63 63 65 73 73 6b      this.accessk
5f90: 65 79 20 3d 20 22 64 22 3b 0d 0a 20 20 20 20 0d  ey = "d";..    .
5fa0: 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
5fb0: 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f  @private..    */
5fc0: 0d 0a 20 20 20 20 74 68 69 73 2e 74 61 67 50 61  ..    this.tagPa
5fd0: 74 74 65 72 6e 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  ttern = null;.. 
5fe0: 20 20 20 0d 0a 20 20 20 20 74 68 69 73 2e 63 6f     ..    this.co
5ff0: 6d 6d 61 6e 64 48 69 73 74 6f 72 79 20 3d 20 5b  mmandHistory = [
6000: 5d 3b 0d 0a 20 20 20 20 74 68 69 73 2e 63 6f 6d  ];..    this.com
6010: 6d 61 6e 64 49 6e 64 65 78 20 3d 20 30 3b 0d 0a  mandIndex = 0;..
6020: 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20      ..    /**.. 
6030: 20 20 20 2a 20 74 72 75 65 20 69 66 20 70 6f 70     * true if pop
6040: 75 70 20 69 73 20 62 6c 6f 63 6b 65 64 2e 0d 0a  up is blocked...
6050: 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73      */..    this
6060: 2e 70 6f 70 75 70 42 6c 6f 63 6b 65 72 20 3d 20  .popupBlocker = 
6070: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 0d 0a 20 20  false;..    ..  
6080: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 63 75 72    /**..    * cur
6090: 72 65 6e 74 20 6f 75 74 70 75 74 20 64 69 76 2d  rent output div-
60a0: 65 6c 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 2a 2f  element...    */
60b0: 0d 0a 20 20 20 20 74 68 69 73 2e 6f 75 74 70 75  ..    this.outpu
60c0: 74 45 6c 65 6d 65 6e 74 20 3d 20 6e 75 6c 6c 3b  tElement = null;
60d0: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 74 68 69 73  ..    ..    this
60e0: 2e 64 6f 63 52 65 66 65 72 65 6e 63 65 20 3d 20  .docReference = 
60f0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 74 68 69 73 2e  null;..    this.
6100: 77 69 6e 52 65 66 65 72 65 6e 63 65 20 3d 20 6e  winReference = n
6110: 75 6c 6c 3b 09 09 0d 0a 20 20 20 20 20 20 20 20  ull;....        
6120: 0d 0a 20 20 20 20 69 66 28 74 68 69 73 2e 69 6e  ..    if(this.in
6130: 6c 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  line) {..       
6140: 20 4c 6f 67 34 6a 73 2e 61 74 74 61 63 68 45 76   Log4js.attachEv
6150: 65 6e 74 28 77 69 6e 64 6f 77 2c 20 27 6c 6f 61  ent(window, 'loa
6160: 64 27 2c 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28  d', Log4js.bind(
6170: 74 68 69 73 2e 69 6e 69 74 69 61 6c 69 7a 65 2c  this.initialize,
6180: 20 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 7d 0d   this));..    }.
6190: 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 43 6f  .};....Log4js.Co
61a0: 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 2e 70 72  nsoleAppender.pr
61b0: 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a 73  ototype = Log4js
61c0: 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67 34  .extend(new Log4
61d0: 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c 20 7b  js.Appender(), {
61e0: 20 20 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20    ....    /**.. 
61f0: 20 20 20 2a 20 53 65 74 20 74 68 65 20 61 63 63     * Set the acc
6200: 65 73 73 20 6b 65 79 20 74 6f 20 73 68 6f 77 2f  ess key to show/
6210: 68 69 64 65 20 74 68 65 20 69 6e 6c 69 6e 65 20  hide the inline 
6220: 63 6f 6e 73 6f 6c 65 20 28 64 65 66 61 75 6c 74  console (default
6230: 20 26 71 75 6f 74 65 3b 64 26 71 75 6f 74 65 3b   &quote;d&quote;
6240: 29 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20  )..    * @param 
6250: 6b 65 79 20 61 63 63 65 73 73 20 6b 65 79 20 74  key access key t
6260: 6f 20 73 68 6f 77 2f 68 69 64 65 20 74 68 65 20  o show/hide the 
6270: 69 6e 6c 69 6e 65 20 63 6f 6e 73 6f 6c 65 0d 0a  inline console..
6280: 20 20 20 20 2a 2f 09 0d 0a 20 20 20 20 73 65 74      */...    set
6290: 41 63 63 65 73 73 4b 65 79 20 3a 20 66 75 6e 63  AccessKey : func
62a0: 74 69 6f 6e 28 6b 65 79 29 20 7b 0d 0a 20 20 20  tion(key) {..   
62b0: 20 20 20 20 20 74 68 69 73 2e 61 63 63 65 73 73       this.access
62c0: 6b 65 79 20 3d 20 6b 65 79 3b 0d 0a 20 20 20 20  key = key;..    
62d0: 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a  },..    ..    /*
62e0: 2a 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74  *..    * @privat
62f0: 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 69  e..    */..    i
6300: 6e 69 74 69 61 6c 69 7a 65 20 3a 20 66 75 6e 63  nitialize : func
6310: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20  tion() {..      
6320: 20 20 0d 0a 20 20 20 20 20 20 20 20 69 66 28 21    ..        if(!
6330: 74 68 69 73 2e 69 6e 6c 69 6e 65 29 20 7b 0d 0a  this.inline) {..
6340: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
6350: 64 6f 63 20 3d 20 6e 75 6c 6c 3b 09 0d 0a 20 20  doc = null;...  
6360: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 77 69            var wi
6370: 6e 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  n = null;..     
6380: 20 20 20 20 20 20 20 77 69 6e 64 6f 77 2e 74 6f         window.to
6390: 70 2e 63 6f 6e 73 6f 6c 65 57 69 6e 64 6f 77 20  p.consoleWindow 
63a0: 3d 20 77 69 6e 64 6f 77 2e 6f 70 65 6e 28 22 22  = window.open(""
63b0: 2c 20 74 68 69 73 2e 6c 6f 67 67 65 72 2e 63 61  , this.logger.ca
63c0: 74 65 67 6f 72 79 2c 20 0d 0a 20 20 20 20 20 20  tegory, ..      
63d0: 20 20 20 20 20 20 20 20 20 20 22 6c 65 66 74 3d            "left=
63e0: 30 2c 74 6f 70 3d 30 2c 77 69 64 74 68 3d 37 30  0,top=0,width=70
63f0: 30 2c 68 65 69 67 68 74 3d 37 30 30 2c 73 63 72  0,height=700,scr
6400: 6f 6c 6c 62 61 72 73 3d 6e 6f 2c 73 74 61 74 75  ollbars=no,statu
6410: 73 3d 6e 6f 2c 72 65 73 69 7a 61 62 6c 65 3d 79  s=no,resizable=y
6420: 65 73 3b 74 6f 6f 6c 62 61 72 3d 6e 6f 22 29 3b  es;toolbar=no");
6430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 69  ..            wi
6440: 6e 64 6f 77 2e 74 6f 70 2e 63 6f 6e 73 6f 6c 65  ndow.top.console
6450: 57 69 6e 64 6f 77 2e 6f 70 65 6e 65 72 20 3d 20  Window.opener = 
6460: 73 65 6c 66 3b 0d 0a 20 20 20 20 20 20 20 20 20  self;..         
6470: 20 20 20 77 69 6e 20 3d 20 77 69 6e 64 6f 77 2e     win = window.
6480: 74 6f 70 2e 63 6f 6e 73 6f 6c 65 57 69 6e 64 6f  top.consoleWindo
6490: 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w;..            
64a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64b0: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20      ..          
64c0: 20 20 69 66 20 28 21 77 69 6e 29 20 7b 20 0d 0a    if (!win) { ..
64d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64e0: 74 68 69 73 2e 70 6f 70 75 70 42 6c 6f 63 6b 65  this.popupBlocke
64f0: 72 3d 74 72 75 65 3b 20 0d 0a 20 20 20 20 20 20  r=true; ..      
6500: 20 20 20 20 20 20 20 20 20 20 61 6c 65 72 74 28            alert(
6510: 22 50 6f 70 75 70 20 77 69 6e 64 6f 77 20 6d 61  "Popup window ma
6520: 6e 61 67 65 72 20 62 6c 6f 63 6b 69 6e 67 20 74  nager blocking t
6530: 68 65 20 4c 6f 67 34 6a 73 20 70 6f 70 75 70 20  he Log4js popup 
6540: 77 69 6e 64 6f 77 20 74 6f 20 62 65 64 69 73 70  window to bedisp
6550: 6c 61 79 65 64 2e 5c 6e 5c 6e 22 20 0d 0a 20 20  layed.\n\n" ..  
6560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6570: 20 20 2b 20 22 50 6c 65 61 73 65 20 64 69 73 61    + "Please disa
6580: 62 6c 65 64 20 74 68 69 73 20 74 6f 20 70 72 6f  bled this to pro
6590: 70 65 72 6c 79 20 73 65 65 20 6c 6f 67 67 65 64  perly see logged
65a0: 20 65 76 65 6e 74 73 2e 22 29 3b 20 20 0d 0a 20   events.");  .. 
65b0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
65c0: 65 20 7b 09 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e {.....        
65d0: 20 20 20 20 20 20 20 20 64 6f 63 20 3d 20 77 69          doc = wi
65e0: 6e 2e 64 6f 63 75 6d 65 6e 74 3b 0d 0a 20 20 20  n.document;..   
65f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63               doc
6600: 2e 6f 70 65 6e 28 29 3b 0d 0a 20 20 20 20 20 20  .open();..      
6610: 20 20 20 20 20 20 20 20 20 20 64 6f 63 2e 77 72            doc.wr
6620: 69 74 65 28 22 3c 21 44 4f 43 54 59 50 45 20 68  ite("<!DOCTYPE h
6630: 74 6d 6c 20 50 55 42 4c 49 43 20 2d 2f 2f 57 33  tml PUBLIC -//W3
6640: 43 2f 2f 44 54 44 20 58 48 54 4d 4c 20 31 2e 30  C//DTD XHTML 1.0
6650: 20 54 72 61 6e 73 69 74 69 6f 6e 61 6c 2f 2f 45   Transitional//E
6660: 4e 20 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  N ");..         
6670: 20 20 20 20 20 20 20 64 6f 63 2e 77 72 69 74 65         doc.write
6680: 28 22 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e 77  ("  http://www.w
6690: 33 2e 6f 72 67 2f 54 52 2f 78 68 74 6d 6c 31 2f  3.org/TR/xhtml1/
66a0: 44 54 44 2f 78 68 74 6d 6c 31 2d 74 72 61 6e 73  DTD/xhtml1-trans
66b0: 69 74 69 6f 6e 61 6c 2e 64 74 64 3e 5c 6e 5c 6e  itional.dtd>\n\n
66c0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
66d0: 20 20 20 20 20 64 6f 63 2e 77 72 69 74 65 28 22       doc.write("
66e0: 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c 74 69 74  <html><head><tit
66f0: 6c 65 3e 4c 6f 67 34 6a 73 20 2d 20 22 20 2b 20  le>Log4js - " + 
6700: 74 68 69 73 2e 6c 6f 67 67 65 72 2e 63 61 74 65  this.logger.cate
6710: 67 6f 72 79 20 2b 20 22 3c 2f 74 69 74 6c 65 3e  gory + "</title>
6720: 5c 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  \n");..         
6730: 20 20 20 20 20 20 20 64 6f 63 2e 77 72 69 74 65         doc.write
6740: 28 22 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 20 73  ("</head><body s
6750: 74 79 6c 65 3d 5c 22 62 61 63 6b 67 72 6f 75 6e  tyle=\"backgroun
6760: 64 2d 63 6f 6c 6f 72 3a 64 61 72 6b 67 72 61 79  d-color:darkgray
6770: 5c 22 3e 3c 2f 62 6f 64 79 3e 5c 6e 22 29 3b 0d  \"></body>\n");.
6780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6790: 20 77 69 6e 2e 62 6c 75 72 28 29 3b 0d 0a 20 20   win.blur();..  
67a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69                wi
67b0: 6e 2e 66 6f 63 75 73 28 29 3b 0d 0a 20 20 20 20  n.focus();..    
67c0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
67d0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
67e0: 20 20 20 20 20 74 68 69 73 2e 64 6f 63 52 65 66       this.docRef
67f0: 65 72 65 6e 63 65 20 3d 20 64 6f 63 3b 0d 0a 20  erence = doc;.. 
6800: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
6810: 77 69 6e 52 65 66 65 72 65 6e 63 65 20 3d 20 77  winReference = w
6820: 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65  in;..        } e
6830: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
6840: 20 20 20 74 68 69 73 2e 64 6f 63 52 65 66 65 72     this.docRefer
6850: 65 6e 63 65 20 3d 20 64 6f 63 75 6d 65 6e 74 3b  ence = document;
6860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
6870: 69 73 2e 77 69 6e 52 65 66 65 72 65 6e 63 65 20  is.winReference 
6880: 3d 20 77 69 6e 64 6f 77 3b 09 09 09 0d 0a 20 20  = window;.....  
6890: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
68a0: 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20           ..     
68b0: 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74 43 6f     this.outputCo
68c0: 75 6e 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20  unt = 0;..      
68d0: 20 20 74 68 69 73 2e 74 61 67 50 61 74 74 65 72    this.tagPatter
68e0: 6e 20 3d 20 22 2e 2a 22 3b 0d 0a 20 20 20 20 20  n = ".*";..     
68f0: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20     ..        // 
6900: 49 20 68 61 74 65 20 77 72 69 74 69 6e 67 20 6a  I hate writing j
6910: 61 76 61 73 63 72 69 70 74 20 69 6e 20 48 54 4d  avascript in HTM
6920: 4c 2e 2e 2e 20 62 75 74 20 77 68 61 74 27 73 20  L... but what's 
6930: 61 20 62 65 74 74 65 72 20 61 6c 74 65 72 6e 61  a better alterna
6940: 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 74 68  tive..        th
6950: 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 20 3d 20  is.logElement = 
6960: 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63  this.docReferenc
6970: 65 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  e.createElement(
6980: 27 64 69 76 27 29 3b 0d 0a 20 20 20 20 20 20 20  'div');..       
6990: 20 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e   this.docReferen
69a0: 63 65 2e 62 6f 64 79 2e 61 70 70 65 6e 64 43 68  ce.body.appendCh
69b0: 69 6c 64 28 74 68 69 73 2e 6c 6f 67 45 6c 65 6d  ild(this.logElem
69c0: 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 74  ent);..        t
69d0: 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e 73  his.logElement.s
69e0: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 27  tyle.display = '
69f0: 6e 6f 6e 65 27 3b 0d 0a 20 20 20 20 20 20 20 20  none';..        
6a00: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c  ..        this.l
6a10: 6f 67 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e  ogElement.style.
6a20: 70 6f 73 69 74 69 6f 6e 20 3d 20 22 61 62 73 6f  position = "abso
6a30: 6c 75 74 65 22 3b 0d 0a 20 20 20 20 20 20 20 20  lute";..        
6a40: 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e  this.logElement.
6a50: 73 74 79 6c 65 2e 6c 65 66 74 20 3d 20 27 30 70  style.left = '0p
6a60: 78 27 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69  x';..        thi
6a70: 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e 73 74 79  s.logElement.sty
6a80: 6c 65 2e 77 69 64 74 68 20 3d 20 27 31 30 30 25  le.width = '100%
6a90: 27 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 20 20  ';..    ..      
6aa0: 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e    this.logElemen
6ab0: 74 2e 73 74 79 6c 65 2e 74 65 78 74 41 6c 69 67  t.style.textAlig
6ac0: 6e 20 3d 20 22 6c 65 66 74 22 3b 0d 0a 20 20 20  n = "left";..   
6ad0: 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65       this.logEle
6ae0: 6d 65 6e 74 2e 73 74 79 6c 65 2e 66 6f 6e 74 46  ment.style.fontF
6af0: 61 6d 69 6c 79 20 3d 20 22 6c 75 63 69 64 61 20  amily = "lucida 
6b00: 63 6f 6e 73 6f 6c 65 22 3b 0d 0a 20 20 20 20 20  console";..     
6b10: 20 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65     this.logEleme
6b20: 6e 74 2e 73 74 79 6c 65 2e 66 6f 6e 74 53 69 7a  nt.style.fontSiz
6b30: 65 20 3d 20 22 31 30 30 25 22 3b 0d 0a 20 20 20  e = "100%";..   
6b40: 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65       this.logEle
6b50: 6d 65 6e 74 2e 73 74 79 6c 65 2e 62 61 63 6b 67  ment.style.backg
6b60: 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 27 64 61  roundColor = 'da
6b70: 72 6b 67 72 61 79 27 3b 20 20 20 20 20 20 0d 0a  rkgray';      ..
6b80: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67          this.log
6b90: 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 6f 70  Element.style.op
6ba0: 61 63 69 74 79 20 3d 20 30 2e 39 3b 0d 0a 20 20  acity = 0.9;..  
6bb0: 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 45 6c        this.logEl
6bc0: 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 7a 49 6e 64  ement.style.zInd
6bd0: 65 78 20 3d 20 32 30 30 30 3b 20 0d 0a 20 20 20  ex = 2000; ..   
6be0: 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 64   ..        // Ad
6bf0: 64 20 74 6f 6f 6c 62 61 72 45 6c 65 6d 65 6e 74  d toolbarElement
6c00: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 74  ..        this.t
6c10: 6f 6f 6c 62 61 72 45 6c 65 6d 65 6e 74 20 3d 20  oolbarElement = 
6c20: 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63  this.docReferenc
6c30: 65 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  e.createElement(
6c40: 27 64 69 76 27 29 3b 0d 0a 20 20 20 20 20 20 20  'div');..       
6c50: 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74   this.logElement
6c60: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69  .appendChild(thi
6c70: 73 2e 74 6f 6f 6c 62 61 72 45 6c 65 6d 65 6e 74  s.toolbarElement
6c80: 29 3b 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20  );     ..       
6c90: 20 74 68 69 73 2e 74 6f 6f 6c 62 61 72 45 6c 65   this.toolbarEle
6ca0: 6d 65 6e 74 2e 73 74 79 6c 65 2e 70 61 64 64 69  ment.style.paddi
6cb0: 6e 67 20 3d 20 22 30 20 30 20 30 20 32 70 78 22  ng = "0 0 0 2px"
6cc0: 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 20 20 20  ;..    ..       
6cd0: 20 2f 2f 20 41 64 64 20 62 75 74 74 6f 6e 73 20   // Add buttons 
6ce0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
6cf0: 20 74 68 69 73 2e 62 75 74 74 6f 6e 73 43 6f 6e   this.buttonsCon
6d00: 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 20 3d 20  tainerElement = 
6d10: 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63  this.docReferenc
6d20: 65 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  e.createElement(
6d30: 27 73 70 61 6e 27 29 3b 0d 0a 20 20 20 20 20 20  'span');..      
6d40: 20 20 74 68 69 73 2e 74 6f 6f 6c 62 61 72 45 6c    this.toolbarEl
6d50: 65 6d 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c  ement.appendChil
6d60: 64 28 74 68 69 73 2e 62 75 74 74 6f 6e 73 43 6f  d(this.buttonsCo
6d70: 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 29 3b  ntainerElement);
6d80: 20 0d 0a 20 20 20 20 0d 0a 20 20 20 20 20 20 20   ..    ..       
6d90: 20 69 66 28 74 68 69 73 2e 69 6e 6c 69 6e 65 29   if(this.inline)
6da0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6db0: 76 61 72 20 63 6c 6f 73 65 42 75 74 74 6f 6e 20  var closeButton 
6dc0: 3d 20 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65  = this.docRefere
6dd0: 6e 63 65 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e  nce.createElemen
6de0: 74 28 27 62 75 74 74 6f 6e 27 29 3b 0d 0a 20 20  t('button');..  
6df0: 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 42            closeB
6e00: 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 63 73 73 46  utton.style.cssF
6e10: 6c 6f 61 74 20 3d 20 22 72 69 67 68 74 22 3b 0d  loat = "right";.
6e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f  .            clo
6e30: 73 65 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 73  seButton.style.s
6e40: 74 79 6c 65 46 6c 6f 61 74 20 3d 20 22 72 69 67  tyleFloat = "rig
6e50: 68 74 22 3b 20 2f 2f 20 49 45 20 64 6f 6d 20 62  ht"; // IE dom b
6e60: 75 67 2e 2e 2e 64 6f 65 73 6e 27 74 20 75 6e 64  ug...doesn't und
6e70: 65 72 73 74 61 6e 64 20 63 73 73 46 6c 6f 61 74  erstand cssFloat
6e80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6c  ..            cl
6e90: 6f 73 65 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e  oseButton.style.
6ea0: 63 6f 6c 6f 72 20 3d 20 22 62 6c 61 63 6b 22 3b  color = "black";
6eb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6c  ..            cl
6ec0: 6f 73 65 42 75 74 74 6f 6e 2e 69 6e 6e 65 72 48  oseButton.innerH
6ed0: 54 4d 4c 20 3d 20 22 63 6c 6f 73 65 22 3b 0d 0a  TML = "close";..
6ee0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73              clos
6ef0: 65 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20  eButton.onclick 
6f00: 3d 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28 74 68  = Log4js.bind(th
6f10: 69 73 2e 74 6f 67 67 6c 65 2c 20 74 68 69 73 29  is.toggle, this)
6f20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
6f30: 68 69 73 2e 62 75 74 74 6f 6e 73 43 6f 6e 74 61  his.buttonsConta
6f40: 69 6e 65 72 45 6c 65 6d 65 6e 74 2e 61 70 70 65  inerElement.appe
6f50: 6e 64 43 68 69 6c 64 28 63 6c 6f 73 65 42 75 74  ndChild(closeBut
6f60: 74 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ton);..        }
6f70: 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20  ..        ..    
6f80: 20 20 20 20 76 61 72 20 63 6c 65 61 72 42 75 74      var clearBut
6f90: 74 6f 6e 20 3d 20 74 68 69 73 2e 64 6f 63 52 65  ton = this.docRe
6fa0: 66 65 72 65 6e 63 65 2e 63 72 65 61 74 65 45 6c  ference.createEl
6fb0: 65 6d 65 6e 74 28 27 62 75 74 74 6f 6e 27 29 3b  ement('button');
6fc0: 0d 0a 20 20 20 20 20 20 20 20 63 6c 65 61 72 42  ..        clearB
6fd0: 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 63 73 73 46  utton.style.cssF
6fe0: 6c 6f 61 74 20 3d 20 22 72 69 67 68 74 22 3b 0d  loat = "right";.
6ff0: 0a 20 20 20 20 20 20 20 20 63 6c 65 61 72 42 75  .        clearBu
7000: 74 74 6f 6e 2e 73 74 79 6c 65 2e 73 74 79 6c 65  tton.style.style
7010: 46 6c 6f 61 74 20 3d 20 22 72 69 67 68 74 22 3b  Float = "right";
7020: 20 2f 2f 20 49 45 20 64 6f 6d 20 62 75 67 2e 2e   // IE dom bug..
7030: 2e 64 6f 65 73 6e 27 74 20 75 6e 64 65 72 73 74  .doesn't underst
7040: 61 6e 64 20 63 73 73 46 6c 6f 61 74 0d 0a 20 20  and cssFloat..  
7050: 20 20 20 20 20 20 63 6c 65 61 72 42 75 74 74 6f        clearButto
7060: 6e 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20  n.style.color = 
7070: 22 62 6c 61 63 6b 22 3b 0d 0a 20 20 20 20 20 20  "black";..      
7080: 20 20 63 6c 65 61 72 42 75 74 74 6f 6e 2e 69 6e    clearButton.in
7090: 6e 65 72 48 54 4d 4c 20 3d 20 22 63 6c 65 61 72  nerHTML = "clear
70a0: 22 3b 0d 0a 20 20 20 20 20 20 20 20 63 6c 65 61  ";..        clea
70b0: 72 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20  rButton.onclick 
70c0: 3d 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28 74 68  = Log4js.bind(th
70d0: 69 73 2e 6c 6f 67 67 65 72 2e 63 6c 65 61 72 2c  is.logger.clear,
70e0: 20 74 68 69 73 2e 6c 6f 67 67 65 72 29 3b 0d 0a   this.logger);..
70f0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 62 75 74          this.but
7100: 74 6f 6e 73 43 6f 6e 74 61 69 6e 65 72 45 6c 65  tonsContainerEle
7110: 6d 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64  ment.appendChild
7120: 28 63 6c 65 61 72 42 75 74 74 6f 6e 29 3b 0d 0a  (clearButton);..
7130: 20 20 20 20 0d 0a 0d 0a 20 20 20 20 20 20 20 20      ....        
7140: 2f 2f 41 64 64 20 43 61 74 65 67 6f 72 79 4e 61  //Add CategoryNa
7150: 6d 65 20 61 6e 64 20 20 4c 65 76 65 6c 20 46 69  me and  Level Fi
7160: 6c 74 65 72 0d 0a 20 20 20 20 20 20 20 20 74 68  lter..        th
7170: 69 73 2e 74 61 67 46 69 6c 74 65 72 43 6f 6e 74  is.tagFilterCont
7180: 61 69 6e 65 72 45 6c 65 6d 65 6e 74 20 3d 20 74  ainerElement = t
7190: 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65  his.docReference
71a0: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27  .createElement('
71b0: 73 70 61 6e 27 29 3b 0d 0a 20 20 20 20 20 20 20  span');..       
71c0: 20 74 68 69 73 2e 74 6f 6f 6c 62 61 72 45 6c 65   this.toolbarEle
71d0: 6d 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64  ment.appendChild
71e0: 28 74 68 69 73 2e 74 61 67 46 69 6c 74 65 72 43  (this.tagFilterC
71f0: 6f 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 29  ontainerElement)
7200: 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ;..        this.
7210: 74 61 67 46 69 6c 74 65 72 43 6f 6e 74 61 69 6e  tagFilterContain
7220: 65 72 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e  erElement.style.
7230: 63 73 73 46 6c 6f 61 74 20 3d 20 27 6c 65 66 74  cssFloat = 'left
7240: 27 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20  ';..        ..  
7250: 20 20 20 20 20 20 74 68 69 73 2e 74 61 67 46 69        this.tagFi
7260: 6c 74 65 72 43 6f 6e 74 61 69 6e 65 72 45 6c 65  lterContainerEle
7270: 6d 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64  ment.appendChild
7280: 28 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e  (this.docReferen
7290: 63 65 2e 63 72 65 61 74 65 54 65 78 74 4e 6f 64  ce.createTextNod
72a0: 65 28 22 4c 6f 67 34 6a 73 20 2d 20 22 20 2b 20  e("Log4js - " + 
72b0: 74 68 69 73 2e 6c 6f 67 67 65 72 2e 63 61 74 65  this.logger.cate
72c0: 67 6f 72 79 29 29 3b 0d 0a 20 20 20 20 20 20 20  gory));..       
72d0: 20 74 68 69 73 2e 74 61 67 46 69 6c 74 65 72 43   this.tagFilterC
72e0: 6f 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 2e  ontainerElement.
72f0: 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73  appendChild(this
7300: 2e 64 6f 63 52 65 66 65 72 65 6e 63 65 2e 63 72  .docReference.cr
7310: 65 61 74 65 54 65 78 74 4e 6f 64 65 28 22 20 7c  eateTextNode(" |
7320: 20 4c 65 76 65 6c 20 46 69 6c 74 65 72 3a 20 22   Level Filter: "
7330: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20  ));..        .. 
7340: 20 20 20 20 20 20 20 74 68 69 73 2e 74 61 67 46         this.tagF
7350: 69 6c 74 65 72 45 6c 65 6d 65 6e 74 20 3d 20 74  ilterElement = t
7360: 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65  his.docReference
7370: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27  .createElement('
7380: 69 6e 70 75 74 27 29 3b 0d 0a 20 20 20 20 20 20  input');..      
7390: 20 20 74 68 69 73 2e 74 61 67 46 69 6c 74 65 72    this.tagFilter
73a0: 43 6f 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74  ContainerElement
73b0: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69  .appendChild(thi
73c0: 73 2e 74 61 67 46 69 6c 74 65 72 45 6c 65 6d 65  s.tagFilterEleme
73d0: 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68  nt);..        th
73e0: 69 73 2e 74 61 67 46 69 6c 74 65 72 45 6c 65 6d  is.tagFilterElem
73f0: 65 6e 74 2e 73 74 79 6c 65 2e 77 69 64 74 68 20  ent.style.width 
7400: 3d 20 27 32 30 30 70 78 27 3b 20 20 20 20 20 20  = '200px';      
7410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a                ..
7420: 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 61 67          this.tag
7430: 46 69 6c 74 65 72 45 6c 65 6d 65 6e 74 2e 76 61  FilterElement.va
7440: 6c 75 65 20 3d 20 74 68 69 73 2e 74 61 67 50 61  lue = this.tagPa
7450: 74 74 65 72 6e 3b 20 20 20 20 0d 0a 20 20 20 20  ttern;    ..    
7460: 20 20 20 20 74 68 69 73 2e 74 61 67 46 69 6c 74      this.tagFilt
7470: 65 72 45 6c 65 6d 65 6e 74 2e 73 65 74 41 74 74  erElement.setAtt
7480: 72 69 62 75 74 65 28 27 61 75 74 6f 63 6f 6d 70  ribute('autocomp
7490: 6c 65 74 65 27 2c 20 27 6f 66 66 27 29 3b 20 2f  lete', 'off'); /
74a0: 2f 20 53 6f 20 46 69 72 65 66 6f 78 20 64 6f 65  / So Firefox doe
74b0: 73 6e 27 74 20 66 6c 69 70 20 6f 75 74 0d 0a 20  sn't flip out.. 
74c0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
74d0: 20 4c 6f 67 34 6a 73 2e 61 74 74 61 63 68 45 76   Log4js.attachEv
74e0: 65 6e 74 28 74 68 69 73 2e 74 61 67 46 69 6c 74  ent(this.tagFilt
74f0: 65 72 45 6c 65 6d 65 6e 74 2c 20 27 6b 65 79 75  erElement, 'keyu
7500: 70 27 2c 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28  p', Log4js.bind(
7510: 74 68 69 73 2e 75 70 64 61 74 65 54 61 67 73 2c  this.updateTags,
7520: 20 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 20 20   this));..      
7530: 20 20 4c 6f 67 34 6a 73 2e 61 74 74 61 63 68 45    Log4js.attachE
7540: 76 65 6e 74 28 74 68 69 73 2e 74 61 67 46 69 6c  vent(this.tagFil
7550: 74 65 72 45 6c 65 6d 65 6e 74 2c 20 27 63 6c 69  terElement, 'cli
7560: 63 6b 27 2c 20 4c 6f 67 34 6a 73 2e 62 69 6e 64  ck', Log4js.bind
7570: 28 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 74 68  ( function() {th
7580: 69 73 2e 74 61 67 46 69 6c 74 65 72 45 6c 65 6d  is.tagFilterElem
7590: 65 6e 74 2e 73 65 6c 65 63 74 28 29 3b 7d 2c 20  ent.select();}, 
75a0: 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 20 20 20  this));..       
75b0: 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 64   ..        // Ad
75c0: 64 20 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74 0d  d outputElement.
75d0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75  .        this.ou
75e0: 74 70 75 74 45 6c 65 6d 65 6e 74 20 3d 20 74 68  tputElement = th
75f0: 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65 2e  is.docReference.
7600: 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27 64  createElement('d
7610: 69 76 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 74  iv');..        t
7620: 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e 61  his.logElement.a
7630: 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e  ppendChild(this.
7640: 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74 29 3b 20  outputElement); 
7650: 20 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e   ..        this.
7660: 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74  outputElement.st
7670: 79 6c 65 2e 6f 76 65 72 66 6c 6f 77 20 3d 20 22  yle.overflow = "
7680: 61 75 74 6f 22 3b 20 20 20 20 20 20 20 20 20 20  auto";          
7690: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 74 68      ..        th
76a0: 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74  is.outputElement
76b0: 2e 73 74 79 6c 65 2e 63 6c 65 61 72 20 3d 20 22  .style.clear = "
76c0: 62 6f 74 68 22 3b 0d 0a 20 20 20 20 20 20 20 20  both";..        
76d0: 74 68 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65  this.outputEleme
76e0: 6e 74 2e 73 74 79 6c 65 2e 68 65 69 67 68 74 20  nt.style.height 
76f0: 3d 20 28 74 68 69 73 2e 69 6e 6c 69 6e 65 29 20  = (this.inline) 
7700: 3f 20 28 22 32 30 30 70 78 22 29 3a 28 22 36 35  ? ("200px"):("65
7710: 30 70 78 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  0px");..        
7720: 74 68 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65  this.outputEleme
7730: 6e 74 2e 73 74 79 6c 65 2e 77 69 64 74 68 20 3d  nt.style.width =
7740: 20 22 31 30 30 25 22 3b 0d 0a 20 20 20 20 20 20   "100%";..      
7750: 20 20 74 68 69 73 2e 6f 75 74 70 75 74 45 6c 65    this.outputEle
7760: 6d 65 6e 74 2e 73 74 79 6c 65 2e 62 61 63 6b 67  ment.style.backg
7770: 72 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 27 62 6c  roundColor = 'bl
7780: 61 63 6b 27 3b 20 0d 0a 20 20 20 20 20 20 20 20  ack'; ..        
7790: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
77a0: 20 20 74 68 69 73 2e 69 6e 70 75 74 43 6f 6e 74    this.inputCont
77b0: 61 69 6e 65 72 45 6c 65 6d 65 6e 74 20 3d 20 74  ainerElement = t
77c0: 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65  his.docReference
77d0: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27  .createElement('
77e0: 64 69 76 27 29 3b 0d 0a 20 20 20 20 20 20 20 20  div');..        
77f0: 74 68 69 73 2e 69 6e 70 75 74 43 6f 6e 74 61 69  this.inputContai
7800: 6e 65 72 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65  nerElement.style
7810: 2e 77 69 64 74 68 20 3d 20 22 31 30 30 25 22 3b  .width = "100%";
7820: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c  ..        this.l
7830: 6f 67 45 6c 65 6d 65 6e 74 2e 61 70 70 65 6e 64  ogElement.append
7840: 43 68 69 6c 64 28 74 68 69 73 2e 69 6e 70 75 74  Child(this.input
7850: 43 6f 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74  ContainerElement
7860: 29 3b 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20  );      ..      
7870: 20 20 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73    ..        this
7880: 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 20 3d 20  .inputElement = 
7890: 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63  this.docReferenc
78a0: 65 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  e.createElement(
78b0: 27 69 6e 70 75 74 27 29 3b 0d 0a 20 20 20 20 20  'input');..     
78c0: 20 20 20 74 68 69 73 2e 69 6e 70 75 74 43 6f 6e     this.inputCon
78d0: 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 2e 61 70  tainerElement.ap
78e0: 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 69  pendChild(this.i
78f0: 6e 70 75 74 45 6c 65 6d 65 6e 74 29 3b 20 20 0d  nputElement);  .
7900: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e  .        this.in
7910: 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65  putElement.style
7920: 2e 77 69 64 74 68 20 3d 20 27 31 30 30 25 27 3b  .width = '100%';
7930: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 69  ..        this.i
7940: 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74 79 6c  nputElement.styl
7950: 65 2e 62 6f 72 64 65 72 57 69 64 74 68 20 3d 20  e.borderWidth = 
7960: 27 30 70 78 27 3b 20 2f 2f 20 49 6e 70 75 74 73  '0px'; // Inputs
7970: 20 77 69 74 68 20 31 30 30 25 20 77 69 64 74 68   with 100% width
7980: 20 61 6c 77 61 79 73 20 73 65 65 6d 20 74 6f 20   always seem to 
7990: 62 65 20 74 6f 6f 20 6c 61 72 67 65 20 28 49 20  be too large (I 
79a0: 48 41 54 45 20 54 48 45 4d 29 20 74 68 65 79 20  HATE THEM) they 
79b0: 6f 6e 6c 79 20 77 6f 72 6b 20 69 66 20 74 68 65  only work if the
79c0: 20 62 6f 72 64 65 72 2c 20 6d 61 72 67 69 6e 20   border, margin 
79d0: 61 6e 64 20 70 61 64 64 69 6e 67 20 61 72 65 20  and padding are 
79e0: 30 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  0..        this.
79f0: 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74 79  inputElement.sty
7a00: 6c 65 2e 6d 61 72 67 69 6e 20 3d 20 27 30 70 78  le.margin = '0px
7a10: 27 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73  ';..        this
7a20: 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74  .inputElement.st
7a30: 79 6c 65 2e 70 61 64 64 69 6e 67 20 3d 20 27 30  yle.padding = '0
7a40: 70 78 27 3b 0d 0a 20 20 20 20 20 20 20 20 74 68  px';..        th
7a50: 69 73 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e  is.inputElement.
7a60: 76 61 6c 75 65 20 3d 20 27 54 79 70 65 20 63 6f  value = 'Type co
7a70: 6d 6d 61 6e 64 20 68 65 72 65 27 3b 20 0d 0a 20  mmand here'; .. 
7a80: 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75         this.inpu
7a90: 74 45 6c 65 6d 65 6e 74 2e 73 65 74 41 74 74 72  tElement.setAttr
7aa0: 69 62 75 74 65 28 27 61 75 74 6f 63 6f 6d 70 6c  ibute('autocompl
7ab0: 65 74 65 27 2c 20 27 6f 66 66 27 29 3b 20 2f 2f  ete', 'off'); //
7ac0: 20 53 6f 20 46 69 72 65 66 6f 78 20 64 6f 65 73   So Firefox does
7ad0: 6e 27 74 20 66 6c 69 70 20 6f 75 74 0d 0a 20 20  n't flip out..  
7ae0: 20 20 0d 0a 20 20 20 20 20 20 20 20 4c 6f 67 34    ..        Log4
7af0: 6a 73 2e 61 74 74 61 63 68 45 76 65 6e 74 28 74  js.attachEvent(t
7b00: 68 69 73 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74  his.inputElement
7b10: 2c 20 27 6b 65 79 75 70 27 2c 20 4c 6f 67 34 6a  , 'keyup', Log4j
7b20: 73 2e 62 69 6e 64 28 74 68 69 73 2e 68 61 6e 64  s.bind(this.hand
7b30: 6c 65 49 6e 70 75 74 2c 20 74 68 69 73 29 29 3b  leInput, this));
7b40: 0d 0a 20 20 20 20 20 20 20 20 4c 6f 67 34 6a 73  ..        Log4js
7b50: 2e 61 74 74 61 63 68 45 76 65 6e 74 28 74 68 69  .attachEvent(thi
7b60: 73 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2c 20  s.inputElement, 
7b70: 27 63 6c 69 63 6b 27 2c 20 4c 6f 67 34 6a 73 2e  'click', Log4js.
7b80: 62 69 6e 64 28 20 66 75 6e 63 74 69 6f 6e 28 29  bind( function()
7b90: 20 7b 74 68 69 73 2e 69 6e 70 75 74 45 6c 65 6d   {this.inputElem
7ba0: 65 6e 74 2e 73 65 6c 65 63 74 28 29 3b 7d 2c 20  ent.select();}, 
7bb0: 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 20 20 20  this));..       
7bc0: 20 0d 0a 20 20 20 20 20 20 20 20 69 66 28 74 68   ..        if(th
7bd0: 69 73 2e 69 6e 6c 69 6e 65 29 7b 0d 0a 20 20 20  is.inline){..   
7be0: 20 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 2e           window.
7bf0: 73 65 74 49 6e 74 65 72 76 61 6c 28 4c 6f 67 34  setInterval(Log4
7c00: 6a 73 2e 62 69 6e 64 28 74 68 69 73 2e 72 65 70  js.bind(this.rep
7c10: 6f 73 69 74 69 6f 6e 57 69 6e 64 6f 77 2c 20 74  ositionWindow, t
7c20: 68 69 73 29 2c 20 35 30 30 29 3b 0d 0a 20 20 20  his), 500);..   
7c30: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 65           this.re
7c40: 70 6f 73 69 74 69 6f 6e 57 69 6e 64 6f 77 28 29  positionWindow()
7c50: 3b 09 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ;...            
7c60: 2f 2f 20 41 6c 6c 6f 77 20 61 63 65 73 73 20 6b  // Allow acess k
7c70: 65 79 20 6c 69 6e 6b 20 20 20 20 20 20 20 20 20  ey link         
7c80: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76   ..            v
7c90: 61 72 20 61 63 63 65 73 73 45 6c 65 6d 65 6e 74  ar accessElement
7ca0: 20 3d 20 74 68 69 73 2e 64 6f 63 52 65 66 65 72   = this.docRefer
7cb0: 65 6e 63 65 2e 63 72 65 61 74 65 45 6c 65 6d 65  ence.createEleme
7cc0: 6e 74 28 27 62 75 74 74 6f 6e 27 29 3b 0d 0a 20  nt('button');.. 
7cd0: 20 20 20 20 20 20 20 20 20 20 20 61 63 63 65 73             acces
7ce0: 73 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 70  sElement.style.p
7cf0: 6f 73 69 74 69 6f 6e 20 3d 20 22 61 62 73 6f 6c  osition = "absol
7d00: 75 74 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ute";..         
7d10: 20 20 20 61 63 63 65 73 73 45 6c 65 6d 65 6e 74     accessElement
7d20: 2e 73 74 79 6c 65 2e 74 6f 70 20 3d 20 22 2d 31  .style.top = "-1
7d30: 30 30 70 78 22 3b 0d 0a 20 20 20 20 20 20 20 20  00px";..        
7d40: 20 20 20 20 61 63 63 65 73 73 45 6c 65 6d 65 6e      accessElemen
7d50: 74 2e 61 63 63 65 73 73 4b 65 79 20 3d 20 74 68  t.accessKey = th
7d60: 69 73 2e 61 63 63 65 73 73 6b 65 79 3b 0d 0a 20  is.accesskey;.. 
7d70: 20 20 20 20 20 20 20 20 20 20 20 61 63 63 65 73             acces
7d80: 73 45 6c 65 6d 65 6e 74 2e 6f 6e 63 6c 69 63 6b  sElement.onclick
7d90: 20 3d 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28 74   = Log4js.bind(t
7da0: 68 69 73 2e 74 6f 67 67 6c 65 2c 20 74 68 69 73  his.toggle, this
7db0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7dc0: 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63  this.docReferenc
7dd0: 65 2e 62 6f 64 79 2e 61 70 70 65 6e 64 43 68 69  e.body.appendChi
7de0: 6c 64 28 61 63 63 65 73 73 45 6c 65 6d 65 6e 74  ld(accessElement
7df0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c  );..        } el
7e00: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
7e10: 20 20 74 68 69 73 2e 73 68 6f 77 28 29 3b 0d 0a    this.show();..
7e20: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
7e30: 2c 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20  ,..    /**..    
7e40: 2a 20 73 68 6f 77 73 2f 68 69 64 65 20 61 6e 20  * shows/hide an 
7e50: 65 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 2a 20 40  element..    * @
7e60: 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 20 40  private..    * @
7e70: 72 65 74 75 72 6e 20 74 72 75 65 20 69 66 20 73  return true if s
7e80: 68 6f 77 6e 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  hown..    */..  
7e90: 20 20 74 6f 67 67 6c 65 20 3a 20 66 75 6e 63 74    toggle : funct
7ea0: 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ion() {..       
7eb0: 20 69 66 20 28 74 68 69 73 2e 6c 6f 67 45 6c 65   if (this.logEle
7ec0: 6d 65 6e 74 2e 73 74 79 6c 65 2e 64 69 73 70 6c  ment.style.displ
7ed0: 61 79 20 3d 3d 20 27 6e 6f 6e 65 27 29 20 7b 0d  ay == 'none') {.
7ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
7ef0: 73 2e 73 68 6f 77 28 29 3b 0d 0a 20 20 20 20 20  s.show();..     
7f00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
7f10: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65  ue;..        } e
7f20: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
7f30: 20 20 20 74 68 69 73 2e 68 69 64 65 28 29 3b 0d     this.hide();.
7f40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
7f50: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
7f60: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 20 0d 0a      }..    }, ..
7f70: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40      /**..    * @
7f80: 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d  private..    */.
7f90: 0a 20 20 20 20 73 68 6f 77 20 3a 20 66 75 6e 63  .    show : func
7fa0: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20  tion() {..      
7fb0: 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e    this.logElemen
7fc0: 74 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20  t.style.display 
7fd0: 3d 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20 74  = '';..        t
7fe0: 68 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e  his.outputElemen
7ff0: 74 2e 73 63 72 6f 6c 6c 54 6f 70 20 3d 20 74 68  t.scrollTop = th
8000: 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74  is.outputElement
8010: 2e 73 63 72 6f 6c 6c 48 65 69 67 68 74 3b 20 2f  .scrollHeight; /
8020: 2f 20 53 63 72 6f 6c 6c 20 74 6f 20 62 6f 74 74  / Scroll to bott
8030: 6f 6d 20 77 68 65 6e 20 74 6f 67 67 6c 65 64 0d  om when toggled.
8040: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e  .        this.in
8050: 70 75 74 45 6c 65 6d 65 6e 74 2e 73 65 6c 65 63  putElement.selec
8060: 74 28 29 3b 0d 0a 20 20 20 20 7d 2c 20 0d 0a 20  t();..    }, .. 
8070: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 70     /**..    * @p
8080: 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 09 0d  rivate..    */..
8090: 0a 20 20 20 20 68 69 64 65 20 3a 20 66 75 6e 63  .    hide : func
80a0: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20  tion() {..      
80b0: 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e    this.logElemen
80c0: 74 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20  t.style.display 
80d0: 3d 20 27 6e 6f 6e 65 27 3b 0d 0a 20 20 20 20 7d  = 'none';..    }
80e0: 2c 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20  ,  ..    /**..  
80f0: 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 20    * @private..  
8100: 20 20 2a 20 40 70 61 72 61 6d 20 6d 65 73 73 61    * @param messa
8110: 67 65 0d 0a 20 20 20 20 2a 20 40 73 74 79 6c 65  ge..    * @style
8120: 0d 0a 20 20 20 20 2a 2f 09 0d 0a 20 20 20 20 6f  ..    */...    o
8130: 75 74 70 75 74 20 3a 20 66 75 6e 63 74 69 6f 6e  utput : function
8140: 28 6d 65 73 73 61 67 65 2c 20 73 74 79 6c 65 29  (message, style)
8150: 20 7b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   {....        //
8160: 20 49 66 20 77 65 20 61 72 65 20 61 74 20 74 68   If we are at th
8170: 65 20 62 6f 74 74 6f 6d 20 6f 66 20 74 68 65 20  e bottom of the 
8180: 77 69 6e 64 6f 77 2c 20 74 68 65 6e 20 6b 65 65  window, then kee
8190: 70 20 73 63 72 6f 6c 6c 69 6e 67 20 77 69 74 68  p scrolling with
81a0: 20 74 68 65 20 6f 75 74 70 75 74 09 09 09 0d 0a   the output.....
81b0: 20 20 20 20 20 20 20 20 76 61 72 20 73 68 6f 75          var shou
81c0: 6c 64 53 63 72 6f 6c 6c 20 3d 20 28 74 68 69 73  ldScroll = (this
81d0: 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74 2e 73  .outputElement.s
81e0: 63 72 6f 6c 6c 54 6f 70 20 2b 20 28 32 20 2a 20  crollTop + (2 * 
81f0: 74 68 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65  this.outputEleme
8200: 6e 74 2e 63 6c 69 65 6e 74 48 65 69 67 68 74 29  nt.clientHeight)
8210: 29 20 3e 3d 20 74 68 69 73 2e 6f 75 74 70 75 74  ) >= this.output
8220: 45 6c 65 6d 65 6e 74 2e 73 63 72 6f 6c 6c 48 65  Element.scrollHe
8230: 69 67 68 74 3b 0d 0a 20 20 20 20 20 20 20 20 0d  ight;..        .
8240: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75  .        this.ou
8250: 74 70 75 74 43 6f 75 6e 74 2b 2b 3b 0d 0a 20 20  tputCount++;..  
8260: 20 20 20 20 20 20 73 74 79 6c 65 20 3d 20 28 73        style = (s
8270: 74 79 6c 65 20 3f 20 73 74 79 6c 65 20 2b 3d 20  tyle ? style += 
8280: 27 3b 27 20 3a 20 27 27 29 3b 09 20 20 09 0d 0a  ';' : '');.  ...
8290: 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 2b 3d          style +=
82a0: 20 27 70 61 64 64 69 6e 67 3a 31 70 78 3b 6d 61   'padding:1px;ma
82b0: 72 67 69 6e 3a 30 20 30 20 35 70 78 20 30 27 3b  rgin:0 0 5px 0';
82c0: 09 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20  .     ..        
82d0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68  ..        if (th
82e0: 69 73 2e 6f 75 74 70 75 74 43 6f 75 6e 74 20 25  is.outputCount %
82f0: 20 32 20 3d 3d 3d 20 30 29 20 7b 0d 0a 20 20 20   2 === 0) {..   
8300: 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 2b           style +
8310: 3d 20 22 3b 62 61 63 6b 67 72 6f 75 6e 64 2d 63  = ";background-c
8320: 6f 6c 6f 72 3a 23 31 30 31 30 31 30 22 3b 0d 0a  olor:#101010";..
8330: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8340: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 6d 65 73     ..        mes
8350: 73 61 67 65 20 3d 20 6d 65 73 73 61 67 65 20 7c  sage = message |
8360: 7c 20 22 75 6e 64 65 66 69 6e 65 64 22 3b 0d 0a  | "undefined";..
8370: 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20          message 
8380: 3d 20 6d 65 73 73 61 67 65 2e 74 6f 53 74 72 69  = message.toStri
8390: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d  ng();..        .
83a0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75  .        this.ou
83b0: 74 70 75 74 45 6c 65 6d 65 6e 74 2e 69 6e 6e 65  tputElement.inne
83c0: 72 48 54 4d 4c 20 2b 3d 20 22 3c 70 72 65 20 73  rHTML += "<pre s
83d0: 74 79 6c 65 3d 27 22 20 2b 20 73 74 79 6c 65 20  tyle='" + style 
83e0: 2b 20 22 27 3e 22 20 2b 20 6d 65 73 73 61 67 65  + "'>" + message
83f0: 20 2b 20 22 3c 2f 70 72 65 3e 22 3b 0d 0a 20 20   + "</pre>";..  
8400: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
8410: 69 66 20 28 73 68 6f 75 6c 64 53 63 72 6f 6c 6c  if (shouldScroll
8420: 29 20 7b 09 09 09 09 0d 0a 20 20 20 20 20 20 20  ) {......       
8430: 20 20 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74       this.output
8440: 45 6c 65 6d 65 6e 74 2e 73 63 72 6f 6c 6c 54 6f  Element.scrollTo
8450: 70 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 45  p = this.outputE
8460: 6c 65 6d 65 6e 74 2e 73 63 72 6f 6c 6c 48 65 69  lement.scrollHei
8470: 67 68 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ght;..        }.
8480: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
8490: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 70     /**..    * @p
84a0: 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a  rivate..    */..
84b0: 20 20 20 20 75 70 64 61 74 65 54 61 67 73 20 3a      updateTags :
84c0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
84d0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
84e0: 20 76 61 72 20 70 61 74 74 65 72 6e 20 3d 20 74   var pattern = t
84f0: 68 69 73 2e 74 61 67 46 69 6c 74 65 72 45 6c 65  his.tagFilterEle
8500: 6d 65 6e 74 2e 76 61 6c 75 65 3b 0d 0a 20 20 20  ment.value;..   
8510: 20 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74   ..        if (t
8520: 68 69 73 2e 74 61 67 50 61 74 74 65 72 6e 20 3d  his.tagPattern =
8530: 3d 20 70 61 74 74 65 72 6e 29 20 7b 0d 0a 20 20  = pattern) {..  
8540: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
8550: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
8560: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
8570: 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  try {..         
8580: 20 20 20 6e 65 77 20 52 65 67 45 78 70 28 70 61     new RegExp(pa
8590: 74 74 65 72 6e 29 3b 0d 0a 20 20 20 20 20 20 20  ttern);..       
85a0: 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d 0a   } catch (e) {..
85b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
85c0: 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  rn;..        }..
85d0: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
85e0: 20 20 74 68 69 73 2e 74 61 67 50 61 74 74 65 72    this.tagPatter
85f0: 6e 20 3d 20 70 61 74 74 65 72 6e 3b 0d 0a 0d 0a  n = pattern;....
8600: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74          this.out
8610: 70 75 74 45 6c 65 6d 65 6e 74 2e 69 6e 6e 65 72  putElement.inner
8620: 48 54 4d 4c 20 3d 20 22 22 3b 0d 0a 20 20 20 20  HTML = "";..    
8630: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f      ..        //
8640: 20 47 6f 20 74 68 72 6f 75 67 68 20 65 61 63 68   Go through each
8650: 20 6c 6f 67 20 65 6e 74 72 79 20 61 67 61 69 6e   log entry again
8660: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f  ..        this.o
8670: 75 74 70 75 74 43 6f 75 6e 74 20 3d 20 30 3b 0d  utputCount = 0;.
8680: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61  .        for (va
8690: 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69  r i = 0; i < thi
86a0: 73 2e 6c 6f 67 67 65 72 2e 6c 6f 67 67 69 6e 67  s.logger.logging
86b0: 45 76 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 20 69  Events.length; i
86c0: 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ++) {..         
86d0: 20 20 20 74 68 69 73 2e 64 6f 41 70 70 65 6e 64     this.doAppend
86e0: 28 74 68 69 73 2e 6c 6f 67 67 65 72 2e 6c 6f 67  (this.logger.log
86f0: 67 69 6e 67 45 76 65 6e 74 73 5b 69 5d 29 3b 0d  gingEvents[i]);.
8700: 0a 20 20 20 20 20 20 20 20 7d 20 20 0d 0a 20 20  .        }  ..  
8710: 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d    },....    /**.
8720: 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d  .    * @private.
8730: 0a 20 20 20 20 2a 2f 09 0d 0a 20 20 20 20 72 65  .    */...    re
8740: 70 6f 73 69 74 69 6f 6e 57 69 6e 64 6f 77 20 3a  positionWindow :
8750: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
8760: 20 20 20 20 20 20 20 76 61 72 20 6f 66 66 73 65         var offse
8770: 74 20 3d 20 77 69 6e 64 6f 77 2e 70 61 67 65 59  t = window.pageY
8780: 4f 66 66 73 65 74 20 7c 7c 20 74 68 69 73 2e 64  Offset || this.d
8790: 6f 63 52 65 66 65 72 65 6e 63 65 2e 64 6f 63 75  ocReference.docu
87a0: 6d 65 6e 74 45 6c 65 6d 65 6e 74 2e 73 63 72 6f  mentElement.scro
87b0: 6c 6c 54 6f 70 20 7c 7c 20 74 68 69 73 2e 64 6f  llTop || this.do
87c0: 63 52 65 66 65 72 65 6e 63 65 2e 62 6f 64 79 2e  cReference.body.
87d0: 73 63 72 6f 6c 6c 54 6f 70 3b 0d 0a 20 20 20 20  scrollTop;..    
87e0: 20 20 20 20 76 61 72 20 70 61 67 65 48 65 69 67      var pageHeig
87f0: 68 74 20 3d 20 73 65 6c 66 2e 69 6e 6e 65 72 48  ht = self.innerH
8800: 65 69 67 68 74 20 7c 7c 20 74 68 69 73 2e 64 6f  eight || this.do
8810: 63 52 65 66 65 72 65 6e 63 65 2e 64 6f 63 75 6d  cReference.docum
8820: 65 6e 74 45 6c 65 6d 65 6e 74 2e 63 6c 69 65 6e  entElement.clien
8830: 74 48 65 69 67 68 74 20 7c 7c 20 74 68 69 73 2e  tHeight || this.
8840: 64 6f 63 52 65 66 65 72 65 6e 63 65 2e 62 6f 64  docReference.bod
8850: 79 2e 63 6c 69 65 6e 74 48 65 69 67 68 74 3b 0d  y.clientHeight;.
8860: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f  .        this.lo
8870: 67 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 74  gElement.style.t
8880: 6f 70 20 3d 20 28 6f 66 66 73 65 74 20 2b 20 70  op = (offset + p
8890: 61 67 65 48 65 69 67 68 74 20 2d 20 74 68 69 73  ageHeight - this
88a0: 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e 6f 66 66 73  .logElement.offs
88b0: 65 74 48 65 69 67 68 74 29 20 2b 20 22 70 78 22  etHeight) + "px"
88c0: 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20  ;..    },....   
88d0: 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 70 61 72   /**..    * @par
88e0: 61 6d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20  am loggingEvent 
88f0: 65 76 65 6e 74 20 74 6f 20 62 65 20 6c 6f 67 67  event to be logg
8900: 65 64 0d 0a 20 20 20 20 2a 20 40 73 65 65 20 4c  ed..    * @see L
8910: 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 23 64  og4js.Appender#d
8920: 6f 41 70 70 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d  oAppend..    */.
8930: 0a 20 20 20 20 64 6f 41 70 70 65 6e 64 20 3a 20  .    doAppend : 
8940: 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67  function(logging
8950: 45 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20  Event) {..      
8960: 20 20 0d 0a 20 20 20 20 20 20 20 20 69 66 28 74    ..        if(t
8970: 68 69 73 2e 70 6f 70 75 70 42 6c 6f 63 6b 65 72  his.popupBlocker
8980: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
8990: 20 2f 2f 70 6f 70 75 70 20 62 6c 6f 63 6b 65 64   //popup blocked
89a0: 2c 20 77 65 20 72 65 74 75 72 6e 20 69 6e 20 74  , we return in t
89b0: 68 69 73 20 63 61 73 65 0d 0a 20 20 20 20 20 20  his case..      
89c0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20        return;.. 
89d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
89e0: 20 20 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28    ..        if (
89f0: 28 21 74 68 69 73 2e 69 6e 6c 69 6e 65 29 20 26  (!this.inline) &
8a00: 26 20 28 21 74 68 69 73 2e 77 69 6e 52 65 66 65  & (!this.winRefe
8a10: 72 65 6e 63 65 20 7c 7c 20 74 68 69 73 2e 77 69  rence || this.wi
8a20: 6e 52 65 66 65 72 65 6e 63 65 2e 63 6c 6f 73 65  nReference.close
8a30: 64 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  d)) {..         
8a40: 20 20 20 74 68 69 73 2e 69 6e 69 74 69 61 6c 69     this.initiali
8a50: 7a 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ze();..        }
8a60: 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20  ..        ..    
8a70: 20 20 20 20 69 66 20 28 74 68 69 73 2e 74 61 67      if (this.tag
8a80: 50 61 74 74 65 72 6e 20 21 3d 3d 20 6e 75 6c 6c  Pattern !== null
8a90: 20 26 26 20 0d 0a 20 20 20 20 20 20 20 20 20 20   && ..          
8aa0: 20 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c    loggingEvent.l
8ab0: 65 76 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e  evel.toString().
8ac0: 73 65 61 72 63 68 28 6e 65 77 20 52 65 67 45 78  search(new RegEx
8ad0: 70 28 74 68 69 73 2e 74 61 67 50 61 74 74 65 72  p(this.tagPatter
8ae0: 6e 2c 20 27 69 67 6d 27 29 29 20 3d 3d 20 2d 31  n, 'igm')) == -1
8af0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
8b00: 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20   return;..      
8b10: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20    }..        .. 
8b20: 20 20 20 20 20 20 20 76 61 72 20 73 74 79 6c 65         var style
8b30: 20 3d 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20   = '';..        
8b40: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f  ..        if (lo
8b50: 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c  ggingEvent.level
8b60: 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72  .toString().sear
8b70: 63 68 28 2f 45 52 52 4f 52 2f 29 20 21 3d 20 2d  ch(/ERROR/) != -
8b80: 31 29 20 7b 20 0d 0a 20 20 20 20 20 20 20 20 20  1) { ..         
8b90: 20 20 20 73 74 79 6c 65 20 2b 3d 20 27 63 6f 6c     style += 'col
8ba0: 6f 72 3a 72 65 64 27 3b 0d 0a 20 20 20 20 20 20  or:red';..      
8bb0: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 6f 67    } else if (log
8bc0: 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e  gingEvent.level.
8bd0: 74 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63  toString().searc
8be0: 68 28 2f 46 41 54 41 4c 2f 29 20 21 3d 20 2d 31  h(/FATAL/) != -1
8bf0: 29 20 7b 20 0d 0a 20 20 20 20 20 20 20 20 20 20  ) { ..          
8c00: 20 20 73 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f    style += 'colo
8c10: 72 3a 72 65 64 27 3b 0d 0a 20 20 20 20 20 20 20  r:red';..       
8c20: 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 6f 67 67   } else if (logg
8c30: 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74  ingEvent.level.t
8c40: 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63 68  oString().search
8c50: 28 2f 57 41 52 4e 2f 29 20 21 3d 20 2d 31 29 20  (/WARN/) != -1) 
8c60: 7b 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  { ..            
8c70: 73 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f 72 3a  style += 'color:
8c80: 6f 72 61 6e 67 65 27 3b 0d 0a 20 20 20 20 20 20  orange';..      
8c90: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 6f 67    } else if (log
8ca0: 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e  gingEvent.level.
8cb0: 74 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63  toString().searc
8cc0: 68 28 2f 44 45 42 55 47 2f 29 20 21 3d 20 2d 31  h(/DEBUG/) != -1
8cd0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
8ce0: 20 73 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f 72   style += 'color
8cf0: 3a 67 72 65 65 6e 27 3b 0d 0a 20 20 20 20 20 20  :green';..      
8d00: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 6f 67    } else if (log
8d10: 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e  gingEvent.level.
8d20: 74 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63  toString().searc
8d30: 68 28 2f 49 4e 46 4f 2f 29 20 21 3d 20 2d 31 29  h(/INFO/) != -1)
8d40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8d50: 73 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f 72 3a  style += 'color:
8d60: 77 68 69 74 65 27 3b 0d 0a 20 20 20 20 20 20 20  white';..       
8d70: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
8d80: 20 20 20 20 20 20 20 73 74 79 6c 65 20 2b 3d 20         style += 
8d90: 27 63 6f 6c 6f 72 3a 79 65 6c 6c 6f 77 27 3b 0d  'color:yellow';.
8da0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8db0: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f  ..        this.o
8dc0: 75 74 70 75 74 28 74 68 69 73 2e 6c 61 79 6f 75  utput(this.layou
8dd0: 74 2e 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67  t.format(logging
8de0: 45 76 65 6e 74 29 2c 20 73 74 79 6c 65 29 3b 09  Event), style);.
8df0: 0d 0a 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20  ..    },....    
8e00: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 73 65 65 20  /**..    * @see 
8e10: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 23  Log4js.Appender#
8e20: 64 6f 43 6c 65 61 72 0d 0a 20 20 20 20 2a 2f 0d  doClear..    */.
8e30: 0a 20 20 20 20 64 6f 43 6c 65 61 72 20 3a 20 66  .    doClear : f
8e40: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
8e50: 20 20 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74       this.output
8e60: 45 6c 65 6d 65 6e 74 2e 69 6e 6e 65 72 48 54 4d  Element.innerHTM
8e70: 4c 20 3d 20 22 22 3b 0d 0a 20 20 20 20 7d 2c 0d  L = "";..    },.
8e80: 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
8e90: 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 20  @private..    * 
8ea0: 40 70 61 72 61 6d 20 65 0d 0a 20 20 20 20 2a 2f  @param e..    */
8eb0: 0d 0a 20 20 20 20 68 61 6e 64 6c 65 49 6e 70 75  ..    handleInpu
8ec0: 74 20 3a 20 66 75 6e 63 74 69 6f 6e 28 65 29 20  t : function(e) 
8ed0: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 65  {..        if (e
8ee0: 2e 6b 65 79 43 6f 64 65 20 3d 3d 20 31 33 20 29  .keyCode == 13 )
8ef0: 20 7b 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20   {      ..      
8f00: 20 20 20 20 20 20 76 61 72 20 63 6f 6d 6d 61 6e        var comman
8f10: 64 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 45 6c  d = this.inputEl
8f20: 65 6d 65 6e 74 2e 76 61 6c 75 65 3b 0d 0a 20 20  ement.value;..  
8f30: 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20            ..    
8f40: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 28 63          switch(c
8f50: 6f 6d 6d 61 6e 64 29 20 7b 0d 0a 20 20 20 20 20  ommand) {..     
8f60: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
8f70: 22 63 6c 65 61 72 22 3a 0d 0a 20 20 20 20 20 20  "clear":..      
8f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
8f90: 69 73 2e 6c 6f 67 67 65 72 2e 63 6c 65 61 72 28  is.logger.clear(
8fa0: 29 3b 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20  );  ..          
8fb0: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
8fc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8fd0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
8fe0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
8ff0: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
9000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
9010: 72 20 63 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 20  r consoleOutput 
9020: 3d 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  = "";..         
9030: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
9040: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
9050: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9060: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
9070: 6f 6c 65 4f 75 74 70 75 74 20 3d 20 65 76 61 6c  oleOutput = eval
9080: 28 74 68 69 73 2e 69 6e 70 75 74 45 6c 65 6d 65  (this.inputEleme
9090: 6e 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  nt.value);..    
90a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
90b0: 7d 20 63 61 74 63 68 20 28 65 29 20 7b 20 20 0d  } catch (e) {  .
90c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
90d0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f           this.lo
90e0: 67 67 65 72 2e 65 72 72 6f 72 28 22 50 72 6f 62  gger.error("Prob
90f0: 6c 65 6d 20 70 61 72 73 69 6e 67 20 69 6e 70 75  lem parsing inpu
9100: 74 20 3c 22 20 2b 20 63 6f 6d 6d 61 6e 64 20 2b  t <" + command +
9110: 20 22 3e 22 20 2b 20 65 2e 6d 65 73 73 61 67 65   ">" + e.message
9120: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
9130: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
9140: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
9150: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9170: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20     ..           
9180: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f           this.lo
9190: 67 67 65 72 2e 74 72 61 63 65 28 63 6f 6e 73 6f  gger.trace(conso
91a0: 6c 65 4f 75 74 70 75 74 29 3b 0d 0a 20 20 20 20  leOutput);..    
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91c0: 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
91d0: 20 20 20 20 7d 20 20 20 20 20 20 20 20 0d 0a 20      }        .. 
91e0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
91f0: 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 6e       if (this.in
9200: 70 75 74 45 6c 65 6d 65 6e 74 2e 76 61 6c 75 65  putElement.value
9210: 20 21 3d 3d 20 22 22 20 26 26 20 74 68 69 73 2e   !== "" && this.
9220: 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 76 61 6c  inputElement.val
9230: 75 65 20 21 3d 3d 20 74 68 69 73 2e 63 6f 6d 6d  ue !== this.comm
9240: 61 6e 64 48 69 73 74 6f 72 79 5b 30 5d 29 20 7b  andHistory[0]) {
9250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9260: 20 20 74 68 69 73 2e 63 6f 6d 6d 61 6e 64 48 69    this.commandHi
9270: 73 74 6f 72 79 2e 75 6e 73 68 69 66 74 28 74 68  story.unshift(th
9280: 69 73 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e  is.inputElement.
9290: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
92a0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
92b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
92c0: 69 73 2e 63 6f 6d 6d 61 6e 64 49 6e 64 65 78 20  is.commandIndex 
92d0: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
92e0: 20 20 74 68 69 73 2e 69 6e 70 75 74 45 6c 65 6d    this.inputElem
92f0: 65 6e 74 2e 76 61 6c 75 65 20 3d 20 22 22 3b 20  ent.value = ""; 
9300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9330: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 7d 20      ..        } 
9340: 65 6c 73 65 20 69 66 20 28 65 2e 6b 65 79 43 6f  else if (e.keyCo
9350: 64 65 20 3d 3d 20 33 38 20 26 26 20 74 68 69 73  de == 38 && this
9360: 2e 63 6f 6d 6d 61 6e 64 48 69 73 74 6f 72 79 2e  .commandHistory.
9370: 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0d 0a 20  length > 0) {.. 
9380: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
9390: 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 76 61 6c  inputElement.val
93a0: 75 65 20 3d 20 74 68 69 73 2e 63 6f 6d 6d 61 6e  ue = this.comman
93b0: 64 48 69 73 74 6f 72 79 5b 74 68 69 73 2e 63 6f  dHistory[this.co
93c0: 6d 6d 61 6e 64 49 6e 64 65 78 5d 3b 0d 0a 0d 0a  mmandIndex];....
93d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
93e0: 74 68 69 73 2e 63 6f 6d 6d 61 6e 64 49 6e 64 65  this.commandInde
93f0: 78 20 3c 20 74 68 69 73 2e 63 6f 6d 6d 61 6e 64  x < this.command
9400: 48 69 73 74 6f 72 79 2e 6c 65 6e 67 74 68 20 2d  History.length -
9410: 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20   1) {..         
9420: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6d 6d         this.comm
9430: 61 6e 64 49 6e 64 65 78 20 2b 3d 20 31 3b 0d 0a  andIndex += 1;..
9440: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9450: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
9460: 20 28 65 2e 6b 65 79 43 6f 64 65 20 3d 3d 20 34   (e.keyCode == 4
9470: 30 20 26 26 20 74 68 69 73 2e 63 6f 6d 6d 61 6e  0 && this.comman
9480: 64 48 69 73 74 6f 72 79 2e 6c 65 6e 67 74 68 20  dHistory.length 
9490: 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  > 0) {..        
94a0: 20 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6d      if (this.com
94b0: 6d 61 6e 64 49 6e 64 65 78 20 3e 20 30 29 20 7b  mandIndex > 0) {
94c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94e0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
94f0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6d          this.com
9500: 6d 61 6e 64 49 6e 64 65 78 20 2d 3d 20 31 3b 0d  mandIndex -= 1;.
9510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 20  .            }  
9520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9530: 20 20 20 20 20 0d 0a 0d 0a 20 20 20 20 20 20 20       ....       
9540: 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 45       this.inputE
9550: 6c 65 6d 65 6e 74 2e 76 61 6c 75 65 20 3d 20 74  lement.value = t
9560: 68 69 73 2e 63 6f 6d 6d 61 6e 64 48 69 73 74 6f  his.commandHisto
9570: 72 79 5b 74 68 69 73 2e 63 6f 6d 6d 61 6e 64 49  ry[this.commandI
9580: 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20  ndex];..        
9590: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
95a0: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6d 6d 61        this.comma
95b0: 6e 64 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20  ndIndex = 0;..  
95c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d        }..    },.
95d0: 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d  .    ..    /** .
95e0: 0a 20 20 20 20 2a 20 74 6f 53 74 72 69 6e 67 0d  .    * toString.
95f0: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 6f 53  .    */..    toS
9600: 74 72 69 6e 67 3a 20 66 75 6e 63 74 69 6f 6e 28  tring: function(
9610: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ) {..        ret
9620: 75 72 6e 20 22 4c 6f 67 34 6a 73 2e 43 6f 6e 73  urn "Log4js.Cons
9630: 6f 6c 65 41 70 70 65 6e 64 65 72 5b 69 6e 6c 69  oleAppender[inli
9640: 6e 65 3d 22 20 2b 20 74 68 69 73 2e 69 6e 6c 69  ne=" + this.inli
9650: 6e 65 20 2b 20 22 5d 22 3b 20 0d 0a 20 20 20 20  ne + "]"; ..    
9660: 7d 0d 0a 7d 29 3b 20 0d 0a 0d 0a 2f 2a 2a 0d 0a  }..}); ..../**..
9670: 2a 20 4d 65 74 61 74 61 67 20 41 70 70 65 6e 64  * Metatag Append
9680: 65 72 20 77 72 69 74 69 6e 67 20 74 68 65 20 6c  er writing the l
9690: 6f 67 73 20 74 6f 20 6d 65 74 61 20 74 61 67 73  ogs to meta tags
96a0: 0d 0a 2a 0d 0a 2a 20 40 65 78 74 65 6e 64 73 20  ..*..* @extends 
96b0: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 0d  Log4js.Appender.
96c0: 0a 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d  .* @constructor.
96d0: 0a 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67 65 72  .* @param logger
96e0: 20 6c 6f 67 34 6a 73 20 69 6e 73 74 61 6e 63 65   log4js instance
96f0: 20 74 68 69 73 20 61 70 70 65 6e 64 65 72 20 69   this appender i
9700: 73 20 61 74 74 61 63 68 65 64 20 74 6f 0d 0a 2a  s attached to..*
9710: 20 40 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e   @author Stephan
9720: 20 53 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a   Strittmatter..*
9730: 2f 0d 0a 4c 6f 67 34 6a 73 2e 4d 65 74 61 74 61  /..Log4js.Metata
9740: 67 41 70 70 65 6e 64 65 72 20 3d 20 66 75 6e 63  gAppender = func
9750: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 74 68  tion() {..    th
9760: 69 73 2e 63 75 72 72 65 6e 74 4c 69 6e 65 20 3d  is.currentLine =
9770: 20 30 3b 0d 0a 7d 3b 0d 0a 4c 6f 67 34 6a 73 2e   0;..};..Log4js.
9780: 4d 65 74 61 74 61 67 41 70 70 65 6e 64 65 72 2e  MetatagAppender.
9790: 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34  prototype = Log4
97a0: 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f  js.extend(new Lo
97b0: 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c  g4js.Appender(),
97c0: 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20   {  ..    /**.. 
97d0: 20 20 20 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67     * @param logg
97e0: 69 6e 67 45 76 65 6e 74 20 65 76 65 6e 74 20 74  ingEvent event t
97f0: 6f 20 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20  o be logged..   
9800: 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a 73 2e 41   * @see Log4js.A
9810: 70 70 65 6e 64 65 72 23 64 6f 41 70 70 65 6e 64  ppender#doAppend
9820: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f  ..    */..    do
9830: 41 70 70 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e  Append: function
9840: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b  (loggingEvent) {
9850: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f  ..        var no
9860: 77 20 3d 20 6e 65 77 20 44 61 74 65 28 29 3b 0d  w = new Date();.
9870: 0a 20 20 20 20 20 20 20 20 76 61 72 20 6c 69 6e  .        var lin
9880: 65 73 20 3d 20 6c 6f 67 67 69 6e 67 45 76 65 6e  es = loggingEven
9890: 74 2e 6d 65 73 73 61 67 65 2e 73 70 6c 69 74 28  t.message.split(
98a0: 22 5c 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  "\n");..        
98b0: 76 61 72 20 68 65 61 64 54 61 67 20 3d 20 64 6f  var headTag = do
98c0: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
98d0: 74 73 42 79 54 61 67 4e 61 6d 65 28 22 68 65 61  tsByTagName("hea
98e0: 64 22 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20  d")[0];....     
98f0: 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20     for (var i = 
9900: 31 3b 20 69 20 3c 3d 20 6c 69 6e 65 73 2e 6c 65  1; i <= lines.le
9910: 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a 20 20  ngth; i++) {..  
9920: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 76 61            var va
9930: 6c 75 65 20 3d 20 6c 69 6e 65 73 5b 69 20 2d 20  lue = lines[i - 
9940: 31 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  1];..           
9950: 20 69 66 20 28 69 20 3d 3d 20 31 29 20 7b 0d 0a   if (i == 1) {..
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9970: 76 61 6c 75 65 20 3d 20 6c 6f 67 67 69 6e 67 45  value = loggingE
9980: 76 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53 74 72  vent.level.toStr
9990: 69 6e 67 28 29 20 2b 20 22 3a 20 22 20 2b 20 76  ing() + ": " + v
99a0: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
99b0: 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20     } else {..   
99c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
99d0: 75 65 20 3d 20 22 3e 20 22 20 2b 20 76 61 6c 75  ue = "> " + valu
99e0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
99f0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
9a00: 20 76 61 72 20 6d 65 74 61 54 61 67 20 3d 20 64   var metaTag = d
9a10: 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c  ocument.createEl
9a20: 65 6d 65 6e 74 28 22 6d 65 74 61 22 29 3b 0d 0a  ement("meta");..
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 61              meta
9a40: 54 61 67 2e 73 65 74 41 74 74 72 69 62 75 74 65  Tag.setAttribute
9a50: 28 22 6e 61 6d 65 22 2c 20 22 58 2d 6c 6f 67 34  ("name", "X-log4
9a60: 6a 73 3a 22 20 2b 20 74 68 69 73 2e 63 75 72 72  js:" + this.curr
9a70: 65 6e 74 4c 69 6e 65 29 3b 0d 0a 20 20 20 20 20  entLine);..     
9a80: 20 20 20 20 20 20 20 6d 65 74 61 54 61 67 2e 73         metaTag.s
9a90: 65 74 41 74 74 72 69 62 75 74 65 28 22 63 6f 6e  etAttribute("con
9aa0: 74 65 6e 74 22 2c 20 76 61 6c 75 65 29 3b 0d 0a  tent", value);..
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64              head
9ac0: 54 61 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  Tag.appendChild(
9ad0: 6d 65 74 61 54 61 67 29 3b 0d 0a 20 20 20 20 20  metaTag);..     
9ae0: 20 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 72         this.curr
9af0: 65 6e 74 4c 69 6e 65 20 2b 3d 20 31 3b 0d 0a 20  entLine += 1;.. 
9b00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c         }..    },
9b10: 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20  ....    /** ..  
9b20: 20 20 2a 20 74 6f 53 74 72 69 6e 67 0d 0a 20 20    * toString..  
9b30: 20 20 2a 2f 0d 0a 20 20 20 20 74 6f 53 74 72 69    */..    toStri
9b40: 6e 67 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  ng: function() {
9b50: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
9b60: 20 22 4c 6f 67 34 6a 73 2e 4d 65 74 61 74 61 67   "Log4js.Metatag
9b70: 41 70 70 65 6e 64 65 72 22 3b 20 0d 0a 20 20 20  Appender"; ..   
9b80: 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a   }..});..../**..
9b90: 2a 20 41 4a 41 58 20 41 70 70 65 6e 64 65 72 20  * AJAX Appender 
9ba0: 73 65 6e 64 69 6e 67 20 7b 40 6c 69 6e 6b 20 4c  sending {@link L
9bb0: 6f 67 34 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65  og4js.LoggingEve
9bc0: 6e 74 7d 73 20 61 73 79 6e 63 68 72 6f 6e 20 76  nt}s asynchron v
9bd0: 69 61 20 0d 0a 2a 20 3c 63 6f 64 65 3e 58 4d 4c  ia ..* <code>XML
9be0: 48 74 74 70 52 65 71 75 65 73 74 3c 2f 63 6f 64  HttpRequest</cod
9bf0: 65 3e 20 74 6f 20 73 65 72 76 65 72 2e 3c 62 72  e> to server.<br
9c00: 20 2f 3e 0d 0a 2a 20 54 68 65 20 7b 40 6c 69 6e   />..* The {@lin
9c10: 6b 20 4c 6f 67 34 6a 73 2e 4c 6f 67 67 69 6e 67  k Log4js.Logging
9c20: 45 76 65 6e 74 7d 20 69 73 20 50 4f 53 54 65 64  Event} is POSTed
9c30: 20 61 73 20 72 65 73 70 6f 6e 73 65 20 63 6f 6e   as response con
9c40: 74 65 6e 74 20 61 6e 64 20 69 73 20 0d 0a 2a 20  tent and is ..* 
9c50: 66 6f 72 6d 61 74 74 65 64 20 62 79 20 74 68 65  formatted by the
9c60: 20 61 63 63 6f 63 69 61 74 65 64 20 6c 61 79 6f   accociated layo
9c70: 75 74 2e 20 44 65 66 61 75 6c 74 20 6c 61 79 6f  ut. Default layo
9c80: 75 74 20 69 73 20 7b 40 6c 69 6e 6b 20 4c 6f 67  ut is {@link Log
9c90: 34 6a 73 2e 58 4d 4c 4c 61 79 6f 75 74 7d 2e 20  4js.XMLLayout}. 
9ca0: 0d 0a 2a 20 54 68 65 20 3c 63 6f 64 65 3e 74 68  ..* The <code>th
9cb0: 72 65 73 68 6f 6c 64 3c 2f 63 6f 64 65 3e 20 64  reshold</code> d
9cc0: 65 66 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20  efines when the 
9cd0: 6c 6f 67 73 20 0d 0a 2a 20 73 68 6f 75 6c 64 20  logs ..* should 
9ce0: 62 65 20 73 65 6e 64 20 74 6f 20 74 68 65 20 73  be send to the s
9cf0: 65 72 76 65 72 2e 20 42 79 20 64 65 66 61 75 6c  erver. By defaul
9d00: 74 20 65 76 65 72 79 20 65 76 65 6e 74 20 69 73  t every event is
9d10: 20 73 65 6e 74 20 6f 6e 20 69 74 73 0d 0a 2a 20   sent on its..* 
9d20: 6f 77 6e 20 28 74 68 72 65 73 68 6f 6c 64 3d 31  own (threshold=1
9d30: 29 2e 20 49 66 20 69 74 20 69 73 20 73 65 74 20  ). If it is set 
9d40: 74 6f 20 31 30 2c 20 74 68 65 6e 20 74 68 65 20  to 10, then the 
9d50: 65 76 65 6e 74 73 20 61 72 65 20 73 65 6e 64 20  events are send 
9d60: 69 6e 20 67 72 6f 75 70 73 20 6f 66 0d 0a 2a 20  in groups of..* 
9d70: 31 30 20 65 76 65 6e 74 73 2e 0d 0a 2a 0d 0a 2a  10 events...*..*
9d80: 20 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73   @extends Log4js
9d90: 2e 41 70 70 65 6e 64 65 72 20 0d 0a 2a 20 40 63  .Appender ..* @c
9da0: 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40 70  onstructor..* @p
9db0: 61 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 6f 67  aram {Log4js.Log
9dc0: 67 65 72 7d 20 6c 6f 67 67 65 72 20 6c 6f 67 34  ger} logger log4
9dd0: 6a 73 20 69 6e 73 74 61 6e 63 65 20 74 68 69 73  js instance this
9de0: 20 61 70 70 65 6e 64 65 72 20 69 73 20 61 74 74   appender is att
9df0: 61 63 68 65 64 20 74 6f 0d 0a 2a 20 40 70 61 72  ached to..* @par
9e00: 61 6d 20 7b 53 74 72 69 6e 67 7d 20 6c 6f 67 67  am {String} logg
9e10: 69 6e 67 55 72 6c 20 75 72 6c 20 77 68 65 72 65  ingUrl url where
9e20: 20 61 70 70 65 6e 64 65 72 20 77 69 6c 6c 20 70   appender will p
9e30: 6f 73 74 20 6c 6f 67 20 6d 65 73 73 61 67 65 73  ost log messages
9e40: 20 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53   to..* @author S
9e50: 74 65 70 68 61 6e 20 53 74 72 69 74 74 6d 61 74  tephan Strittmat
9e60: 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e  ter..*/..Log4js.
9e70: 41 6a 61 78 41 70 70 65 6e 64 65 72 20 3d 20 66  AjaxAppender = f
9e80: 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 55  unction(loggingU
9e90: 72 6c 29 20 7b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a  rl) {....    /**
9ea0: 0d 0a 20 20 20 20 2a 20 69 73 20 73 74 69 6c 6c  ..    * is still
9eb0: 20 65 73 6e 64 69 6e 67 20 64 61 74 61 20 74 6f   esnding data to
9ec0: 20 73 65 72 76 65 72 0d 0a 20 20 20 20 2a 20 40   server..    * @
9ed0: 74 79 70 65 20 62 6f 6f 6c 65 61 6e 0d 0a 20 20  type boolean..  
9ee0: 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 20    * @private..  
9ef0: 20 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 69    */..    this.i
9f00: 73 49 6e 50 72 6f 67 72 65 73 73 20 3d 20 66 61  sInProgress = fa
9f10: 6c 73 65 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20  lse;..    ..    
9f20: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 74 79 70 65  /**..    * @type
9f30: 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40   String..    * @
9f40: 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d  private..    */.
9f50: 0a 20 20 20 20 74 68 69 73 2e 6c 6f 67 67 69 6e  .    this.loggin
9f60: 67 55 72 6c 20 3d 20 6c 6f 67 67 69 6e 67 55 72  gUrl = loggingUr
9f70: 6c 20 7c 7c 20 22 6c 6f 67 67 69 6e 67 2e 6c 6f  l || "logging.lo
9f80: 67 34 6a 73 22 3b 0d 0a 20 20 20 20 0d 0a 20 20  g4js";..    ..  
9f90: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 74 79    /**..    * @ty
9fa0: 70 65 20 49 6e 74 65 67 65 72 0d 0a 20 20 20 20  pe Integer..    
9fb0: 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20  * @private..    
9fc0: 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 74 68 72  */..    this.thr
9fd0: 65 73 68 6f 6c 64 20 3d 20 31 3b 0d 0a 20 20 20  eshold = 1;..   
9fe0: 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20   ..    /**..    
9ff0: 2a 20 74 69 6d 65 6f 75 74 20 77 68 65 6e 20 72  * timeout when r
a000: 65 71 75 65 73 74 20 69 73 20 61 62 6f 72 74 65  equest is aborte
a010: 64 2e 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61  d...    * @priva
a020: 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  te..    */..    
a030: 74 68 69 73 2e 74 69 6d 65 6f 75 74 20 3d 20 32  this.timeout = 2
a040: 30 30 30 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20  000;..    ..    
a050: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 4c 69 73 74 20  /**..    * List 
a060: 6f 66 20 4c 6f 67 67 69 6e 67 45 76 65 6e 74 73  of LoggingEvents
a070: 20 77 68 69 63 68 20 73 68 6f 75 6c 64 20 62 65   which should be
a080: 20 73 65 6e 64 20 61 66 74 65 72 20 74 68 72 65   send after thre
a090: 73 68 6f 6c 64 20 69 73 20 72 65 61 63 68 65 64  shold is reached
a0a0: 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 4d  ...    * @type M
a0b0: 61 70 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61  ap..    * @priva
a0c0: 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  te..    */..    
a0d0: 74 68 69 73 2e 6c 6f 67 67 69 6e 67 45 76 65 6e  this.loggingEven
a0e0: 74 4d 61 70 20 3d 20 6e 65 77 20 4c 6f 67 34 6a  tMap = new Log4j
a0f0: 73 2e 46 69 66 6f 42 75 66 66 65 72 28 29 3b 0d  s.FifoBuffer();.
a100: 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20  ...    /**..    
a110: 2a 20 40 74 79 70 65 20 4c 6f 67 34 6a 73 2e 4c  * @type Log4js.L
a120: 61 79 6f 75 74 0d 0a 20 20 20 20 2a 20 40 70 72  ayout..    * @pr
a130: 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ivate..    */.. 
a140: 20 20 20 74 68 69 73 2e 6c 61 79 6f 75 74 20 3d     this.layout =
a150: 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 58 4d 4c 4c   new Log4js.XMLL
a160: 61 79 6f 75 74 28 29 3b 0d 0a 20 20 20 20 2f 2a  ayout();..    /*
a170: 2a 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 58  *..    * @type X
a180: 4d 4c 48 74 74 70 52 65 71 75 65 73 74 0d 0a 20  MLHttpRequest.. 
a190: 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20     * @private.. 
a1a0: 20 20 20 2a 2f 09 0d 0a 20 20 20 20 74 68 69 73     */...    this
a1b0: 2e 68 74 74 70 52 65 71 75 65 73 74 20 3d 20 6e  .httpRequest = n
a1c0: 75 6c 6c 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34  ull;..};....Log4
a1d0: 6a 73 2e 41 6a 61 78 41 70 70 65 6e 64 65 72 2e  js.AjaxAppender.
a1e0: 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34  prototype = Log4
a1f0: 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f  js.extend(new Lo
a200: 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c  g4js.Appender(),
a210: 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20   {  ..    /**.. 
a220: 20 20 20 2a 20 73 65 6e 64 73 20 74 68 65 20 6c     * sends the l
a230: 6f 67 73 20 74 6f 20 74 68 65 20 73 65 72 76 65  ogs to the serve
a240: 72 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20  r..    * @param 
a250: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 65 76 65  loggingEvent eve
a260: 6e 74 20 74 6f 20 62 65 20 6c 6f 67 67 65 64 0d  nt to be logged.
a270: 0a 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34  .    * @see Log4
a280: 6a 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70  js.Appender#doAp
a290: 70 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  pend..    */..  
a2a0: 20 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63    doAppend: func
a2b0: 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e  tion(loggingEven
a2c0: 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f  t) {..        lo
a2d0: 67 34 6a 73 4c 6f 67 67 65 72 2e 74 72 61 63 65  g4jsLogger.trace
a2e0: 28 22 3e 20 41 6a 61 78 41 70 70 65 6e 64 65 72  ("> AjaxAppender
a2f0: 2e 61 70 70 65 6e 64 22 29 3b 0d 0a 20 20 20 20  .append");..    
a300: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68  ..        if (th
a310: 69 73 2e 6c 6f 67 67 69 6e 67 45 76 65 6e 74 4d  is.loggingEventM
a320: 61 70 2e 6c 65 6e 67 74 68 28 29 20 3c 3d 20 74  ap.length() <= t
a330: 68 69 73 2e 74 68 72 65 73 68 6f 6c 64 20 7c 7c  his.threshold ||
a340: 20 74 68 69 73 2e 69 73 49 6e 50 72 6f 67 72 65   this.isInProgre
a350: 73 73 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0d 0a  ss === true) {..
a360: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
a370: 2e 6c 6f 67 67 69 6e 67 45 76 65 6e 74 4d 61 70  .loggingEventMap
a380: 2e 70 75 73 68 28 6c 6f 67 67 69 6e 67 45 76 65  .push(loggingEve
a390: 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  nt);..        }.
a3a0: 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20  .        ..     
a3b0: 20 20 20 69 66 28 74 68 69 73 2e 6c 6f 67 67 69     if(this.loggi
a3c0: 6e 67 45 76 65 6e 74 4d 61 70 2e 6c 65 6e 67 74  ngEventMap.lengt
a3d0: 68 28 29 20 3e 3d 20 74 68 69 73 2e 74 68 72 65  h() >= this.thre
a3e0: 73 68 6f 6c 64 20 26 26 20 74 68 69 73 2e 69 73  shold && this.is
a3f0: 49 6e 50 72 6f 67 72 65 73 73 20 3d 3d 3d 20 66  InProgress === f
a400: 61 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  alse) {..       
a410: 20 20 20 20 20 2f 2f 69 66 20 74 68 72 65 73 68       //if thresh
a420: 6f 6c 64 20 69 73 20 72 65 61 63 68 65 64 20 73  old is reached s
a430: 65 6e 64 20 74 68 65 20 65 76 65 6e 74 73 20 61  end the events a
a440: 6e 64 20 72 65 73 65 74 20 63 75 72 72 65 6e 74  nd reset current
a450: 20 74 68 72 65 73 68 6f 6c 64 0d 0a 20 20 20 20   threshold..    
a460: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 6e          this.sen
a470: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  d();..        }.
a480: 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20  .        ..     
a490: 20 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e     log4jsLogger.
a4a0: 74 72 61 63 65 28 22 3c 20 41 6a 61 78 41 70 70  trace("< AjaxApp
a4b0: 65 6e 64 65 72 2e 61 70 70 65 6e 64 22 29 3b 0d  ender.append");.
a4c0: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
a4d0: 20 20 20 2f 2a 2a 20 40 73 65 65 20 41 70 70 65     /** @see Appe
a4e0: 6e 64 65 72 23 64 6f 43 6c 65 61 72 20 2a 2f 0d  nder#doClear */.
a4f0: 0a 20 20 20 20 64 6f 43 6c 65 61 72 3a 20 66 75  .    doClear: fu
a500: 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
a510: 20 20 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72      log4jsLogger
a520: 2e 74 72 61 63 65 28 22 3e 20 41 6a 61 78 41 70  .trace("> AjaxAp
a530: 70 65 6e 64 65 72 2e 64 6f 43 6c 65 61 72 22 20  pender.doClear" 
a540: 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 28 74  );..        if(t
a550: 68 69 73 2e 6c 6f 67 67 69 6e 67 45 76 65 6e 74  his.loggingEvent
a560: 4d 61 70 2e 6c 65 6e 67 74 68 28 29 20 3e 20 30  Map.length() > 0
a570: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
a580: 20 74 68 69 73 2e 73 65 6e 64 28 29 3b 0d 0a 20   this.send();.. 
a590: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
a5a0: 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 74    log4jsLogger.t
a5b0: 72 61 63 65 28 22 3c 20 41 6a 61 78 41 70 70 65  race("< AjaxAppe
a5c0: 6e 64 65 72 2e 64 6f 43 6c 65 61 72 22 20 29 3b  nder.doClear" );
a5d0: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a  ..    },..    ..
a5e0: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 53      /**..    * S
a5f0: 65 74 20 74 68 65 20 74 68 72 65 73 68 6f 6c 64  et the threshold
a600: 20 77 68 65 6e 20 6c 6f 67 73 20 68 61 76 65 20   when logs have 
a610: 74 6f 20 62 65 20 73 65 6e 64 2e 20 44 65 66 61  to be send. Defa
a620: 75 6c 74 20 74 68 72 65 73 68 6f 6c 64 20 69 73  ult threshold is
a630: 20 31 2e 0d 0a 20 20 20 20 2a 20 40 70 72 61 72   1...    * @prar
a640: 61 6d 20 7b 69 6e 74 7d 20 74 68 72 65 73 68 6f  am {int} thresho
a650: 6c 64 20 6e 65 77 20 74 68 72 65 73 68 6f 6c 64  ld new threshold
a660: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 73 65  ..    */..    se
a670: 74 54 68 72 65 73 68 6f 6c 64 3a 20 66 75 6e 63  tThreshold: func
a680: 74 69 6f 6e 28 74 68 72 65 73 68 6f 6c 64 29 20  tion(threshold) 
a690: 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a  {..        log4j
a6a0: 73 4c 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3e  sLogger.trace(">
a6b0: 20 41 6a 61 78 41 70 70 65 6e 64 65 72 2e 73 65   AjaxAppender.se
a6c0: 74 54 68 72 65 73 68 6f 6c 64 3a 20 22 20 2b 20  tThreshold: " + 
a6d0: 74 68 72 65 73 68 6f 6c 64 20 29 3b 0d 0a 20 20  threshold );..  
a6e0: 20 20 20 20 20 20 74 68 69 73 2e 74 68 72 65 73        this.thres
a6f0: 68 6f 6c 64 20 3d 20 74 68 72 65 73 68 6f 6c 64  hold = threshold
a700: 3b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a  ;..        log4j
a710: 73 4c 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3c  sLogger.trace("<
a720: 20 41 6a 61 78 41 70 70 65 6e 64 65 72 2e 73 65   AjaxAppender.se
a730: 74 54 68 72 65 73 68 6f 6c 64 22 20 29 3b 0d 0a  tThreshold" );..
a740: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20      },..    ..  
a750: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 53 65 74    /**..    * Set
a760: 20 74 68 65 20 74 69 6d 65 6f 75 74 20 69 6e 20   the timeout in 
a770: 6d 69 6c 6c 69 20 73 65 63 6f 6e 64 73 20 75 6e  milli seconds un
a780: 74 69 6c 20 73 65 6e 64 69 6e 67 20 72 65 71 75  til sending requ
a790: 65 73 74 20 69 73 20 61 62 6f 72 74 65 64 2e 0d  est is aborted..
a7a0: 0a 20 20 20 20 2a 20 44 65 66 61 75 6c 74 20 69  .    * Default i
a7b0: 73 20 32 30 30 30 20 6d 73 2e 0d 0a 20 20 20 20  s 2000 ms...    
a7c0: 2a 20 40 70 61 72 61 6d 20 7b 69 6e 74 7d 20 6d  * @param {int} m
a7d0: 69 6c 6c 69 73 65 63 6f 6e 64 73 20 74 68 65 20  illiseconds the 
a7e0: 6e 65 77 20 74 69 6d 65 6f 75 74 0d 0a 20 20 20  new timeout..   
a7f0: 20 2a 2f 0d 0a 20 20 20 20 73 65 74 54 69 6d 65   */..    setTime
a800: 6f 75 74 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 69  out: function(mi
a810: 6c 6c 69 73 65 63 6f 6e 64 73 29 20 7b 0d 0a 20  lliseconds) {.. 
a820: 20 20 20 20 20 20 20 74 68 69 73 2e 74 69 6d 65         this.time
a830: 6f 75 74 20 3d 20 6d 69 6c 6c 69 73 65 63 6f 6e  out = millisecon
a840: 64 73 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  ds;..    },..   
a850: 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20   ..    /**..    
a860: 2a 20 73 65 6e 64 20 74 68 65 20 72 65 71 75 65  * send the reque
a870: 73 74 2e 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  st...    */..   
a880: 20 73 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e 28   send: function(
a890: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 28  ) {..        if(
a8a0: 74 68 69 73 2e 6c 6f 67 67 69 6e 67 45 76 65 6e  this.loggingEven
a8b0: 74 4d 61 70 2e 6c 65 6e 67 74 68 28 29 20 3e 30  tMap.length() >0
a8c0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
a8d0: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c   ..            l
a8e0: 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 74 72 61 63  og4jsLogger.trac
a8f0: 65 28 22 3e 20 41 6a 61 78 41 70 70 65 6e 64 65  e("> AjaxAppende
a900: 72 2e 73 65 6e 64 22 29 3b 0d 0a 20 20 20 20 20  r.send");..     
a910: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
a920: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20       ..         
a930: 20 20 20 74 68 69 73 2e 69 73 49 6e 50 72 6f 67     this.isInProg
a940: 72 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20  ress = true;..  
a950: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 61 20            var a 
a960: 3d 20 5b 5d 3b 0d 0a 20 20 20 20 0d 0a 20 20 20  = [];..    ..   
a970: 20 20 20 20 20 20 20 20 20 66 6f 72 28 76 61 72           for(var
a980: 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73   i = 0; i < this
a990: 2e 6c 6f 67 67 69 6e 67 45 76 65 6e 74 4d 61 70  .loggingEventMap
a9a0: 2e 6c 65 6e 67 74 68 28 29 20 26 26 20 69 20 3c  .length() && i <
a9b0: 20 74 68 69 73 2e 74 68 72 65 73 68 6f 6c 64 3b   this.threshold;
a9c0: 20 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20   i++) {..       
a9d0: 20 20 20 20 20 20 20 20 20 61 2e 70 75 73 68 28           a.push(
a9e0: 74 68 69 73 2e 6c 61 79 6f 75 74 2e 66 6f 72 6d  this.layout.form
a9f0: 61 74 28 74 68 69 73 2e 6c 6f 67 67 69 6e 67 45  at(this.loggingE
aa00: 76 65 6e 74 4d 61 70 2e 70 75 6c 6c 28 29 29 29  ventMap.pull()))
aa10: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
aa20: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ..             
aa30: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
aa40: 20 20 20 20 20 76 61 72 20 63 6f 6e 74 65 6e 74       var content
aa50: 20 3d 20 74 68 69 73 2e 6c 61 79 6f 75 74 2e 67   = this.layout.g
aa60: 65 74 48 65 61 64 65 72 28 29 3b 09 0d 0a 20 20  etHeader();...  
aa70: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e            conten
aa80: 74 20 2b 3d 20 61 2e 6a 6f 69 6e 28 74 68 69 73  t += a.join(this
aa90: 2e 6c 61 79 6f 75 74 2e 67 65 74 53 65 70 61 72  .layout.getSepar
aaa0: 61 74 6f 72 28 29 29 3b 0d 0a 20 20 20 20 20 20  ator());..      
aab0: 20 20 20 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d        content +=
aac0: 20 74 68 69 73 2e 6c 61 79 6f 75 74 2e 67 65 74   this.layout.get
aad0: 46 6f 6f 74 65 72 28 29 3b 0d 0a 20 20 20 20 20  Footer();..     
aae0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
aaf0: 20 20 20 20 20 76 61 72 20 61 70 70 65 6e 64 65       var appende
ab00: 72 20 3d 20 74 68 69 73 3b 0d 0a 20 20 20 20 20  r = this;..     
ab10: 20 20 20 20 20 20 20 69 66 28 74 68 69 73 2e 68         if(this.h
ab20: 74 74 70 52 65 71 75 65 73 74 20 3d 3d 3d 20 6e  ttpRequest === n
ab30: 75 6c 6c 29 7b 0d 0a 20 20 20 20 20 20 20 20 20  ull){..         
ab40: 20 20 20 20 20 20 20 74 68 69 73 2e 68 74 74 70         this.http
ab50: 52 65 71 75 65 73 74 20 3d 20 74 68 69 73 2e 67  Request = this.g
ab60: 65 74 58 6d 6c 48 74 74 70 52 65 71 75 65 73 74  etXmlHttpRequest
ab70: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
ab80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
ab90: 74 68 69 73 2e 68 74 74 70 52 65 71 75 65 73 74  this.httpRequest
aba0: 2e 6f 6e 72 65 61 64 79 73 74 61 74 65 63 68 61  .onreadystatecha
abb0: 6e 67 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29  nge = function()
abc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
abd0: 20 20 20 20 61 70 70 65 6e 64 65 72 2e 6f 6e 52      appender.onR
abe0: 65 61 64 79 53 74 61 74 65 43 68 61 6e 67 65 64  eadyStateChanged
abf0: 2e 63 61 6c 6c 28 61 70 70 65 6e 64 65 72 29 3b  .call(appender);
ac00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b  ..            };
ac10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a  ..            ..
ac20: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
ac30: 2e 68 74 74 70 52 65 71 75 65 73 74 2e 6f 70 65  .httpRequest.ope
ac40: 6e 28 22 50 4f 53 54 22 2c 20 74 68 69 73 2e 6c  n("POST", this.l
ac50: 6f 67 67 69 6e 67 55 72 6c 2c 20 74 72 75 65 29  oggingUrl, true)
ac60: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ;..            /
ac70: 2f 20 73 65 74 20 74 68 65 20 72 65 71 75 65 73  / set the reques
ac80: 74 20 68 65 61 64 65 72 73 2e 0d 0a 20 20 20 20  t headers...    
ac90: 20 20 20 20 20 20 20 20 2f 2f 74 68 69 73 2e 68          //this.h
aca0: 74 74 70 52 65 71 75 65 73 74 2e 73 65 74 52 65  ttpRequest.setRe
acb0: 71 75 65 73 74 48 65 61 64 65 72 28 22 43 6f 6e  questHeader("Con
acc0: 74 65 6e 74 2d 74 79 70 65 22 2c 20 22 61 70 70  tent-type", "app
acd0: 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 77 2d 66  lication/x-www-f
ace0: 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 22 29  orm-urlencoded")
acf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
ad00: 68 69 73 2e 68 74 74 70 52 65 71 75 65 73 74 2e  his.httpRequest.
ad10: 73 65 74 52 65 71 75 65 73 74 48 65 61 64 65 72  setRequestHeader
ad20: 28 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 22 2c  ("Content-type",
ad30: 20 74 68 69 73 2e 6c 61 79 6f 75 74 2e 67 65 74   this.layout.get
ad40: 43 6f 6e 74 65 6e 74 54 79 70 65 28 29 29 3b 0d  ContentType());.
ad50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 52  .            //R
ad60: 45 46 45 52 45 52 20 77 69 6c 6c 20 62 65 20 74  EFERER will be t
ad70: 68 65 20 74 6f 70 2d 6c 65 76 65 6c 0d 0a 20 20  he top-level..  
ad80: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 52 49            // URI
ad90: 20 77 68 69 63 68 20 6d 61 79 20 64 69 66 66 65   which may diffe
ada0: 72 20 66 72 6f 6d 20 74 68 65 20 6c 6f 63 61 74  r from the locat
adb0: 69 6f 6e 20 6f 66 20 74 68 65 20 65 72 72 6f 72  ion of the error
adc0: 20 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20   if..           
add0: 20 2f 2f 20 69 74 20 6f 63 63 75 72 73 20 69 6e   // it occurs in
ade0: 20 61 6e 20 69 6e 63 6c 75 64 65 64 20 2e 6a 73   an included .js
adf0: 20 66 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 20   file..         
ae00: 20 20 20 74 68 69 73 2e 68 74 74 70 52 65 71 75     this.httpRequ
ae10: 65 73 74 2e 73 65 74 52 65 71 75 65 73 74 48 65  est.setRequestHe
ae20: 61 64 65 72 28 22 52 45 46 45 52 45 52 22 2c 20  ader("REFERER", 
ae30: 6c 6f 63 61 74 69 6f 6e 2e 68 72 65 66 29 3b 0d  location.href);.
ae40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
ae50: 73 2e 68 74 74 70 52 65 71 75 65 73 74 2e 73 65  s.httpRequest.se
ae60: 74 52 65 71 75 65 73 74 48 65 61 64 65 72 28 22  tRequestHeader("
ae70: 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 22 2c  Content-length",
ae80: 20 63 6f 6e 74 65 6e 74 2e 6c 65 6e 67 74 68 29   content.length)
ae90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
aea0: 68 69 73 2e 68 74 74 70 52 65 71 75 65 73 74 2e  his.httpRequest.
aeb0: 73 65 74 52 65 71 75 65 73 74 48 65 61 64 65 72  setRequestHeader
aec0: 28 22 43 6f 6e 6e 65 63 74 69 6f 6e 22 2c 20 22  ("Connection", "
aed0: 63 6c 6f 73 65 22 29 3b 0d 0a 20 20 20 20 20 20  close");..      
aee0: 20 20 20 20 20 20 74 68 69 73 2e 68 74 74 70 52        this.httpR
aef0: 65 71 75 65 73 74 2e 73 65 6e 64 28 20 63 6f 6e  equest.send( con
af00: 74 65 6e 74 20 29 3b 0d 0a 20 20 20 20 20 20 20  tent );..       
af10: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20       ..         
af20: 20 20 20 61 70 70 65 6e 64 65 72 20 3d 20 74 68     appender = th
af30: 69 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  is;..           
af40: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74   ..            t
af50: 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry {..          
af60: 20 20 20 20 20 20 77 69 6e 64 6f 77 2e 73 65 74        window.set
af70: 54 69 6d 65 6f 75 74 28 66 75 6e 63 74 69 6f 6e  Timeout(function
af80: 28 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  (){..           
af90: 20 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c           log4jsL
afa0: 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3e 20 41  ogger.trace("> A
afb0: 6a 61 78 41 70 70 65 6e 64 65 72 2e 74 69 6d 65  jaxAppender.time
afc0: 6f 75 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  out");..        
afd0: 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 65              appe
afe0: 6e 64 65 72 2e 68 74 74 70 52 65 71 75 65 73 74  nder.httpRequest
aff0: 2e 6f 6e 72 65 61 64 79 73 74 61 74 65 63 68 61  .onreadystatecha
b000: 6e 67 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29  nge = function()
b010: 7b 72 65 74 75 72 6e 3b 7d 3b 0d 0a 20 20 20 20  {return;};..    
b020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b030: 61 70 70 65 6e 64 65 72 2e 68 74 74 70 52 65 71  appender.httpReq
b040: 75 65 73 74 2e 61 62 6f 72 74 28 29 3b 0d 0a 20  uest.abort();.. 
b050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b060: 20 20 20 2f 2f 74 68 69 73 2e 68 74 74 70 52 65     //this.httpRe
b070: 71 75 65 73 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  quest = null;.. 
b080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b090: 20 20 20 61 70 70 65 6e 64 65 72 2e 69 73 49 6e     appender.isIn
b0a0: 50 72 6f 67 72 65 73 73 20 3d 20 66 61 6c 73 65  Progress = false
b0b0: 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ;..        ..   
b0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b0d0: 20 69 66 28 61 70 70 65 6e 64 65 72 2e 6c 6f 67   if(appender.log
b0e0: 67 69 6e 67 45 76 65 6e 74 4d 61 70 2e 6c 65 6e  gingEventMap.len
b0f0: 67 74 68 28 29 20 3e 20 30 29 20 7b 0d 0a 20 20  gth() > 0) {..  
b100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b110: 20 20 20 20 20 20 61 70 70 65 6e 64 65 72 2e 73        appender.s
b120: 65 6e 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  end();..        
b130: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
b140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b150: 20 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e     log4jsLogger.
b160: 74 72 61 63 65 28 22 3c 20 41 6a 61 78 41 70 70  trace("< AjaxApp
b170: 65 6e 64 65 72 2e 74 69 6d 65 6f 75 74 22 29 3b  ender.timeout");
b180: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b190: 20 20 7d 2c 20 74 68 69 73 2e 74 69 6d 65 6f 75    }, this.timeou
b1a0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t);..           
b1b0: 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d 0a   } catch (e) {..
b1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1d0: 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 66 61 74  log4jsLogger.fat
b1e0: 61 6c 28 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  al(e);..        
b1f0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
b200: 20 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e     log4jsLogger.
b210: 74 72 61 63 65 28 22 3e 20 41 6a 61 78 41 70 70  trace("> AjaxApp
b220: 65 6e 64 65 72 2e 73 65 6e 64 22 29 3b 0d 0a 20  ender.send");.. 
b230: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c         }..    },
b240: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d  ..    ..    /**.
b250: 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d  .    * @private.
b260: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 6f 6e 52  .    */..    onR
b270: 65 61 64 79 53 74 61 74 65 43 68 61 6e 67 65 64  eadyStateChanged
b280: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a  : function() {..
b290: 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c 6f          log4jsLo
b2a0: 67 67 65 72 2e 74 72 61 63 65 28 22 3e 20 41 6a  gger.trace("> Aj
b2b0: 61 78 41 70 70 65 6e 64 65 72 2e 6f 6e 52 65 61  axAppender.onRea
b2c0: 64 79 53 74 61 74 65 43 68 61 6e 67 65 64 22 29  dyStateChanged")
b2d0: 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 72  ;..        var r
b2e0: 65 71 20 3d 20 74 68 69 73 2e 68 74 74 70 52 65  eq = this.httpRe
b2f0: 71 75 65 73 74 3b 0d 0a 20 20 20 20 20 20 20 20  quest;..        
b300: 69 66 20 28 74 68 69 73 2e 68 74 74 70 52 65 71  if (this.httpReq
b310: 75 65 73 74 2e 72 65 61 64 79 53 74 61 74 65 20  uest.readyState 
b320: 21 3d 20 34 29 20 7b 20 0d 0a 20 20 20 20 20 20  != 4) { ..      
b330: 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c 6f 67 67        log4jsLogg
b340: 65 72 2e 74 72 61 63 65 28 22 3c 20 41 6a 61 78  er.trace("< Ajax
b350: 41 70 70 65 6e 64 65 72 2e 6f 6e 52 65 61 64 79  Appender.onReady
b360: 53 74 61 74 65 43 68 61 6e 67 65 64 3a 20 72 65  StateChanged: re
b370: 61 64 79 53 74 61 74 65 20 22 20 2b 20 72 65 71  adyState " + req
b380: 2e 72 65 61 64 79 53 74 61 74 65 20 2b 20 22 20  .readyState + " 
b390: 21 3d 20 34 22 29 3b 0d 0a 20 20 20 20 20 20 20  != 4");..       
b3a0: 20 20 20 20 20 72 65 74 75 72 6e 3b 20 0d 0a 20       return; .. 
b3b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b3c0: 20 20 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20    ..        var 
b3d0: 73 75 63 63 65 73 73 20 3d 20 28 28 74 79 70 65  success = ((type
b3e0: 6f 66 20 72 65 71 2e 73 74 61 74 75 73 20 3d 3d  of req.status ==
b3f0: 3d 20 22 75 6e 64 65 66 69 6e 65 64 22 29 20 7c  = "undefined") |
b400: 7c 20 72 65 71 2e 73 74 61 74 75 73 20 3d 3d 3d  | req.status ===
b410: 20 30 20 7c 7c 20 28 72 65 71 2e 73 74 61 74 75   0 || (req.statu
b420: 73 20 3e 3d 20 32 30 30 20 26 26 20 72 65 71 2e  s >= 200 && req.
b430: 73 74 61 74 75 73 20 3c 20 33 30 30 29 29 3b 0d  status < 300));.
b440: 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20  .        ..     
b450: 20 20 20 69 66 20 28 73 75 63 63 65 73 73 29 20     if (success) 
b460: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  {..            l
b470: 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 74 72 61 63  og4jsLogger.trac
b480: 65 28 22 20 20 41 6a 61 78 41 70 70 65 6e 64 65  e("  AjaxAppende
b490: 72 2e 6f 6e 52 65 61 64 79 53 74 61 74 65 43 68  r.onReadyStateCh
b4a0: 61 6e 67 65 64 3a 20 73 75 63 63 65 73 73 22 29  anged: success")
b4b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b4c0: 20 2f 2f 72 65 61 64 79 20 73 65 6e 64 69 6e 67   //ready sending
b4d0: 20 64 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20   data..         
b4e0: 20 20 20 74 68 69 73 2e 69 73 49 6e 50 72 6f 67     this.isInProg
b4f0: 72 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  ress = false;...
b500: 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20  .        } else 
b510: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76  {..            v
b520: 61 72 20 6d 73 67 20 3d 20 22 20 20 41 6a 61 78  ar msg = "  Ajax
b530: 41 70 70 65 6e 64 65 72 2e 6f 6e 52 65 61 64 79  Appender.onReady
b540: 53 74 61 74 65 43 68 61 6e 67 65 64 3a 20 58 4d  StateChanged: XM
b550: 4c 48 74 74 70 52 65 71 75 65 73 74 20 72 65 71  LHttpRequest req
b560: 75 65 73 74 20 74 6f 20 55 52 4c 20 22 20 2b 20  uest to URL " + 
b570: 74 68 69 73 2e 6c 6f 67 67 69 6e 67 55 72 6c 20  this.loggingUrl 
b580: 2b 20 22 20 72 65 74 75 72 6e 65 64 20 73 74 61  + " returned sta
b590: 74 75 73 20 63 6f 64 65 20 22 20 2b 20 74 68 69  tus code " + thi
b5a0: 73 2e 68 74 74 70 52 65 71 75 65 73 74 2e 73 74  s.httpRequest.st
b5b0: 61 74 75 73 3b 0d 0a 20 20 20 20 20 20 20 20 20  atus;..         
b5c0: 20 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e     log4jsLogger.
b5d0: 65 72 72 6f 72 28 6d 73 67 29 3b 0d 0a 20 20 20  error(msg);..   
b5e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b5f0: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73  ..        log4js
b600: 4c 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3c 20  Logger.trace("< 
b610: 41 6a 61 78 41 70 70 65 6e 64 65 72 2e 6f 6e 52  AjaxAppender.onR
b620: 65 61 64 79 53 74 61 74 65 43 68 61 6e 67 65 64  eadyStateChanged
b630: 3a 20 72 65 61 64 79 53 74 61 74 65 20 3d 3d 20  : readyState == 
b640: 34 22 29 3b 09 09 0d 0a 20 20 20 20 7d 2c 0d 0a  4");....    },..
b650: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 47      /**..    * G
b660: 65 74 20 74 68 65 20 58 4d 4c 48 74 74 70 52 65  et the XMLHttpRe
b670: 71 75 65 73 74 20 6f 62 6a 65 63 74 20 69 6e 64  quest object ind
b680: 65 70 65 6e 64 65 6e 74 20 6f 66 20 62 72 6f 77  ependent of brow
b690: 73 65 72 2e 0d 0a 20 20 20 20 2a 20 40 70 72 69  ser...    * @pri
b6a0: 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  vate..    */..  
b6b0: 20 20 67 65 74 58 6d 6c 48 74 74 70 52 65 71 75    getXmlHttpRequ
b6c0: 65 73 74 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  est: function() 
b6d0: 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a  {..        log4j
b6e0: 73 4c 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3e  sLogger.trace(">
b6f0: 20 41 6a 61 78 41 70 70 65 6e 64 65 72 2e 67 65   AjaxAppender.ge
b700: 74 58 6d 6c 48 74 74 70 52 65 71 75 65 73 74 22  tXmlHttpRequest"
b710: 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20  );..        ..  
b720: 20 20 20 20 20 20 76 61 72 20 68 74 74 70 52 65        var httpRe
b730: 71 75 65 73 74 20 3d 20 66 61 6c 73 65 3b 0d 0a  quest = false;..
b740: 0d 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b 09  ..        try {.
b750: 09 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
b760: 66 20 28 77 69 6e 64 6f 77 73 2e 58 4d 4c 48 74  f (windows.XMLHt
b770: 74 70 52 65 71 75 65 73 74 29 20 7b 20 2f 2f 20  tpRequest) { // 
b780: 4d 6f 7a 69 6c 6c 61 2c 20 53 61 66 61 72 69 2c  Mozilla, Safari,
b790: 20 49 45 37 2e 2e 2e 0d 0a 20 20 20 20 20 20 20   IE7.....       
b7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74               htt
b7b0: 70 52 65 71 75 65 73 74 20 3d 20 6e 65 77 20 58  pRequest = new X
b7c0: 4d 4c 48 74 74 70 52 65 71 75 65 73 74 28 29 3b  MLHttpRequest();
b7d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b7e0: 20 20 69 66 20 28 68 74 74 70 52 65 71 75 65 73    if (httpReques
b7f0: 74 2e 6f 76 65 72 72 69 64 65 4d 69 6d 65 54 79  t.overrideMimeTy
b800: 70 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  pe) {..         
b810: 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 52             httpR
b820: 65 71 75 65 73 74 2e 6f 76 65 72 72 69 64 65 4d  equest.overrideM
b830: 69 6d 65 54 79 70 65 28 74 68 69 73 2e 6c 61 79  imeType(this.lay
b840: 6f 75 74 2e 67 65 74 43 6f 6e 74 65 6e 74 54 79  out.getContentTy
b850: 70 65 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  pe());..        
b860: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
b870: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
b880: 20 28 77 69 6e 64 6f 77 73 2e 63 61 70 74 69 6f   (windows.captio
b890: 6e 29 20 7b 20 2f 2f 20 49 45 0d 0a 20 20 20 20  n) { // IE..    
b8a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 20              try 
b8b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b8c0: 20 20 20 20 20 20 20 68 74 74 70 52 65 71 75 65         httpReque
b8d0: 73 74 20 3d 20 6e 65 77 20 41 63 74 69 76 65 58  st = new ActiveX
b8e0: 4f 62 6a 65 63 74 28 22 4d 73 78 6d 6c 32 2e 58  Object("Msxml2.X
b8f0: 4d 4c 48 54 54 50 22 29 3b 0d 0a 20 20 20 20 20  MLHTTP");..     
b900: 20 20 20 20 20 20 20 20 20 20 20 7d 20 63 61 74             } cat
b910: 63 68 20 28 65 29 20 7b 0d 0a 20 20 20 20 20 20  ch (e) {..      
b920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74                ht
b930: 74 70 52 65 71 75 65 73 74 20 3d 20 6e 65 77 20  tpRequest = new 
b940: 41 63 74 69 76 65 58 4f 62 6a 65 63 74 28 22 4d  ActiveXObject("M
b950: 69 63 72 6f 73 6f 66 74 2e 58 4d 4c 48 54 54 50  icrosoft.XMLHTTP
b960: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
b970: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b980: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
b990: 20 63 61 74 63 68 20 28 65 29 20 7b 0d 0a 20 20   catch (e) {..  
b9a0: 20 20 20 20 20 20 20 20 20 20 68 74 74 70 52 65            httpRe
b9b0: 71 75 65 73 74 20 3d 20 66 61 6c 73 65 3b 0d 0a  quest = false;..
b9c0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
b9d0: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 69 66 20     ..        if 
b9e0: 28 21 68 74 74 70 52 65 71 75 65 73 74 29 20 7b  (!httpRequest) {
b9f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
ba00: 67 34 6a 73 4c 6f 67 67 65 72 2e 66 61 74 61 6c  g4jsLogger.fatal
ba10: 28 22 55 6e 66 6f 72 74 75 6e 61 74 65 6c 6c 79  ("Unfortunatelly
ba20: 20 79 6f 75 72 20 62 72 6f 77 73 65 72 20 64 6f   your browser do
ba30: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 41  es not support A
ba40: 6a 61 78 41 70 70 65 6e 64 65 72 20 66 6f 72 20  jaxAppender for 
ba50: 6c 6f 67 34 6a 73 21 22 29 3b 0d 0a 20 20 20 20  log4js!");..    
ba60: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d      }..        .
ba70: 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c  .        log4jsL
ba80: 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3c 20 41  ogger.trace("< A
ba90: 6a 61 78 41 70 70 65 6e 64 65 72 2e 67 65 74 58  jaxAppender.getX
baa0: 6d 6c 48 74 74 70 52 65 71 75 65 73 74 22 29 3b  mlHttpRequest");
bab0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
bac0: 20 68 74 74 70 52 65 71 75 65 73 74 3b 0d 0a 20   httpRequest;.. 
bad0: 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20     },..    ..   
bae0: 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 74 6f 53   /** ..    * toS
baf0: 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20  tring..    */.. 
bb00: 20 20 20 74 6f 53 74 72 69 6e 67 3a 20 66 75 6e     toString: fun
bb10: 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20  ction() {..     
bb20: 20 20 20 72 65 74 75 72 6e 20 22 4c 6f 67 34 6a     return "Log4j
bb30: 73 2e 41 6a 61 78 41 70 70 65 6e 64 65 72 5b 6c  s.AjaxAppender[l
bb40: 6f 67 67 69 6e 67 55 72 6c 3d 22 20 2b 20 74 68  oggingUrl=" + th
bb50: 69 73 2e 6c 6f 67 67 69 6e 67 55 72 6c 20 2b 20  is.loggingUrl + 
bb60: 22 2c 20 74 68 72 65 73 68 6f 6c 64 3d 22 20 2b  ", threshold=" +
bb70: 20 74 68 69 73 2e 74 68 72 65 73 68 6f 6c 64 20   this.threshold 
bb80: 2b 20 22 5d 22 3b 20 0d 0a 20 20 20 20 7d 0d 0a  + "]"; ..    }..
bb90: 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 46 69  });..../**..* Fi
bba0: 6c 65 20 41 70 70 65 6e 64 65 72 20 77 72 69 74  le Appender writ
bbb0: 69 6e 67 20 74 68 65 20 6c 6f 67 73 20 74 6f 20  ing the logs to 
bbc0: 61 20 74 65 78 74 20 66 69 6c 65 2e 0d 0a 2a 20  a text file...* 
bbd0: 50 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20 4f 6e  PLEASE NOTE - On
bbe0: 6c 79 20 77 6f 72 6b 73 20 69 6e 20 49 45 20 61  ly works in IE a
bbf0: 6e 64 20 4d 6f 7a 69 6c 6c 61 20 0d 0a 2a 20 75  nd Mozilla ..* u
bc00: 73 65 20 41 63 74 69 76 65 58 20 74 6f 20 77 72  se ActiveX to wr
bc10: 69 74 65 20 66 69 6c 65 20 6f 6e 20 49 45 0d 0a  ite file on IE..
bc20: 2a 20 75 73 65 20 58 50 43 6f 6d 20 63 6f 6d 70  * use XPCom comp
bc30: 6f 6e 65 6e 74 73 20 20 74 6f 20 77 72 69 74 65  onents  to write
bc40: 20 66 69 6c 65 20 6f 6e 20 4d 6f 7a 69 6c 6c 61   file on Mozilla
bc50: 0d 0a 2a 20 0d 0a 2a 20 40 65 78 74 65 6e 64 73  ..* ..* @extends
bc60: 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72   Log4js.Appender
bc70: 20 0d 0a 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f   ..* @constructo
bc80: 72 0d 0a 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67  r..* @param logg
bc90: 65 72 20 6c 6f 67 34 6a 73 20 69 6e 73 74 61 6e  er log4js instan
bca0: 63 65 20 74 68 69 73 20 61 70 70 65 6e 64 65 72  ce this appender
bcb0: 20 69 73 20 61 74 74 61 63 68 65 64 20 74 6f 0d   is attached to.
bcc0: 0a 2a 20 40 70 61 72 61 6d 20 66 69 6c 65 20 66  .* @param file f
bcd0: 69 6c 65 20 6c 6f 67 20 6d 65 73 73 61 67 65 73  ile log messages
bce0: 20 77 69 6c 6c 20 62 65 20 77 72 69 74 74 65 6e   will be written
bcf0: 20 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53   to..* @author S
bd00: 65 74 68 20 43 68 69 73 61 6d 6f 72 65 0d 0a 2a  eth Chisamore..*
bd10: 20 40 61 75 74 68 6f 72 20 4e 69 63 6f 6c 61 73   @author Nicolas
bd20: 20 4a 75 73 74 69 6e 20 6e 6a 75 73 74 69 6e 40   Justin njustin@
bd30: 69 64 65 61 6c 78 2e 63 6f 6d 0d 0a 2a 20 40 61  idealx.com..* @a
bd40: 75 74 68 6f 72 20 47 72 65 67 6f 72 79 20 4b 6f  uthor Gregory Ko
bd50: 6b 61 6e 6f 73 6b 79 20 67 6b 6f 6b 61 6e 6f 73  kanosky gkokanos
bd60: 6b 79 40 69 64 65 61 6c 78 2e 63 6f 6d 0d 0a 2a  ky@idealx.com..*
bd70: 2f 0d 0a 4c 6f 67 34 6a 73 2e 46 69 6c 65 41 70  /..Log4js.FileAp
bd80: 70 65 6e 64 65 72 20 3d 20 66 75 6e 63 74 69 6f  pender = functio
bd90: 6e 28 66 69 6c 65 29 20 7b 0d 0a 0d 0a 20 20 20  n(file) {....   
bda0: 20 74 68 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e   this.layout = n
bdb0: 65 77 20 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65  ew Log4js.Simple
bdc0: 4c 61 79 6f 75 74 28 29 3b 0d 0a 20 20 20 20 74  Layout();..    t
bdd0: 68 69 73 2e 69 73 49 45 20 3d 20 27 75 6e 64 65  his.isIE = 'unde
bde0: 66 69 6e 65 64 27 3b 0d 0a 20 20 20 20 0d 0a 20  fined';..    .. 
bdf0: 20 20 20 74 68 69 73 2e 66 69 6c 65 20 3d 20 66     this.file = f
be00: 69 6c 65 20 7c 7c 20 22 6c 6f 67 34 6a 73 2e 6c  ile || "log4js.l
be10: 6f 67 22 3b 09 0d 0a 20 20 20 20 0d 0a 20 20 20  og";...    ..   
be20: 20 74 72 79 7b 0d 0a 20 20 20 20 20 20 20 20 74   try{..        t
be30: 68 69 73 2e 66 73 6f 20 3d 20 6e 65 77 20 41 63  his.fso = new Ac
be40: 74 69 76 65 58 4f 62 6a 65 63 74 28 22 53 63 72  tiveXObject("Scr
be50: 69 70 74 69 6e 67 2e 46 69 6c 65 53 79 73 74 65  ipting.FileSyste
be60: 6d 4f 62 6a 65 63 74 22 29 3b 0d 0a 20 20 20 20  mObject");..    
be70: 20 20 20 20 74 68 69 73 2e 69 73 49 45 20 3d 20      this.isIE = 
be80: 74 72 75 65 3b 0d 0a 20 20 20 20 7d 20 63 61 74  true;..    } cat
be90: 63 68 28 65 29 7b 0d 0a 20 20 20 20 20 20 20 20  ch(e){..        
bea0: 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  try {..         
beb0: 20 20 20 6e 65 74 73 63 61 70 65 2e 73 65 63 75     netscape.secu
bec0: 72 69 74 79 2e 50 72 69 76 69 6c 65 67 65 4d 61  rity.PrivilegeMa
bed0: 6e 61 67 65 72 2e 65 6e 61 62 6c 65 50 72 69 76  nager.enablePriv
bee0: 69 6c 65 67 65 28 22 55 6e 69 76 65 72 73 61 6c  ilege("Universal
bef0: 58 50 43 6f 6e 6e 65 63 74 22 29 3b 0d 0a 20 20  XPConnect");..  
bf00: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66            this.f
bf10: 73 6f 20 3d 20 20 43 6f 6d 70 6f 6e 65 6e 74 73  so =  Components
bf20: 2e 63 6c 61 73 73 65 73 5b 22 40 6d 6f 7a 69 6c  .classes["@mozil
bf30: 6c 61 2e 6f 72 67 2f 66 69 6c 65 2f 6c 6f 63 61  la.org/file/loca
bf40: 6c 3b 31 22 5d 2e 63 72 65 61 74 65 49 6e 73 74  l;1"].createInst
bf50: 61 6e 63 65 28 43 6f 6d 70 6f 6e 65 6e 74 73 2e  ance(Components.
bf60: 69 6e 74 65 72 66 61 63 65 73 2e 6e 73 49 4c 6f  interfaces.nsILo
bf70: 63 61 6c 46 69 6c 65 29 3b 0d 0a 20 20 20 20 20  calFile);..     
bf80: 20 20 20 20 20 20 20 74 68 69 73 2e 69 73 49 45         this.isIE
bf90: 20 3d 20 66 61 6c 73 65 3b 20 2f 2f 6d 6f 7a 69   = false; //mozi
bfa0: 6c 6c 61 20 26 20 63 6f 0d 0a 20 20 20 20 20 20  lla & co..      
bfb0: 20 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d    } catch (e) {.
bfc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67  .            log
bfd0: 34 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28  4jsLogger.error(
bfe0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
bff0: 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67      }..};....Log
c000: 34 6a 73 2e 46 69 6c 65 41 70 70 65 6e 64 65 72  4js.FileAppender
c010: 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67  .prototype = Log
c020: 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c  4js.extend(new L
c030: 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29  og4js.Appender()
c040: 2c 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a  , {  ..    /**..
c050: 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6c 6f 67      * @param log
c060: 67 69 6e 67 45 76 65 6e 74 20 65 76 65 6e 74 20  gingEvent event 
c070: 74 6f 20 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20  to be logged..  
c080: 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a 73 2e    * @see Log4js.
c090: 41 70 70 65 6e 64 65 72 23 64 6f 41 70 70 65 6e  Appender#doAppen
c0a0: 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64  d..    */..    d
c0b0: 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63 74 69 6f  oAppend: functio
c0c0: 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20  n(loggingEvent) 
c0d0: 7b 0d 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b  {..        try {
c0e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61  ..            va
c0f0: 72 20 66 69 6c 65 48 61 6e 64 6c 65 20 3d 20 6e  r fileHandle = n
c100: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
c110: 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20    ..            
c120: 69 66 28 20 74 68 69 73 2e 69 73 49 45 20 3d 3d  if( this.isIE ==
c130: 3d 20 27 75 6e 64 65 66 69 6e 65 64 27 29 20 7b  = 'undefined') {
c140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c150: 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 65    log4jsLogger.e
c160: 72 72 6f 72 28 22 55 6e 73 75 70 70 6f 72 74 65  rror("Unsupporte
c170: 64 20 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20  d ")..          
c180: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
c190: 20 65 6c 73 65 20 69 66 28 20 74 68 69 73 2e 69   else if( this.i
c1a0: 73 49 45 20 29 7b 0d 0a 20 20 20 20 20 20 20 20  sIE ){..        
c1b0: 20 20 20 20 20 20 20 20 2f 2f 20 74 72 79 20 6f          // try o
c1c0: 70 65 6e 69 6e 67 20 65 78 69 73 74 69 6e 67 20  pening existing 
c1d0: 66 69 6c 65 2c 20 63 72 65 61 74 65 20 69 66 20  file, create if 
c1e0: 6e 65 65 64 65 64 0d 0a 20 20 20 20 20 20 20 20  needed..        
c1f0: 20 20 20 20 20 20 20 20 66 69 6c 65 48 61 6e 64          fileHand
c200: 6c 65 20 3d 20 74 68 69 73 2e 66 73 6f 2e 4f 70  le = this.fso.Op
c210: 65 6e 54 65 78 74 46 69 6c 65 28 74 68 69 73 2e  enTextFile(this.
c220: 66 69 6c 65 2c 20 38 2c 20 74 72 75 65 29 3b 20  file, 8, true); 
c230: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
c240: 20 20 20 20 20 20 20 20 20 2f 2f 20 77 72 69 74           // writ
c250: 65 20 6f 75 74 20 6f 75 72 20 64 61 74 61 0d 0a  e out our data..
c260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c270: 66 69 6c 65 48 61 6e 64 6c 65 2e 57 72 69 74 65  fileHandle.Write
c280: 4c 69 6e 65 28 74 68 69 73 2e 6c 61 79 6f 75 74  Line(this.layout
c290: 2e 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67 45  .format(loggingE
c2a0: 76 65 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 20  vent));..       
c2b0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 48 61 6e           fileHan
c2c0: 64 6c 65 2e 63 6c 6f 73 65 28 29 3b 20 20 20 0d  dle.close();   .
c2d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  .            } e
c2e0: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
c2f0: 20 20 20 20 20 20 20 6e 65 74 73 63 61 70 65 2e         netscape.
c300: 73 65 63 75 72 69 74 79 2e 50 72 69 76 69 6c 65  security.Privile
c310: 67 65 4d 61 6e 61 67 65 72 2e 65 6e 61 62 6c 65  geManager.enable
c320: 50 72 69 76 69 6c 65 67 65 28 22 55 6e 69 76 65  Privilege("Unive
c330: 72 73 61 6c 58 50 43 6f 6e 6e 65 63 74 22 29 3b  rsalXPConnect");
c340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c350: 20 20 74 68 69 73 2e 66 73 6f 2e 69 6e 69 74 57    this.fso.initW
c360: 69 74 68 50 61 74 68 28 74 68 69 73 2e 66 69 6c  ithPath(this.fil
c370: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
c380: 20 20 20 20 20 69 66 28 21 74 68 69 73 2e 66 73       if(!this.fs
c390: 6f 2e 65 78 69 73 74 73 28 29 29 20 7b 0d 0a 20  o.exists()) {.. 
c3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3b0: 20 20 20 2f 2f 63 72 65 61 74 65 20 66 69 6c 65     //create file
c3c0: 20 69 66 20 6e 65 65 64 65 64 0d 0a 20 20 20 20   if needed..    
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3e0: 74 68 69 73 2e 66 73 6f 2e 63 72 65 61 74 65 28  this.fso.create(
c3f0: 30 78 30 30 2c 20 30 36 30 30 29 3b 0d 0a 20 20  0x00, 0600);..  
c400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c420: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ..             
c430: 20 20 20 66 69 6c 65 48 61 6e 64 6c 65 20 3d 20     fileHandle = 
c440: 43 6f 6d 70 6f 6e 65 6e 74 73 2e 63 6c 61 73 73  Components.class
c450: 65 73 5b 22 40 6d 6f 7a 69 6c 6c 61 2e 6f 72 67  es["@mozilla.org
c460: 2f 6e 65 74 77 6f 72 6b 2f 66 69 6c 65 2d 6f 75  /network/file-ou
c470: 74 70 75 74 2d 73 74 72 65 61 6d 3b 31 22 5d 2e  tput-stream;1"].
c480: 63 72 65 61 74 65 49 6e 73 74 61 6e 63 65 28 43  createInstance(C
c490: 6f 6d 70 6f 6e 65 6e 74 73 2e 69 6e 74 65 72 66  omponents.interf
c4a0: 61 63 65 73 2e 6e 73 49 46 69 6c 65 4f 75 74 70  aces.nsIFileOutp
c4b0: 75 74 53 74 72 65 61 6d 29 3b 0d 0a 20 20 20 20  utStream);..    
c4c0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
c4d0: 48 61 6e 64 6c 65 2e 69 6e 69 74 28 20 74 68 69  Handle.init( thi
c4e0: 73 2e 66 73 6f 2c 20 30 78 30 34 20 7c 20 30 78  s.fso, 0x04 | 0x
c4f0: 30 38 20 7c 20 30 78 31 30 2c 20 30 36 34 2c 20  08 | 0x10, 064, 
c500: 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0);..           
c510: 20 20 20 20 20 76 61 72 20 6c 69 6e 65 20 3d 20       var line = 
c520: 74 68 69 73 2e 6c 61 79 6f 75 74 2e 66 6f 72 6d  this.layout.form
c530: 61 74 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29  at(loggingEvent)
c540: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c550: 20 20 20 66 69 6c 65 48 61 6e 64 6c 65 2e 77 72     fileHandle.wr
c560: 69 74 65 28 6c 69 6e 65 2c 20 6c 69 6e 65 2e 6c  ite(line, line.l
c570: 65 6e 67 74 68 29 3b 20 2f 2f 77 72 69 74 65 20  ength); //write 
c580: 64 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  data..          
c590: 20 20 20 20 20 20 66 69 6c 65 48 61 6e 64 6c 65        fileHandle
c5a0: 2e 63 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .close();..     
c5b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
c5c0: 20 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d    } catch (e) {.
c5d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67  .            log
c5e0: 34 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28  4jsLogger.error(
c5f0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
c600: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 0d 0a      },..    /*..
c610: 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a      * @see Log4j
c620: 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 43 6c 65  s.Appender#doCle
c630: 61 72 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  ar..    */..    
c640: 64 6f 43 6c 65 61 72 3a 20 66 75 6e 63 74 69 6f  doClear: functio
c650: 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74  n() {..        t
c660: 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry {..          
c670: 20 20 69 66 28 20 74 68 69 73 2e 69 73 49 45 20    if( this.isIE 
c680: 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ){..            
c690: 20 20 20 20 76 61 72 20 66 69 6c 65 48 61 6e 64      var fileHand
c6a0: 6c 65 20 3d 20 74 68 69 73 2e 66 73 6f 2e 47 65  le = this.fso.Ge
c6b0: 74 46 69 6c 65 28 74 68 69 73 2e 66 69 6c 65 29  tFile(this.file)
c6c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c6d0: 20 20 20 66 69 6c 65 48 61 6e 64 6c 65 2e 44 65     fileHandle.De
c6e0: 6c 65 74 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  lete();..       
c6f0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
c710: 65 74 73 63 61 70 65 2e 73 65 63 75 72 69 74 79  etscape.security
c720: 2e 50 72 69 76 69 6c 65 67 65 4d 61 6e 61 67 65  .PrivilegeManage
c730: 72 2e 65 6e 61 62 6c 65 50 72 69 76 69 6c 65 67  r.enablePrivileg
c740: 65 28 22 55 6e 69 76 65 72 73 61 6c 58 50 43 6f  e("UniversalXPCo
c750: 6e 6e 65 63 74 22 29 3b 0d 0a 20 20 20 20 20 20  nnect");..      
c760: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66            this.f
c770: 73 6f 2e 69 6e 69 74 57 69 74 68 50 61 74 68 28  so.initWithPath(
c780: 74 68 69 73 2e 66 69 6c 65 29 3b 0d 0a 20 20 20  this.file);..   
c790: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28               if(
c7a0: 74 68 69 73 2e 66 73 6f 2e 65 78 69 73 74 73 28  this.fso.exists(
c7b0: 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  )) {..          
c7c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66            this.f
c7d0: 73 6f 2e 72 65 6d 6f 76 65 28 66 61 6c 73 65 29  so.remove(false)
c7e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
c7f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
c800: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20 63    }..        } c
c810: 61 74 63 68 20 28 65 29 20 7b 0d 0a 20 20 20 20  atch (e) {..    
c820: 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c 6f          log4jsLo
c830: 67 67 65 72 2e 65 72 72 6f 72 28 65 29 3b 0d 0a  gger.error(e);..
c840: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
c850: 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a  ,..    ..    /**
c860: 20 0d 0a 20 20 20 20 2a 20 74 6f 53 74 72 69 6e   ..    * toStrin
c870: 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74  g..    */..    t
c880: 6f 53 74 72 69 6e 67 3a 20 66 75 6e 63 74 69 6f  oString: functio
c890: 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  n() {..        r
c8a0: 65 74 75 72 6e 20 22 4c 6f 67 34 6a 73 2e 46 69  eturn "Log4js.Fi
c8b0: 6c 65 41 70 70 65 6e 64 65 72 5b 66 69 6c 65 3d  leAppender[file=
c8c0: 22 20 2b 20 74 68 69 73 2e 66 69 6c 65 20 2b 20  " + this.file + 
c8d0: 22 5d 22 3b 20 0d 0a 20 20 20 20 7d 0d 0a 7d 29  "]"; ..    }..})
c8e0: 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 57 69 6e 64  ;..../**..* Wind
c8f0: 6f 77 73 20 45 76 65 6e 74 20 41 70 70 65 6e 64  ows Event Append
c900: 65 72 20 77 72 69 74 65 73 20 74 68 65 20 6c 6f  er writes the lo
c910: 67 73 20 74 6f 20 74 68 65 20 57 69 6e 64 6f 77  gs to the Window
c920: 73 20 45 76 65 6e 74 20 6c 6f 67 2e 0d 0a 2a 20  s Event log...* 
c930: 50 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20 4f 6e  PLEASE NOTE - On
c940: 6c 79 20 77 6f 72 6b 73 20 69 6e 20 49 45 2e 2e  ly works in IE..
c950: 75 73 65 73 20 41 63 74 69 76 65 58 20 74 6f 20  uses ActiveX to 
c960: 77 72 69 74 65 20 74 6f 20 57 69 6e 64 6f 77 73  write to Windows
c970: 20 45 76 65 6e 74 20 6c 6f 67 0d 0a 2a 0d 0a 2a   Event log..*..*
c980: 20 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73   @extends Log4js
c990: 2e 41 70 70 65 6e 64 65 72 20 0d 0a 2a 20 40 63  .Appender ..* @c
c9a0: 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40 70  onstructor..* @p
c9b0: 61 72 61 6d 20 6c 6f 67 67 65 72 20 6c 6f 67 34  aram logger log4
c9c0: 6a 73 20 69 6e 73 74 61 6e 63 65 20 74 68 69 73  js instance this
c9d0: 20 61 70 70 65 6e 64 65 72 20 69 73 20 61 74 74   appender is att
c9e0: 61 63 68 65 64 20 74 6f 0d 0a 2a 20 40 61 75 74  ached to..* @aut
c9f0: 68 6f 72 20 53 65 74 68 20 43 68 69 73 61 6d 6f  hor Seth Chisamo
ca00: 72 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 57  re..*/..Log4js.W
ca10: 69 6e 64 6f 77 73 45 76 65 6e 74 41 70 70 65 6e  indowsEventAppen
ca20: 64 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29  der = function()
ca30: 20 7b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 74 68   {..    ..    th
ca40: 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e 65 77 20  is.layout = new 
ca50: 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c 61 79  Log4js.SimpleLay
ca60: 6f 75 74 28 29 3b 0d 0a 20 20 20 20 0d 0a 20 20  out();..    ..  
ca70: 20 20 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20    try {..       
ca80: 20 74 68 69 73 2e 73 68 65 6c 6c 20 3d 20 6e 65   this.shell = ne
ca90: 77 20 41 63 74 69 76 65 58 4f 62 6a 65 63 74 28  w ActiveXObject(
caa0: 22 57 53 63 72 69 70 74 2e 53 68 65 6c 6c 22 29  "WScript.Shell")
cab0: 3b 0d 0a 20 20 20 20 7d 20 63 61 74 63 68 28 65  ;..    } catch(e
cac0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67  ) {..        log
cad0: 34 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28  4jsLogger.error(
cae0: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a  e);..    }..};..
caf0: 0d 0a 4c 6f 67 34 6a 73 2e 57 69 6e 64 6f 77 73  ..Log4js.Windows
cb00: 45 76 65 6e 74 41 70 70 65 6e 64 65 72 2e 70 72  EventAppender.pr
cb10: 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a 73  ototype = Log4js
cb20: 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67 34  .extend(new Log4
cb30: 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c 20 7b  js.Appender(), {
cb40: 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20    ..    /**..   
cb50: 20 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67 69 6e   * @param loggin
cb60: 67 45 76 65 6e 74 20 65 76 65 6e 74 20 74 6f 20  gEvent event to 
cb70: 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20 2a  be logged..    *
cb80: 20 40 73 65 65 20 4c 6f 67 34 6a 73 2e 41 70 70   @see Log4js.App
cb90: 65 6e 64 65 72 23 64 6f 41 70 70 65 6e 64 0d 0a  ender#doAppend..
cba0: 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f 41 70      */..    doAp
cbb0: 70 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e 28 6c  pend: function(l
cbc0: 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b 0d 0a  oggingEvent) {..
cbd0: 20 20 20 20 20 20 20 20 76 61 72 20 77 69 6e 4c          var winL
cbe0: 65 76 65 6c 20 3d 20 34 3b 0d 0a 20 20 20 20 20  evel = 4;..     
cbf0: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20     ..        // 
cc00: 4d 61 70 20 6c 6f 67 20 6c 65 76 65 6c 20 74 6f  Map log level to
cc10: 20 77 69 6e 64 6f 77 73 20 65 76 65 6e 74 20 6c   windows event l
cc20: 6f 67 20 6c 65 76 65 6c 2e 0d 0a 20 20 20 20 20  og level...     
cc30: 20 20 20 2f 2f 20 57 69 6e 64 6f 77 73 20 65 76     // Windows ev
cc40: 65 6e 74 73 3a 20 2d 20 53 55 43 43 45 53 53 3a  ents: - SUCCESS:
cc50: 20 30 2c 20 45 52 52 4f 52 3a 20 31 2c 20 57 41   0, ERROR: 1, WA
cc60: 52 4e 49 4e 47 3a 20 32 2c 20 49 4e 46 4f 52 4d  RNING: 2, INFORM
cc70: 41 54 49 4f 4e 3a 20 34 2c 20 41 55 44 49 54 5f  ATION: 4, AUDIT_
cc80: 53 55 43 43 45 53 53 3a 20 38 2c 20 41 55 44 49  SUCCESS: 8, AUDI
cc90: 54 5f 46 41 49 4c 55 52 45 3a 20 31 36 0d 0a 20  T_FAILURE: 16.. 
cca0: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6c         switch (l
ccb0: 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65  oggingEvent.leve
ccc0: 6c 29 20 7b 09 0d 0a 20 20 20 20 20 20 20 20 20  l) {...         
ccd0: 20 20 20 63 61 73 65 20 4c 6f 67 34 6a 73 2e 4c     case Log4js.L
cce0: 65 76 65 6c 2e 46 41 54 41 4c 3a 0d 0a 20 20 20  evel.FATAL:..   
ccf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e               win
cd00: 4c 65 76 65 6c 20 3d 20 31 3b 0d 0a 20 20 20 20  Level = 1;..    
cd10: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
cd20: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
cd30: 63 61 73 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65  case Log4js.Leve
cd40: 6c 2e 45 52 52 4f 52 3a 0d 0a 20 20 20 20 20 20  l.ERROR:..      
cd50: 20 20 20 20 20 20 20 20 20 20 77 69 6e 4c 65 76            winLev
cd60: 65 6c 20 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20  el = 1;..       
cd70: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
cd80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
cd90: 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 57  e Log4js.Level.W
cda0: 41 52 4e 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ARN:..          
cdb0: 20 20 20 20 20 20 77 69 6e 4c 65 76 65 6c 20 3d        winLevel =
cdc0: 20 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   2;..           
cdd0: 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20       break;..   
cde0: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
cdf0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
ce00: 20 20 20 77 69 6e 4c 65 76 65 6c 20 3d 20 34 3b     winLevel = 4;
ce10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ce20: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
ce30: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20    }..        .. 
ce40: 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20         try {..  
ce50: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
ce60: 68 65 6c 6c 2e 4c 6f 67 45 76 65 6e 74 28 77 69  hell.LogEvent(wi
ce70: 6e 4c 65 76 65 6c 2c 20 74 68 69 73 2e 6c 65 76  nLevel, this.lev
ce80: 65 6c 2e 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e  el.format(loggin
ce90: 67 45 76 65 6e 74 29 29 3b 0d 0a 20 20 20 20 20  gEvent));..     
cea0: 20 20 20 7d 20 63 61 74 63 68 28 65 29 20 7b 0d     } catch(e) {.
ceb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67  .            log
cec0: 34 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28  4jsLogger.error(
ced0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
cee0: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20      },..    ..  
cef0: 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 74 6f    /** ..    * to
cf00: 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a  String..    */..
cf10: 20 20 20 20 74 6f 53 74 72 69 6e 67 3a 20 66 75      toString: fu
cf20: 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
cf30: 20 20 20 20 72 65 74 75 72 6e 20 22 4c 6f 67 34      return "Log4
cf40: 6a 73 2e 57 69 6e 64 6f 77 73 45 76 65 6e 74 41  js.WindowsEventA
cf50: 70 70 65 6e 64 65 72 22 3b 20 0d 0a 20 20 20 20  ppender"; ..    
cf60: 7d 20 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a  } ..});..../**..
cf70: 2a 20 4a 53 20 41 6c 65 72 74 20 41 70 70 65 6e  * JS Alert Appen
cf80: 64 65 72 20 77 72 69 74 65 73 20 74 68 65 20 6c  der writes the l
cf90: 6f 67 73 20 74 6f 20 74 68 65 20 4a 61 76 61 53  ogs to the JavaS
cfa0: 63 72 69 70 74 20 61 6c 65 72 74 20 64 69 61 6c  cript alert dial
cfb0: 6f 67 20 62 6f 78 0d 0a 2a 20 40 63 6f 6e 73 74  og box..* @const
cfc0: 72 75 63 74 6f 72 0d 0a 2a 20 40 65 78 74 65 6e  ructor..* @exten
cfd0: 64 73 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64  ds Log4js.Append
cfe0: 65 72 20 20 0d 0a 2a 20 40 70 61 72 61 6d 20 6c  er  ..* @param l
cff0: 6f 67 67 65 72 20 6c 6f 67 34 6a 73 20 69 6e 73  ogger log4js ins
d000: 74 61 6e 63 65 20 74 68 69 73 20 61 70 70 65 6e  tance this appen
d010: 64 65 72 20 69 73 20 61 74 74 61 63 68 65 64 20  der is attached 
d020: 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53 26  to..* @author S&
d030: 65 61 63 75 74 65 3b 62 61 73 74 69 65 6e 20 4c  eacute;bastien L
d040: 45 43 41 43 48 45 55 52 0d 0a 2a 2f 0d 0a 4c 6f  ECACHEUR..*/..Lo
d050: 67 34 6a 73 2e 4a 53 41 6c 65 72 74 41 70 70 65  g4js.JSAlertAppe
d060: 6e 64 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 28  nder = function(
d070: 29 20 7b 0d 0a 0d 0a 20 20 20 20 74 68 69 73 2e  ) {....    this.
d080: 6c 61 79 6f 75 74 20 3d 20 6e 65 77 20 4c 6f 67  layout = new Log
d090: 34 6a 73 2e 53 69 6d 70 6c 65 4c 61 79 6f 75 74  4js.SimpleLayout
d0a0: 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a  ();..};....Log4j
d0b0: 73 2e 4a 53 41 6c 65 72 74 41 70 70 65 6e 64 65  s.JSAlertAppende
d0c0: 72 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f  r.prototype = Lo
d0d0: 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20  g4js.extend(new 
d0e0: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28  Log4js.Appender(
d0f0: 29 2c 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20  ), {  ..    /** 
d100: 0d 0a 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67  ..    * @see Log
d110: 34 6a 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41  4js.Appender#doA
d120: 70 70 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ppend..    */.. 
d130: 20 20 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e     doAppend: fun
d140: 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65  ction(loggingEve
d150: 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 44  nt) {..        D
d160: 6f 4d 65 73 73 61 67 65 42 6f 78 28 74 68 69 73  oMessageBox(this
d170: 2e 6c 61 79 6f 75 74 2e 67 65 74 48 65 61 64 65  .layout.getHeade
d180: 72 28 29 20 2b 20 74 68 69 73 2e 6c 61 79 6f 75  r() + this.layou
d190: 74 2e 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67  t.format(logging
d1a0: 45 76 65 6e 74 29 20 2b 20 74 68 69 73 2e 6c 61  Event) + this.la
d1b0: 79 6f 75 74 2e 67 65 74 46 6f 6f 74 65 72 28 29  yout.getFooter()
d1c0: 29 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  );..    },..    
d1d0: 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20  ..    /** ..    
d1e0: 2a 20 74 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20  * toString..    
d1f0: 2a 2f 0d 0a 20 20 20 20 74 6f 53 74 72 69 6e 67  */..    toString
d200: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a  : function() {..
d210: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
d220: 4c 6f 67 34 6a 73 2e 4a 53 41 6c 65 72 74 41 70  Log4js.JSAlertAp
d230: 70 65 6e 64 65 72 22 3b 20 0d 0a 20 20 20 20 7d  pender"; ..    }
d240: 09 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a  ...});..../**..*
d250: 20 41 70 70 65 6e 64 65 72 20 77 72 69 74 65 73   Appender writes
d260: 20 74 68 65 20 6c 6f 67 73 20 74 6f 20 74 68 65   the logs to the
d270: 20 4a 61 76 61 53 63 72 69 70 74 20 63 6f 6e 73   JavaScript cons
d280: 6f 6c 65 20 6f 66 20 4d 6f 7a 69 6c 6c 61 20 62  ole of Mozilla b
d290: 72 6f 77 73 65 72 0d 0a 2a 20 4d 6f 72 65 20 69  rowser..* More i
d2a0: 6e 66 6f 73 3a 20 68 74 74 70 3a 2f 2f 6b 62 2e  nfos: http://kb.
d2b0: 6d 6f 7a 69 6c 6c 61 7a 69 6e 65 2e 6f 72 67 2f  mozillazine.org/
d2c0: 69 6e 64 65 78 2e 70 68 70 3f 74 69 74 6c 65 3d  index.php?title=
d2d0: 4a 61 76 61 53 63 72 69 70 74 5f 43 6f 6e 73 6f  JavaScript_Conso
d2e0: 6c 65 26 72 65 64 69 72 65 63 74 3d 6e 6f 0d 0a  le&redirect=no..
d2f0: 2a 20 50 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20  * PLEASE NOTE - 
d300: 4f 6e 6c 79 20 77 6f 72 6b 73 20 69 6e 20 4d 6f  Only works in Mo
d310: 7a 69 6c 6c 61 20 62 72 6f 77 73 65 72 0d 0a 2a  zilla browser..*
d320: 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a   @constructor..*
d330: 20 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73   @extends Log4js
d340: 2e 41 70 70 65 6e 64 65 72 20 20 0d 0a 2a 20 40  .Appender  ..* @
d350: 70 61 72 61 6d 20 6c 6f 67 67 65 72 20 6c 6f 67  param logger log
d360: 34 6a 73 20 69 6e 73 74 61 6e 63 65 20 74 68 69  4js instance thi
d370: 73 20 61 70 70 65 6e 64 65 72 20 69 73 20 61 74  s appender is at
d380: 74 61 63 68 65 64 20 74 6f 0d 0a 2a 20 40 61 75  tached to..* @au
d390: 74 68 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72  thor Stephan Str
d3a0: 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c  ittmatter..*/..L
d3b0: 6f 67 34 6a 73 2e 4d 6f 7a 69 6c 6c 61 4a 53 43  og4js.MozillaJSC
d3c0: 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 20 3d  onsoleAppender =
d3d0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
d3e0: 20 20 20 74 68 69 73 2e 6c 61 79 6f 75 74 20 3d     this.layout =
d3f0: 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 53 69 6d 70   new Log4js.Simp
d400: 6c 65 4c 61 79 6f 75 74 28 29 3b 0d 0a 20 20 20  leLayout();..   
d410: 20 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20   try {..        
d420: 6e 65 74 73 63 61 70 65 2e 73 65 63 75 72 69 74  netscape.securit
d430: 79 2e 50 72 69 76 69 6c 65 67 65 4d 61 6e 61 67  y.PrivilegeManag
d440: 65 72 2e 65 6e 61 62 6c 65 50 72 69 76 69 6c 65  er.enablePrivile
d450: 67 65 28 22 55 6e 69 76 65 72 73 61 6c 58 50 43  ge("UniversalXPC
d460: 6f 6e 6e 65 63 74 22 29 3b 0d 0a 20 20 20 20 20  onnect");..     
d470: 20 20 20 74 68 69 73 2e 6a 73 43 6f 6e 73 6f 6c     this.jsConsol
d480: 65 20 3d 20 43 6f 6d 70 6f 6e 65 6e 74 73 2e 63  e = Components.c
d490: 6c 61 73 73 65 73 5b 22 40 6d 6f 7a 69 6c 6c 61  lasses["@mozilla
d4a0: 2e 6f 72 67 2f 63 6f 6e 73 6f 6c 65 73 65 72 76  .org/consoleserv
d4b0: 69 63 65 3b 31 22 5d 2e 67 65 74 53 65 72 76 69  ice;1"].getServi
d4c0: 63 65 28 43 6f 6d 70 6f 6e 65 6e 74 73 2e 69 6e  ce(Components.in
d4d0: 74 65 72 66 61 63 65 73 2e 6e 73 49 43 6f 6e 73  terfaces.nsICons
d4e0: 6f 6c 65 53 65 72 76 69 63 65 29 3b 0d 0a 20 20  oleService);..  
d4f0: 20 20 20 20 20 20 74 68 69 73 2e 73 63 72 69 70        this.scrip
d500: 74 45 72 72 6f 72 20 3d 20 43 6f 6d 70 6f 6e 65  tError = Compone
d510: 6e 74 73 2e 63 6c 61 73 73 65 73 5b 22 40 6d 6f  nts.classes["@mo
d520: 7a 69 6c 6c 61 2e 6f 72 67 2f 73 63 72 69 70 74  zilla.org/script
d530: 65 72 72 6f 72 3b 31 22 5d 2e 63 72 65 61 74 65  error;1"].create
d540: 49 6e 73 74 61 6e 63 65 28 43 6f 6d 70 6f 6e 65  Instance(Compone
d550: 6e 74 73 2e 69 6e 74 65 72 66 61 63 65 73 2e 6e  nts.interfaces.n
d560: 73 49 53 63 72 69 70 74 45 72 72 6f 72 29 3b 0d  sIScriptError);.
d570: 0a 20 20 20 20 7d 20 63 61 74 63 68 20 28 65 29  .    } catch (e)
d580: 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34   {..        log4
d590: 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 65  jsLogger.error(e
d5a0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d  );..    }..};...
d5b0: 0a 4c 6f 67 34 6a 73 2e 4d 6f 7a 69 6c 6c 61 4a  .Log4js.MozillaJ
d5c0: 53 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72  SConsoleAppender
d5d0: 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67  .prototype = Log
d5e0: 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c  4js.extend(new L
d5f0: 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29  og4js.Appender()
d600: 2c 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d  , {  ..    /** .
d610: 0a 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34  .    * @see Log4
d620: 6a 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70  js.Appender#doAp
d630: 70 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  pend..    */..  
d640: 20 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63    doAppend: func
d650: 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e  tion(loggingEven
d660: 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 72  t) {..        tr
d670: 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y {..           
d680: 20 6e 65 74 73 63 61 70 65 2e 73 65 63 75 72 69   netscape.securi
d690: 74 79 2e 50 72 69 76 69 6c 65 67 65 4d 61 6e 61  ty.PrivilegeMana
d6a0: 67 65 72 2e 65 6e 61 62 6c 65 50 72 69 76 69 6c  ger.enablePrivil
d6b0: 65 67 65 28 22 55 6e 69 76 65 72 73 61 6c 58 50  ege("UniversalXP
d6c0: 43 6f 6e 6e 65 63 74 22 29 3b 0d 0a 20 20 20 20  Connect");..    
d6d0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 63 72          this.scr
d6e0: 69 70 74 45 72 72 6f 72 2e 69 6e 69 74 28 74 68  iptError.init(th
d6f0: 69 73 2e 6c 61 79 6f 75 74 2e 66 6f 72 6d 61 74  is.layout.format
d700: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 2c 20  (loggingEvent), 
d710: 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c  null, null, null
d720: 2c 20 6e 75 6c 6c 2c 20 74 68 69 73 2e 67 65 74  , null, this.get
d730: 46 6c 61 67 28 6c 6f 67 67 69 6e 67 45 76 65 6e  Flag(loggingEven
d740: 74 29 2c 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74  t), loggingEvent
d750: 2e 63 61 74 65 67 6f 72 79 4e 61 6d 65 29 3b 0d  .categoryName);.
d760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
d770: 73 2e 6a 73 43 6f 6e 73 6f 6c 65 2e 6c 6f 67 4d  s.jsConsole.logM
d780: 65 73 73 61 67 65 28 74 68 69 73 2e 73 63 72 69  essage(this.scri
d790: 70 74 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  ptError);..     
d7a0: 20 20 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b     } catch (e) {
d7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
d7c0: 67 34 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72  g4jsLogger.error
d7d0: 28 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  (e);..        }.
d7e0: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
d7f0: 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 74     /** ..    * t
d800: 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d  oString..    */.
d810: 0a 20 20 20 20 74 6f 53 74 72 69 6e 67 3a 20 66  .    toString: f
d820: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
d830: 20 20 20 20 20 72 65 74 75 72 6e 20 22 4c 6f 67       return "Log
d840: 34 6a 73 2e 4d 6f 7a 69 6c 6c 61 4a 53 43 6f 6e  4js.MozillaJSCon
d850: 73 6f 6c 65 41 70 70 65 6e 64 65 72 22 3b 20 0d  soleAppender"; .
d860: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
d870: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 4d 61     /**..    * Ma
d880: 70 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 20 74  p Log4js.Level t
d890: 6f 20 6a 73 43 6f 6e 73 6f 6c 65 20 46 6c 61 67  o jsConsole Flag
d8a0: 73 3a 0d 0a 20 20 20 20 2a 20 3c 75 6c 3e 0d 0a  s:..    * <ul>..
d8b0: 20 20 20 20 2a 20 3c 6c 69 3e 6e 73 49 53 63 72      * <li>nsIScr
d8c0: 69 70 74 45 72 72 6f 72 2e 65 72 72 6f 72 46 6c  iptError.errorFl
d8d0: 61 67 20 28 30 29 20 3d 20 4c 65 76 65 6c 2e 45  ag (0) = Level.E
d8e0: 72 72 6f 72 3c 2f 6c 69 3e 0d 0a 20 20 20 20 2a  rror</li>..    *
d8f0: 20 3c 6c 69 3e 6e 73 49 53 63 72 69 70 74 45 72   <li>nsIScriptEr
d900: 72 6f 72 2e 77 61 72 6e 69 6e 67 46 6c 61 67 20  ror.warningFlag 
d910: 28 31 29 3d 20 4c 6f 67 34 6a 73 2e 4c 65 76 65  (1)= Log4js.Leve
d920: 6c 2e 57 41 52 4e 3c 2f 6c 69 3e 0d 0a 20 20 20  l.WARN</li>..   
d930: 20 2a 20 3c 6c 69 3e 6e 73 49 53 63 72 69 70 74   * <li>nsIScript
d940: 45 72 72 6f 72 2e 65 78 63 65 70 74 69 6f 6e 46  Error.exceptionF
d950: 6c 61 67 20 28 32 29 20 3d 20 4c 6f 67 34 6a 73  lag (2) = Log4js
d960: 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 3c 2f 6c 69  .Level.FATAL</li
d970: 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e 6e 73 49  >..    * <li>nsI
d980: 53 63 72 69 70 74 45 72 72 6f 72 2e 73 74 72 69  ScriptError.stri
d990: 63 74 46 6c 61 67 20 28 34 29 20 3d 20 75 6e 75  ctFlag (4) = unu
d9a0: 73 65 64 3c 2f 6c 69 3e 0d 0a 20 20 20 20 2a 20  sed</li>..    * 
d9b0: 3c 2f 75 6c 3e 0d 0a 20 20 20 20 2a 20 40 70 72  </ul>..    * @pr
d9c0: 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 09 0d 0a  ivate..    */...
d9d0: 20 20 20 20 67 65 74 46 6c 61 67 3a 20 66 75 6e      getFlag: fun
d9e0: 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65  ction(loggingEve
d9f0: 6e 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nt)..    {..    
da00: 20 20 20 20 76 61 72 20 72 65 74 76 61 6c 3b 0d      var retval;.
da10: 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20  .        switch 
da20: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65  (loggingEvent.le
da30: 76 65 6c 29 20 7b 09 0d 0a 20 20 20 20 20 20 20  vel) {...       
da40: 20 20 20 20 20 63 61 73 65 20 4c 6f 67 34 6a 73       case Log4js
da50: 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 3a 0d 0a 20  .Level.FATAL:.. 
da60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
da70: 65 74 76 61 6c 20 3d 20 32 3b 2f 2f 6e 73 49 53  etval = 2;//nsIS
da80: 63 72 69 70 74 45 72 72 6f 72 2e 65 78 63 65 70  criptError.excep
da90: 74 69 6f 6e 46 6c 61 67 20 3d 20 32 0d 0a 20 20  tionFlag = 2..  
daa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
dab0: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
dac0: 20 20 63 61 73 65 20 4c 6f 67 34 6a 73 2e 4c 65    case Log4js.Le
dad0: 76 65 6c 2e 45 52 52 4f 52 3a 0d 0a 20 20 20 20  vel.ERROR:..    
dae0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 76              retv
daf0: 61 6c 20 3d 20 30 3b 2f 2f 6e 73 49 53 63 72 69  al = 0;//nsIScri
db00: 70 74 45 72 72 6f 72 2e 65 72 72 6f 72 46 6c 61  ptError.errorFla
db10: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
db20: 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
db30: 20 20 20 20 20 20 20 63 61 73 65 20 4c 6f 67 34         case Log4
db40: 6a 73 2e 4c 65 76 65 6c 2e 57 41 52 4e 3a 0d 0a  js.Level.WARN:..
db50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db60: 72 65 74 76 61 6c 20 3d 20 31 3b 2f 2f 6e 73 49  retval = 1;//nsI
db70: 53 63 72 69 70 74 45 72 72 6f 72 2e 77 61 72 6e  ScriptError.warn
db80: 69 6e 67 46 6c 61 67 20 3d 20 31 0d 0a 20 20 20  ingFlag = 1..   
db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
dba0: 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ak;..           
dbb0: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
dbc0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 76 61             retva
dbd0: 6c 20 3d 20 31 3b 2f 2f 6e 73 49 53 63 72 69 70  l = 1;//nsIScrip
dbe0: 74 45 72 72 6f 72 2e 77 61 72 6e 69 6e 67 46 6c  tError.warningFl
dbf0: 61 67 20 3d 20 31 0d 0a 20 20 20 20 20 20 20 20  ag = 1..        
dc00: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
dc10: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
dc20: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 72 65 74     ..        ret
dc30: 75 72 6e 20 72 65 74 76 61 6c 3b 09 09 0d 0a 20  urn retval;.... 
dc40: 20 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a     }..});..../**
dc50: 0d 0a 2a 20 41 70 70 65 6e 64 65 72 20 77 72 69  ..* Appender wri
dc60: 74 65 73 20 74 68 65 20 6c 6f 67 73 20 74 6f 20  tes the logs to 
dc70: 74 68 65 20 4a 61 76 61 53 63 72 69 70 74 20 63  the JavaScript c
dc80: 6f 6e 73 6f 6c 65 20 6f 66 20 4f 70 65 72 61 20  onsole of Opera 
dc90: 62 72 6f 77 73 65 72 0d 0a 2a 20 50 4c 45 41 53  browser..* PLEAS
dca0: 45 20 4e 4f 54 45 20 2d 20 4f 6e 6c 79 20 77 6f  E NOTE - Only wo
dcb0: 72 6b 73 20 69 6e 20 4f 70 65 72 61 20 62 72 6f  rks in Opera bro
dcc0: 77 73 65 72 0d 0a 2a 20 40 63 6f 6e 73 74 72 75  wser..* @constru
dcd0: 63 74 6f 72 0d 0a 2a 20 40 65 78 74 65 6e 64 73  ctor..* @extends
dce0: 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72   Log4js.Appender
dcf0: 20 20 0d 0a 2a 20 40 70 61 72 61 6d 20 6c 6f 67    ..* @param log
dd00: 67 65 72 20 6c 6f 67 34 6a 73 20 69 6e 73 74 61  ger log4js insta
dd10: 6e 63 65 20 74 68 69 73 20 61 70 70 65 6e 64 65  nce this appende
dd20: 72 20 69 73 20 61 74 74 61 63 68 65 64 20 74 6f  r is attached to
dd30: 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53 74 65 70  ..* @author Step
dd40: 68 61 6e 20 53 74 72 69 74 74 6d 61 74 74 65 72  han Strittmatter
dd50: 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4f 70 65  ..*/..Log4js.Ope
dd60: 72 61 4a 53 43 6f 6e 73 6f 6c 65 41 70 70 65 6e  raJSConsoleAppen
dd70: 64 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29  der = function()
dd80: 20 7b 0d 0a 20 20 20 20 74 68 69 73 2e 6c 61 79   {..    this.lay
dd90: 6f 75 74 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73  out = new Log4js
dda0: 2e 53 69 6d 70 6c 65 4c 61 79 6f 75 74 28 29 3b  .SimpleLayout();
ddb0: 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 4f  ..};....Log4js.O
ddc0: 70 65 72 61 4a 53 43 6f 6e 73 6f 6c 65 41 70 70  peraJSConsoleApp
ddd0: 65 6e 64 65 72 2e 70 72 6f 74 6f 74 79 70 65 20  ender.prototype 
dde0: 3d 20 4c 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28  = Log4js.extend(
ddf0: 6e 65 77 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e  new Log4js.Appen
de00: 64 65 72 28 29 2c 20 7b 20 20 0d 0a 20 20 20 20  der(), {  ..    
de10: 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40 73 65 65  /** ..    * @see
de20: 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72   Log4js.Appender
de30: 23 64 6f 41 70 70 65 6e 64 0d 0a 20 20 20 20 2a  #doAppend..    *
de40: 2f 0d 0a 20 20 20 20 64 6f 41 70 70 65 6e 64 3a  /..    doAppend:
de50: 20 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e   function(loggin
de60: 67 45 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20  gEvent) {..     
de70: 20 20 20 6f 70 65 72 61 2e 70 6f 73 74 45 72 72     opera.postErr
de80: 6f 72 28 74 68 69 73 2e 6c 61 79 6f 75 74 2e 66  or(this.layout.f
de90: 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67 45 76 65  ormat(loggingEve
dea0: 6e 74 29 29 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20  nt));..    },.. 
deb0: 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20     ..    /** .. 
dec0: 20 20 20 2a 20 74 6f 53 74 72 69 6e 67 0d 0a 20     * toString.. 
ded0: 20 20 20 2a 2f 0d 0a 20 20 20 20 74 6f 53 74 72     */..    toStr
dee0: 69 6e 67 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  ing: function() 
def0: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
df00: 6e 20 22 4c 6f 67 34 6a 73 2e 4f 70 65 72 61 4a  n "Log4js.OperaJ
df10: 53 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72  SConsoleAppender
df20: 22 3b 20 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d  "; ..    }..});.
df30: 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 41 70 70 65 6e 64  .../**..* Append
df40: 65 72 20 77 72 69 74 65 73 20 74 68 65 20 6c 6f  er writes the lo
df50: 67 73 20 74 6f 20 74 68 65 20 4a 61 76 61 53 63  gs to the JavaSc
df60: 72 69 70 74 20 63 6f 6e 73 6f 6c 65 20 6f 66 20  ript console of 
df70: 53 61 66 61 72 69 20 62 72 6f 77 73 65 72 0d 0a  Safari browser..
df80: 2a 20 50 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20  * PLEASE NOTE - 
df90: 4f 6e 6c 79 20 77 6f 72 6b 73 20 69 6e 20 53 61  Only works in Sa
dfa0: 66 61 72 69 20 62 72 6f 77 73 65 72 0d 0a 2a 20  fari browser..* 
dfb0: 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20  @constructor..* 
dfc0: 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e  @extends Log4js.
dfd0: 41 70 70 65 6e 64 65 72 20 20 0d 0a 2a 20 40 70  Appender  ..* @p
dfe0: 61 72 61 6d 20 6c 6f 67 67 65 72 20 6c 6f 67 34  aram logger log4
dff0: 6a 73 20 69 6e 73 74 61 6e 63 65 20 74 68 69 73  js instance this
e000: 20 61 70 70 65 6e 64 65 72 20 69 73 20 61 74 74   appender is att
e010: 61 63 68 65 64 20 74 6f 0d 0a 2a 20 40 61 75 74  ached to..* @aut
e020: 68 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72 69  hor Stephan Stri
e030: 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f  ttmatter..*/..Lo
e040: 67 34 6a 73 2e 53 61 66 61 72 69 4a 53 43 6f 6e  g4js.SafariJSCon
e050: 73 6f 6c 65 41 70 70 65 6e 64 65 72 20 3d 20 66  soleAppender = f
e060: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
e070: 20 74 68 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e   this.layout = n
e080: 65 77 20 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65  ew Log4js.Simple
e090: 4c 61 79 6f 75 74 28 29 3b 0d 0a 7d 3b 0d 0a 0d  Layout();..};...
e0a0: 0a 4c 6f 67 34 6a 73 2e 53 61 66 61 72 69 4a 53  .Log4js.SafariJS
e0b0: 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 2e  ConsoleAppender.
e0c0: 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34  prototype = Log4
e0d0: 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f  js.extend(new Lo
e0e0: 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c  g4js.Appender(),
e0f0: 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a   {  ..    /** ..
e100: 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a      * @see Log4j
e110: 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70 70  s.Appender#doApp
e120: 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  end..    */..   
e130: 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63 74   doAppend: funct
e140: 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74  ion(loggingEvent
e150: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 77 69 6e  ) {..        win
e160: 64 6f 77 2e 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28  dow.console.log(
e170: 74 68 69 73 2e 6c 61 79 6f 75 74 2e 66 6f 72 6d  this.layout.form
e180: 61 74 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29  at(loggingEvent)
e190: 29 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  );..    },..    
e1a0: 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20  ..    /** ..    
e1b0: 2a 20 74 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20  * toString..    
e1c0: 2a 2f 0d 0a 20 20 20 20 74 6f 53 74 72 69 6e 67  */..    toString
e1d0: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a  : function() {..
e1e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
e1f0: 4c 6f 67 34 6a 73 2e 53 61 66 61 72 69 4a 53 43  Log4js.SafariJSC
e200: 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 22 3b  onsoleAppender";
e210: 20 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d   ..    }..});...
e220: 0a 2f 2a 2a 0d 0a 2a 20 41 70 70 65 6e 64 65 72  ./**..* Appender
e230: 20 77 72 69 74 65 73 20 74 68 65 20 6c 6f 67 73   writes the logs
e240: 20 74 6f 20 74 68 65 20 4a 61 76 61 53 63 72 69   to the JavaScri
e250: 70 74 20 63 6f 6e 73 6f 6c 65 20 6f 66 20 4f 70  pt console of Op
e260: 65 72 61 20 62 72 6f 77 73 65 72 0d 0a 2a 20 50  era browser..* P
e270: 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20 4f 6e 6c  LEASE NOTE - Onl
e280: 79 20 77 6f 72 6b 73 20 69 6e 20 4f 70 65 72 61  y works in Opera
e290: 20 62 72 6f 77 73 65 72 0d 0a 2a 20 40 63 6f 6e   browser..* @con
e2a0: 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40 65 78 74  structor..* @ext
e2b0: 65 6e 64 73 20 4c 6f 67 34 6a 73 2e 41 70 70 65  ends Log4js.Appe
e2c0: 6e 64 65 72 20 20 0d 0a 2a 20 40 70 61 72 61 6d  nder  ..* @param
e2d0: 20 6c 6f 67 67 65 72 20 6c 6f 67 34 6a 73 20 69   logger log4js i
e2e0: 6e 73 74 61 6e 63 65 20 74 68 69 73 20 61 70 70  nstance this app
e2f0: 65 6e 64 65 72 20 69 73 20 61 74 74 61 63 68 65  ender is attache
e300: 64 20 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20  d to..* @author 
e310: 53 74 65 70 68 61 6e 20 53 74 72 69 74 74 6d 61  Stephan Strittma
e320: 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73  tter..*/..Log4js
e330: 2e 53 6e 65 67 6f 70 61 74 4a 53 43 6f 6e 73 6f  .SnegopatJSConso
e340: 6c 65 41 70 70 65 6e 64 65 72 20 3d 20 66 75 6e  leAppender = fun
e350: 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 74  ction() {..    t
e360: 68 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e 65 77  his.layout = new
e370: 20 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c 61   Log4js.SimpleLa
e380: 79 6f 75 74 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c  yout();..};....L
e390: 6f 67 34 6a 73 2e 53 6e 65 67 6f 70 61 74 4a 53  og4js.SnegopatJS
e3a0: 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 2e  ConsoleAppender.
e3b0: 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34  prototype = Log4
e3c0: 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f  js.extend(new Lo
e3d0: 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c  g4js.Appender(),
e3e0: 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a   {  ..    /** ..
e3f0: 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a      * @see Log4j
e400: 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70 70  s.Appender#doApp
e410: 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  end..    */..   
e420: 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63 74   doAppend: funct
e430: 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74  ion(loggingEvent
e440: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  ) {..        var
e450: 20 6d 65 73 73 61 67 65 20 3d 20 74 68 69 73 2e   message = this.
e460: 6c 61 79 6f 75 74 2e 66 6f 72 6d 61 74 28 6c 6f  layout.format(lo
e470: 67 67 69 6e 67 45 76 65 6e 74 29 3b 0d 0a 20 20  ggingEvent);..  
e480: 20 20 20 20 20 20 69 66 20 28 6d 65 73 73 61 67        if (messag
e490: 65 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e){..           
e4a0: 20 4d 65 73 73 61 67 65 28 27 27 2b 6d 65 73 73   Message(''+mess
e4b0: 61 67 65 2e 72 65 70 6c 61 63 65 28 2f 5c 6e 7b  age.replace(/\n{
e4c0: 31 2c 7d 24 2f 67 2c 20 27 27 29 29 3b 0d 0a 20  1,}$/g, ''));.. 
e4d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c         }..    },
e4e0: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 20  ..    ..    /** 
e4f0: 0d 0a 20 20 20 20 2a 20 74 6f 53 74 72 69 6e 67  ..    * toString
e500: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 6f  ..    */..    to
e510: 53 74 72 69 6e 67 3a 20 66 75 6e 63 74 69 6f 6e  String: function
e520: 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65  () {..        re
e530: 74 75 72 6e 20 22 4c 6f 67 34 6a 73 2e 53 6e 65  turn "Log4js.Sne
e540: 67 6f 70 61 74 4a 53 43 6f 6e 73 6f 6c 65 41 70  gopatJSConsoleAp
e550: 70 65 6e 64 65 72 22 3b 20 0d 0a 20 20 20 20 7d  pender"; ..    }
e560: 0d 0a 7d 29 3b 0d 0a 0d 0a 0d 0a 2f 2a 2a 0d 0a  ..});....../**..
e570: 2a 20 4a 61 76 61 53 63 72 69 70 74 20 43 6f 6e  * JavaScript Con
e580: 73 6f 6c 65 20 41 70 70 65 6e 64 65 72 20 77 68  sole Appender wh
e590: 69 63 68 20 69 73 20 62 72 6f 77 73 65 72 20 69  ich is browser i
e5a0: 6e 64 65 70 65 6e 64 65 6e 74 2e 0d 0a 2a 20 49  ndependent...* I
e5b0: 74 20 63 68 65 63 6b 73 20 69 6e 74 65 72 6e 61  t checks interna
e5c0: 6c 6c 79 20 66 6f 72 20 74 68 65 20 63 75 72 72  lly for the curr
e5d0: 65 6e 74 20 62 72 6f 77 73 65 72 20 61 6e 64 20  ent browser and 
e5e0: 61 64 64 73 20 64 65 6c 65 67 61 74 65 20 74 6f  adds delegate to
e5f0: 0d 0a 2a 20 73 70 65 63 69 66 69 63 20 4a 61 76  ..* specific Jav
e600: 61 53 63 72 69 70 74 20 43 6f 6e 73 6f 6c 65 20  aScript Console 
e610: 41 70 70 65 6e 64 65 72 20 6f 66 20 74 68 65 20  Appender of the 
e620: 62 72 6f 77 73 65 72 2e 0d 0a 2a 20 0d 0a 2a 20  browser...* ..* 
e630: 40 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20  @author Stephan 
e640: 53 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 20  Strittmatter..* 
e650: 40 73 69 6e 63 65 20 31 2e 30 0d 0a 2a 2f 0d 0a  @since 1.0..*/..
e660: 4c 6f 67 34 6a 73 2e 42 72 6f 77 73 65 72 43 6f  Log4js.BrowserCo
e670: 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 20 3d 20  nsoleAppender = 
e680: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
e690: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 44 65 6c    /**..    * Del
e6a0: 65 67 61 74 65 20 66 6f 72 20 62 72 6f 77 73 65  egate for browse
e6b0: 72 20 73 70 65 63 69 66 69 63 20 69 6d 70 6c 65  r specific imple
e6c0: 6d 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 2a  mentation..    *
e6d0: 20 40 74 79 70 65 20 4c 6f 67 34 6a 73 2e 41 70   @type Log4js.Ap
e6e0: 70 65 6e 64 65 72 0d 0a 20 20 20 20 2a 20 40 70  pender..    * @p
e6f0: 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a  rivate..    */..
e700: 20 20 20 20 74 68 69 73 2e 63 6f 6e 73 6f 6c 65      this.console
e710: 44 65 6c 65 67 61 74 65 20 3d 20 6e 75 6c 6c 3b  Delegate = null;
e720: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 69 66 20 28  ..    ..    if (
e730: 77 69 6e 64 6f 77 73 2e 63 6f 6e 73 6f 6c 65 29  windows.console)
e740: 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
e750: 2e 63 6f 6e 73 6f 6c 65 44 65 6c 65 67 61 74 65  .consoleDelegate
e760: 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 53 61   = new Log4js.Sa
e770: 66 61 72 69 4a 53 43 6f 6e 73 6f 6c 65 41 70 70  fariJSConsoleApp
e780: 65 6e 64 65 72 28 29 3b 20 0d 0a 20 20 20 20 7d  ender(); ..    }
e790: 0d 0a 20 20 20 20 65 6c 73 65 20 69 66 20 28 77  ..    else if (w
e7a0: 69 6e 64 6f 77 73 2e 6f 70 65 72 61 29 20 7b 0d  indows.opera) {.
e7b0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
e7c0: 6e 73 6f 6c 65 44 65 6c 65 67 61 74 65 20 3d 20  nsoleDelegate = 
e7d0: 6e 65 77 20 4c 6f 67 34 6a 73 2e 4f 70 65 72 61  new Log4js.Opera
e7e0: 4a 53 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65  JSConsoleAppende
e7f0: 72 28 29 3b 20 0d 0a 20 20 20 20 7d 0d 0a 20 20  r(); ..    }..  
e800: 20 20 65 6c 73 65 20 69 66 28 77 69 6e 64 6f 77    else if(window
e810: 73 2e 6e 65 74 73 63 61 70 65 29 20 7b 0d 0a 20  s.netscape) {.. 
e820: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 73         this.cons
e830: 6f 6c 65 44 65 6c 65 67 61 74 65 20 3d 20 6e 65  oleDelegate = ne
e840: 77 20 4c 6f 67 34 6a 73 2e 4d 6f 7a 4a 53 43 6f  w Log4js.MozJSCo
e850: 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 28 29 3b  nsoleAppender();
e860: 20 0d 0a 20 20 20 20 7d 20 0d 0a 20 20 20 20 65   ..    } ..    e
e870: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 74  lse {..        t
e880: 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry {..          
e890: 20 20 76 61 72 20 73 6e 20 3d 20 76 38 56 65 72    var sn = v8Ver
e8a0: 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
e8b0: 20 20 20 2f 2f 64 65 62 75 67 67 65 72 3b 0d 0a     //debugger;..
e8c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e8d0: 73 6e 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  sn){..          
e8e0: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 73 6f        this.conso
e8f0: 6c 65 44 65 6c 65 67 61 74 65 20 3d 20 6e 65 77  leDelegate = new
e900: 20 4c 6f 67 34 6a 73 2e 53 6e 65 67 6f 70 61 74   Log4js.Snegopat
e910: 4a 53 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65  JSConsoleAppende
e920: 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r();..          
e930: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
e940: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 34              log4
e950: 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 22  jsLogger.error("
e960: 55 6e 73 75 70 70 6f 72 74 65 64 20 22 29 3b 0d  Unsupported ");.
e970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
e980: 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20              ..  
e990: 20 20 20 20 20 20 7d 20 63 61 74 63 68 28 65 29        } catch(e)
e9a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
e9b0: 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 65 72 72  log4jsLogger.err
e9c0: 6f 72 28 22 55 6e 73 75 70 70 6f 72 74 65 64 20  or("Unsupported 
e9d0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ");..        }..
e9e0: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 7d 0d          ..    }.
e9f0: 0a 20 20 20 20 2f 2f 65 6c 73 65 20 7b 0d 0a 20  .    //else {.. 
ea00: 20 20 20 2f 2f 20 20 20 2f 2f 40 74 6f 64 6f 0d     //   //@todo.
ea10: 0a 20 20 20 20 2f 2f 20 20 20 6c 6f 67 34 6a 73  .    //   log4js
ea20: 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 22 55 6e  Logger.error("Un
ea30: 73 75 70 70 6f 72 74 65 64 20 42 72 6f 77 73 65  supported Browse
ea40: 72 22 29 3b 0d 0a 20 20 20 20 2f 2f 7d 0d 0a 7d  r");..    //}..}
ea50: 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 42 72 6f 77  ;....Log4js.Brow
ea60: 73 65 72 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64  serConsoleAppend
ea70: 65 72 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c  er.prototype = L
ea80: 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77  og4js.extend(new
ea90: 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72   Log4js.Appender
eaa0: 28 29 2c 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a  (), {  ..    /**
eab0: 20 0d 0a 20 20 20 20 2a 20 40 73 65 65 20 4c 6f   ..    * @see Lo
eac0: 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 23 64 6f  g4js.Appender#do
ead0: 41 70 70 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a  Append..    */..
eae0: 20 20 20 20 64 6f 41 70 70 65 6e 64 3a 20 66 75      doAppend: fu
eaf0: 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76  nction(loggingEv
eb00: 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ent) {..        
eb10: 74 68 69 73 2e 63 6f 6e 73 6f 6c 65 44 65 6c 65  this.consoleDele
eb20: 67 61 74 65 2e 64 6f 41 70 70 65 6e 64 28 6c 6f  gate.doAppend(lo
eb30: 67 67 69 6e 67 45 76 65 6e 74 29 3b 0d 0a 20 20  ggingEvent);..  
eb40: 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a    },..    /** ..
eb50: 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a      * @see Log4j
eb60: 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 43 6c 65  s.Appender#doCle
eb70: 61 72 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  ar..    */..    
eb80: 64 6f 43 6c 65 61 72 3a 20 66 75 6e 63 74 69 6f  doClear: functio
eb90: 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74  n() {..        t
eba0: 68 69 73 2e 63 6f 6e 73 6f 6c 65 44 65 6c 65 67  his.consoleDeleg
ebb0: 61 74 65 2e 64 6f 43 6c 65 61 72 28 29 3b 0d 0a  ate.doClear();..
ebc0: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 0d      },..    /**.
ebd0: 0a 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34  .    * @see Log4
ebe0: 6a 73 2e 41 70 70 65 6e 64 65 72 23 73 65 74 4c  js.Appender#setL
ebf0: 61 79 6f 75 74 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ayout..    */.. 
ec00: 20 20 20 73 65 74 4c 61 79 6f 75 74 3a 20 66 75     setLayout: fu
ec10: 6e 63 74 69 6f 6e 28 6c 61 79 6f 75 74 29 7b 0d  nction(layout){.
ec20: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f  .        this.co
ec30: 6e 73 6f 6c 65 44 65 6c 65 67 61 74 65 2e 73 65  nsoleDelegate.se
ec40: 74 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 29 3b  tLayout(layout);
ec50: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a  ..    },..    ..
ec60: 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20      /** ..    * 
ec70: 74 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f  toString..    */
ec80: 0d 0a 20 20 20 20 74 6f 53 74 72 69 6e 67 3a 20  ..    toString: 
ec90: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
eca0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 4c 6f        return "Lo
ecb0: 67 34 6a 73 2e 42 72 6f 77 73 65 72 43 6f 6e 73  g4js.BrowserCons
ecc0: 6f 6c 65 41 70 70 65 6e 64 65 72 3a 20 22 20 2b  oleAppender: " +
ecd0: 20 74 68 69 73 2e 63 6f 6e 73 6f 6c 65 44 65 6c   this.consoleDel
ece0: 65 67 61 74 65 2e 74 6f 53 74 72 69 6e 67 28 29  egate.toString()
ecf0: 3b 20 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d 0a  ; ..    }..});..
ed00: 0d 0a 2f 2a 2a 0d 0a 2a 20 53 69 6d 70 6c 65 4c  ../**..* SimpleL
ed10: 61 79 6f 75 74 20 63 6f 6e 73 69 73 74 73 20 6f  ayout consists o
ed20: 66 20 74 68 65 20 6c 65 76 65 6c 20 6f 66 20 74  f the level of t
ed30: 68 65 20 6c 6f 67 20 73 74 61 74 65 6d 65 6e 74  he log statement
ed40: 2c 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 22 20  , followed by " 
ed50: 2d 20 22 20 0d 0a 2a 20 61 6e 64 20 74 68 65 6e  - " ..* and then
ed60: 20 74 68 65 20 6c 6f 67 20 6d 65 73 73 61 67 65   the log message
ed70: 20 69 74 73 65 6c 66 2e 20 46 6f 72 20 65 78 61   itself. For exa
ed80: 6d 70 6c 65 2c 0d 0a 2a 20 3c 63 6f 64 65 3e 44  mple,..* <code>D
ed90: 45 42 55 47 20 2d 20 48 65 6c 6c 6f 20 77 6f 72  EBUG - Hello wor
eda0: 6c 64 3c 2f 63 6f 64 65 3e 0d 0a 2a 0d 0a 2a 20  ld</code>..*..* 
edb0: 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20  @constructor..* 
edc0: 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e  @extends Log4js.
edd0: 4c 61 79 6f 75 74 0d 0a 2a 20 40 65 78 74 65 6e  Layout..* @exten
ede0: 64 73 20 4c 61 79 6f 75 74 0d 0a 2a 20 40 61 75  ds Layout..* @au
edf0: 74 68 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72  thor Stephan Str
ee00: 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c  ittmatter..*/..L
ee10: 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c 61 79 6f  og4js.SimpleLayo
ee20: 75 74 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20  ut = function() 
ee30: 7b 0d 0a 20 20 20 20 74 68 69 73 2e 4c 49 4e 45  {..    this.LINE
ee40: 5f 53 45 50 20 20 3d 20 22 5c 6e 22 3b 0d 0a 20  _SEP  = "\n";.. 
ee50: 20 20 20 74 68 69 73 2e 4c 49 4e 45 5f 53 45 50     this.LINE_SEP
ee60: 5f 4c 45 4e 20 3d 20 31 3b 0d 0a 7d 3b 0d 0a 0d  _LEN = 1;..};...
ee70: 0a 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c 61  .Log4js.SimpleLa
ee80: 79 6f 75 74 2e 70 72 6f 74 6f 74 79 70 65 20 3d  yout.prototype =
ee90: 20 4c 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e   Log4js.extend(n
eea0: 65 77 20 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74  ew Log4js.Layout
eeb0: 28 29 2c 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d  (), {..    /** .
eec0: 0a 20 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74  .    * Implement
eed0: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20   this method to 
eee0: 63 72 65 61 74 65 20 79 6f 75 72 20 6f 77 6e 20  create your own 
eef0: 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 0d 0a  layout format...
ef00: 20 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 4c 6f      * @param {Lo
ef10: 67 34 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65 6e  g4js.LoggingEven
ef20: 74 7d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20  t} loggingEvent 
ef30: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 74 6f 20  loggingEvent to 
ef40: 66 6f 72 6d 61 74 0d 0a 20 20 20 20 2a 20 40 72  format..    * @r
ef50: 65 74 75 72 6e 20 66 6f 72 6d 61 74 74 65 64 20  eturn formatted 
ef60: 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74  String..    * @t
ef70: 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20  ype String..    
ef80: 2a 2f 0d 0a 20 20 20 20 66 6f 72 6d 61 74 3a 20  */..    format: 
ef90: 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67  function(logging
efa0: 45 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20  Event) {..      
efb0: 20 20 72 65 74 75 72 6e 20 6c 6f 67 67 69 6e 67    return logging
efc0: 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53 74  Event.level.toSt
efd0: 72 69 6e 67 28 29 20 2b 20 22 20 2d 20 22 20 2b  ring() + " - " +
efe0: 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6d 65   loggingEvent.me
eff0: 73 73 61 67 65 20 2b 20 74 68 69 73 2e 4c 49 4e  ssage + this.LIN
f000: 45 5f 53 45 50 3b 0d 0a 20 20 20 20 7d 2c 0d 0a  E_SEP;..    },..
f010: 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20      /** ..    * 
f020: 52 65 74 75 72 6e 73 20 74 68 65 20 63 6f 6e 74  Returns the cont
f030: 65 6e 74 20 74 79 70 65 20 6f 75 74 70 75 74 20  ent type output 
f040: 62 79 20 74 68 69 73 20 6c 61 79 6f 75 74 2e 20  by this layout. 
f050: 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20  ..    * @return 
f060: 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 72  The base class r
f070: 65 74 75 72 6e 73 20 22 74 65 78 74 2f 70 6c 61  eturns "text/pla
f080: 69 6e 22 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70  in"...    * @typ
f090: 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f  e String..    */
f0a0: 0d 0a 20 20 20 20 67 65 74 43 6f 6e 74 65 6e 74  ..    getContent
f0b0: 54 79 70 65 3a 20 66 75 6e 63 74 69 6f 6e 28 29  Type: function()
f0c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
f0d0: 72 6e 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 3b  rn "text/plain";
f0e0: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a  ..    },..    /*
f0f0: 2a 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72  * ..    * @retur
f100: 6e 20 52 65 74 75 72 6e 73 20 74 68 65 20 68 65  n Returns the he
f110: 61 64 65 72 20 66 6f 72 20 74 68 65 20 6c 61 79  ader for the lay
f120: 6f 75 74 20 66 6f 72 6d 61 74 2e 20 54 68 65 20  out format. The 
f130: 62 61 73 65 20 63 6c 61 73 73 20 72 65 74 75 72  base class retur
f140: 6e 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2a 20  ns null...    * 
f150: 40 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20  @type String..  
f160: 20 20 2a 2f 0d 0a 20 20 20 20 67 65 74 48 65 61    */..    getHea
f170: 64 65 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  der: function() 
f180: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
f190: 6e 20 22 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20  n "";..    },.. 
f1a0: 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40     /** ..    * @
f1b0: 72 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20 74  return Returns t
f1c0: 68 65 20 66 6f 6f 74 65 72 20 66 6f 72 20 74 68  he footer for th
f1d0: 65 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e  e layout format.
f1e0: 20 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   The base class 
f1f0: 72 65 74 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20  returns null... 
f200: 20 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e     * @type Strin
f210: 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67  g..    */..    g
f220: 65 74 46 6f 6f 74 65 72 3a 20 66 75 6e 63 74 69  etFooter: functi
f230: 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  on() {..        
f240: 72 65 74 75 72 6e 20 22 22 3b 0d 0a 20 20 20 20  return "";..    
f250: 7d 0d 0a 7d 29 3b 0d 0a 20 20 20 20 0d 0a 2f 2a  }..});..    ../*
f260: 2a 0d 0a 2a 20 42 61 73 69 63 4c 61 79 6f 75 74  *..* BasicLayout
f270: 20 69 73 20 61 20 73 69 6d 70 6c 65 20 6c 61 79   is a simple lay
f280: 6f 75 74 20 66 6f 72 20 73 74 6f 72 69 6e 67 20  out for storing 
f290: 74 68 65 20 6c 6f 67 67 73 2e 20 54 68 65 20 6c  the loggs. The l
f2a0: 6f 67 67 73 20 61 72 65 20 73 74 6f 72 65 64 0d  oggs are stored.
f2b0: 0a 2a 20 69 6e 20 66 6f 6c 6c 6f 77 69 6e 67 20  .* in following 
f2c0: 66 6f 72 6d 61 74 3a 0d 0a 2a 20 3c 70 72 65 3e  format:..* <pre>
f2d0: 0d 0a 2a 20 63 61 74 65 67 6f 72 79 4e 61 6d 65  ..* categoryName
f2e0: 7e 73 74 61 72 74 54 69 6d 65 20 5b 6c 6f 67 4c  ~startTime [logL
f2f0: 65 76 65 6c 5d 20 6d 65 73 73 61 67 65 5c 6e 0d  evel] message\n.
f300: 0a 2a 20 3c 2f 70 72 65 3e 0d 0a 2a 0d 0a 2a 20  .* </pre>..*..* 
f310: 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20  @constructor..* 
f320: 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e  @extends Log4js.
f330: 4c 61 79 6f 75 74 0d 0a 2a 20 40 61 75 74 68 6f  Layout..* @autho
f340: 72 20 53 74 65 70 68 61 6e 20 53 74 72 69 74 74  r Stephan Stritt
f350: 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34  matter..*/..Log4
f360: 6a 73 2e 42 61 73 69 63 4c 61 79 6f 75 74 20 3d  js.BasicLayout =
f370: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
f380: 20 20 20 74 68 69 73 2e 4c 49 4e 45 5f 53 45 50     this.LINE_SEP
f390: 20 20 3d 20 22 5c 6e 22 3b 0d 0a 7d 3b 0d 0a 0d    = "\n";..};...
f3a0: 0a 4c 6f 67 34 6a 73 2e 42 61 73 69 63 4c 61 79  .Log4js.BasicLay
f3b0: 6f 75 74 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20  out.prototype = 
f3c0: 4c 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65  Log4js.extend(ne
f3d0: 77 20 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 28  w Log4js.Layout(
f3e0: 29 2c 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a  ), {..    /** ..
f3f0: 20 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 20      * Implement 
f400: 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20 63  this method to c
f410: 72 65 61 74 65 20 79 6f 75 72 20 6f 77 6e 20 6c  reate your own l
f420: 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 0d 0a 20  ayout format... 
f430: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 4c 6f 67     * @param {Log
f440: 34 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65 6e 74  4js.LoggingEvent
f450: 7d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 6c  } loggingEvent l
f460: 6f 67 67 69 6e 67 45 76 65 6e 74 20 74 6f 20 66  oggingEvent to f
f470: 6f 72 6d 61 74 0d 0a 20 20 20 20 2a 20 40 72 65  ormat..    * @re
f480: 74 75 72 6e 20 66 6f 72 6d 61 74 74 65 64 20 53  turn formatted S
f490: 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74 79  tring..    * @ty
f4a0: 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a  pe String..    *
f4b0: 2f 0d 0a 20 20 20 20 66 6f 72 6d 61 74 3a 20 66  /..    format: f
f4c0: 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45  unction(loggingE
f4d0: 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20  vent) {..       
f4e0: 20 72 65 74 75 72 6e 20 6c 6f 67 67 69 6e 67 45   return loggingE
f4f0: 76 65 6e 74 2e 63 61 74 65 67 6f 72 79 4e 61 6d  vent.categoryNam
f500: 65 20 2b 20 22 7e 22 20 2b 20 6c 6f 67 67 69 6e  e + "~" + loggin
f510: 67 45 76 65 6e 74 2e 73 74 61 72 74 54 69 6d 65  gEvent.startTime
f520: 2e 74 6f 4c 6f 63 61 6c 65 53 74 72 69 6e 67 28  .toLocaleString(
f530: 29 20 2b 20 22 20 5b 22 20 2b 20 6c 6f 67 67 69  ) + " [" + loggi
f540: 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f  ngEvent.level.to
f550: 53 74 72 69 6e 67 28 29 20 2b 20 22 5d 20 22 20  String() + "] " 
f560: 2b 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6d  + loggingEvent.m
f570: 65 73 73 61 67 65 20 2b 20 74 68 69 73 2e 4c 49  essage + this.LI
f580: 4e 45 5f 53 45 50 3b 0d 0a 20 20 20 20 7d 2c 0d  NE_SEP;..    },.
f590: 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a  .    /** ..    *
f5a0: 20 52 65 74 75 72 6e 73 20 74 68 65 20 63 6f 6e   Returns the con
f5b0: 74 65 6e 74 20 74 79 70 65 20 6f 75 74 70 75 74  tent type output
f5c0: 20 62 79 20 74 68 69 73 20 6c 61 79 6f 75 74 2e   by this layout.
f5d0: 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e   ..    * @return
f5e0: 20 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   The base class 
f5f0: 72 65 74 75 72 6e 73 20 22 74 65 78 74 2f 70 6c  returns "text/pl
f600: 61 69 6e 22 2e 0d 0a 20 20 20 20 2a 20 40 74 79  ain"...    * @ty
f610: 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a  pe String..    *
f620: 2f 0d 0a 20 20 20 20 67 65 74 43 6f 6e 74 65 6e  /..    getConten
f630: 74 54 79 70 65 3a 20 66 75 6e 63 74 69 6f 6e 28  tType: function(
f640: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ) {..        ret
f650: 75 72 6e 20 22 74 65 78 74 2f 70 6c 61 69 6e 22  urn "text/plain"
f660: 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f  ;..    },..    /
f670: 2a 2a 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75  ** ..    * @retu
f680: 72 6e 20 52 65 74 75 72 6e 73 20 74 68 65 20 68  rn Returns the h
f690: 65 61 64 65 72 20 66 6f 72 20 74 68 65 20 6c 61  eader for the la
f6a0: 79 6f 75 74 20 66 6f 72 6d 61 74 2e 20 54 68 65  yout format. The
f6b0: 20 62 61 73 65 20 63 6c 61 73 73 20 72 65 74 75   base class retu
f6c0: 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2a  rns null...    *
f6d0: 20 40 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20   @type String.. 
f6e0: 20 20 20 2a 2f 0d 0a 20 20 20 20 67 65 74 48 65     */..    getHe
f6f0: 61 64 65 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29  ader: function()
f700: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
f710: 72 6e 20 22 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a  rn "";..    },..
f720: 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20      /** ..    * 
f730: 40 72 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20  @return Returns 
f740: 74 68 65 20 66 6f 6f 74 65 72 20 66 6f 72 20 74  the footer for t
f750: 68 65 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74  he layout format
f760: 2e 20 54 68 65 20 62 61 73 65 20 63 6c 61 73 73  . The base class
f770: 20 72 65 74 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a   returns null...
f780: 20 20 20 20 2a 20 40 74 79 70 65 20 53 74 72 69      * @type Stri
f790: 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  ng..    */..    
f7a0: 67 65 74 46 6f 6f 74 65 72 3a 20 66 75 6e 63 74  getFooter: funct
f7b0: 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ion() {..       
f7c0: 20 72 65 74 75 72 6e 20 22 22 3b 0d 0a 20 20 20   return "";..   
f7d0: 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a   }..});..../**..
f7e0: 2a 20 48 74 6d 6c 4c 61 79 6f 75 74 20 77 72 69  * HtmlLayout wri
f7f0: 74 65 20 74 68 65 20 6c 6f 67 73 20 69 6e 20 48  te the logs in H
f800: 74 6d 6c 20 66 6f 72 6d 61 74 2e 0d 0a 2a 0d 0a  tml format...*..
f810: 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a  * @constructor..
f820: 2a 20 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a  * @extends Log4j
f830: 73 2e 4c 61 79 6f 75 74 0d 0a 2a 20 40 61 75 74  s.Layout..* @aut
f840: 68 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72 69  hor Stephan Stri
f850: 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f  ttmatter..*/..Lo
f860: 67 34 6a 73 2e 48 74 6d 6c 4c 61 79 6f 75 74 20  g4js.HtmlLayout 
f870: 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 72 65  = function() {re
f880: 74 75 72 6e 3b 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a  turn;};....Log4j
f890: 73 2e 48 74 6d 6c 4c 61 79 6f 75 74 2e 70 72 6f  s.HtmlLayout.pro
f8a0: 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a 73 2e  totype = Log4js.
f8b0: 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67 34 6a  extend(new Log4j
f8c0: 73 2e 4c 61 79 6f 75 74 28 29 2c 20 7b 0d 0a 20  s.Layout(), {.. 
f8d0: 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 49     /** ..    * I
f8e0: 6d 70 6c 65 6d 65 6e 74 20 74 68 69 73 20 6d 65  mplement this me
f8f0: 74 68 6f 64 20 74 6f 20 63 72 65 61 74 65 20 79  thod to create y
f900: 6f 75 72 20 6f 77 6e 20 6c 61 79 6f 75 74 20 66  our own layout f
f910: 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 2a 20 40 70  ormat...    * @p
f920: 61 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 6f 67  aram {Log4js.Log
f930: 67 69 6e 67 45 76 65 6e 74 7d 20 6c 6f 67 67 69  gingEvent} loggi
f940: 6e 67 45 76 65 6e 74 20 6c 6f 67 67 69 6e 67 45  ngEvent loggingE
f950: 76 65 6e 74 20 74 6f 20 66 6f 72 6d 61 74 0d 0a  vent to format..
f960: 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 66 6f      * @return fo
f970: 72 6d 61 74 74 65 64 20 53 74 72 69 6e 67 0d 0a  rmatted String..
f980: 20 20 20 20 2a 20 40 74 79 70 65 20 53 74 72 69      * @type Stri
f990: 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  ng..    */..    
f9a0: 66 6f 72 6d 61 74 3a 20 66 75 6e 63 74 69 6f 6e  format: function
f9b0: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b  (loggingEvent) {
f9c0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
f9d0: 20 22 3c 64 69 76 20 73 74 79 6c 65 3d 5c 22 22   "<div style=\""
f9e0: 20 2b 20 74 68 69 73 2e 67 65 74 53 74 79 6c 65   + this.getStyle
f9f0: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 2b  (loggingEvent) +
fa00: 20 22 5c 22 3e 22 20 2b 20 6c 6f 67 67 69 6e 67   "\">" + logging
fa10: 45 76 65 6e 74 2e 67 65 74 46 6f 72 6d 61 74 74  Event.getFormatt
fa20: 65 64 54 69 6d 65 73 74 61 6d 70 28 29 20 2b 20  edTimestamp() + 
fa30: 22 20 2d 20 22 20 2b 20 6c 6f 67 67 69 6e 67 45  " - " + loggingE
fa40: 76 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53 74 72  vent.level.toStr
fa50: 69 6e 67 28 29 20 2b 20 22 20 2d 20 22 20 2b 20  ing() + " - " + 
fa60: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6d 65 73  loggingEvent.mes
fa70: 73 61 67 65 20 2b 20 22 3c 2f 64 69 76 3e 5c 6e  sage + "</div>\n
fa80: 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  ";..    },..    
fa90: 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 52 65 74 75  /** ..    * Retu
faa0: 72 6e 73 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  rns the content 
fab0: 74 79 70 65 20 6f 75 74 70 75 74 20 62 79 20 74  type output by t
fac0: 68 69 73 20 6c 61 79 6f 75 74 2e 20 0d 0a 20 20  his layout. ..  
fad0: 20 20 2a 20 40 72 65 74 75 72 6e 20 54 68 65 20    * @return The 
fae0: 62 61 73 65 20 63 6c 61 73 73 20 72 65 74 75 72  base class retur
faf0: 6e 73 20 22 74 65 78 74 2f 68 74 6d 6c 22 2e 0d  ns "text/html"..
fb00: 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53 74 72  .    * @type Str
fb10: 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  ing..    */..   
fb20: 20 67 65 74 43 6f 6e 74 65 6e 74 54 79 70 65 3a   getContentType:
fb30: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
fb40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 74         return "t
fb50: 65 78 74 2f 68 74 6d 6c 22 3b 0d 0a 20 20 20 20  ext/html";..    
fb60: 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20  },..    /** ..  
fb70: 20 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75    * @return Retu
fb80: 72 6e 73 20 74 68 65 20 68 65 61 64 65 72 20 66  rns the header f
fb90: 6f 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f  or the layout fo
fba0: 72 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63  rmat. The base c
fbb0: 6c 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c  lass returns nul
fbc0: 6c 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  l...    * @type 
fbd0: 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a  String..    */..
fbe0: 20 20 20 20 67 65 74 48 65 61 64 65 72 3a 20 66      getHeader: f
fbf0: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
fc00: 20 20 20 20 20 72 65 74 75 72 6e 20 22 3c 68 74       return "<ht
fc10: 6d 6c 3e 3c 68 65 61 64 3e 3c 74 69 74 6c 65 3e  ml><head><title>
fc20: 6c 6f 67 34 6a 73 3c 2f 68 65 61 64 3e 3c 62 6f  log4js</head><bo
fc30: 64 79 3e 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20  dy>";..    },.. 
fc40: 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40     /** ..    * @
fc50: 72 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20 74  return Returns t
fc60: 68 65 20 66 6f 6f 74 65 72 20 66 6f 72 20 74 68  he footer for th
fc70: 65 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e  e layout format.
fc80: 20 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   The base class 
fc90: 72 65 74 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20  returns null... 
fca0: 20 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e     * @type Strin
fcb0: 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67  g..    */..    g
fcc0: 65 74 46 6f 6f 74 65 72 3a 20 66 75 6e 63 74 69  etFooter: functi
fcd0: 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  on() {..        
fce0: 72 65 74 75 72 6e 20 22 3c 2f 62 6f 64 79 3e 3c  return "</body><
fcf0: 2f 68 74 6d 6c 3e 22 3b 0d 0a 20 20 20 20 7d 2c  /html>";..    },
fd00: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 67 65 74 53  ..    ..    getS
fd10: 74 79 6c 65 3a 20 66 75 6e 63 74 69 6f 6e 28 6c  tyle: function(l
fd20: 6f 67 67 69 6e 67 45 76 65 6e 74 29 0d 0a 20 20  oggingEvent)..  
fd30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72    {..        var
fd40: 20 73 74 79 6c 65 3b 0d 0a 20 20 20 20 20 20 20   style;..       
fd50: 20 69 66 20 28 6c 6f 67 67 69 6e 67 45 76 65 6e   if (loggingEven
fd60: 74 2e 6c 65 76 65 6c 2e 74 6f 53 74 72 69 6e 67  t.level.toString
fd70: 28 29 2e 73 65 61 72 63 68 28 2f 45 52 52 4f 52  ().search(/ERROR
fd80: 2f 29 20 21 3d 20 2d 31 29 20 7b 20 0d 0a 20 20  /) != -1) { ..  
fd90: 20 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20            style 
fda0: 3d 20 27 63 6f 6c 6f 72 3a 72 65 64 27 3b 0d 0a  = 'color:red';..
fdb0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
fdc0: 66 20 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e  f (loggingEvent.
fdd0: 6c 65 76 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29  level.toString()
fde0: 2e 73 65 61 72 63 68 28 2f 46 41 54 41 4c 2f 29  .search(/FATAL/)
fdf0: 20 21 3d 20 2d 31 29 20 7b 20 0d 0a 20 20 20 20   != -1) { ..    
fe00: 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 3d 20          style = 
fe10: 27 63 6f 6c 6f 72 3a 72 65 64 27 3b 0d 0a 20 20  'color:red';..  
fe20: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
fe30: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65  (loggingEvent.le
fe40: 76 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73  vel.toString().s
fe50: 65 61 72 63 68 28 2f 57 41 52 4e 2f 29 20 21 3d  earch(/WARN/) !=
fe60: 20 2d 31 29 20 7b 20 0d 0a 20 20 20 20 20 20 20   -1) { ..       
fe70: 20 20 20 20 20 73 74 79 6c 65 20 3d 20 27 63 6f       style = 'co
fe80: 6c 6f 72 3a 6f 72 61 6e 67 65 27 3b 0d 0a 20 20  lor:orange';..  
fe90: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
fea0: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65  (loggingEvent.le
feb0: 76 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73  vel.toString().s
fec0: 65 61 72 63 68 28 2f 44 45 42 55 47 2f 29 20 21  earch(/DEBUG/) !
fed0: 3d 20 2d 31 29 20 7b 0d 0a 20 20 20 20 20 20 20  = -1) {..       
fee0: 20 20 20 20 20 73 74 79 6c 65 20 3d 20 27 63 6f       style = 'co
fef0: 6c 6f 72 3a 67 72 65 65 6e 27 3b 0d 0a 20 20 20  lor:green';..   
ff00: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
ff10: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76  loggingEvent.lev
ff20: 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73 65  el.toString().se
ff30: 61 72 63 68 28 2f 49 4e 46 4f 2f 29 20 21 3d 20  arch(/INFO/) != 
ff40: 2d 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  -1) {..         
ff50: 20 20 20 73 74 79 6c 65 20 3d 20 27 63 6f 6c 6f     style = 'colo
ff60: 72 3a 77 68 69 74 65 27 3b 0d 0a 20 20 20 20 20  r:white';..     
ff70: 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20     } else {..   
ff80: 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 3d           style =
ff90: 20 27 63 6f 6c 6f 72 3a 79 65 6c 6c 6f 77 27 3b   'color:yellow';
ffa0: 0d 0a 20 20 20 20 20 20 20 20 7d 09 0d 0a 20 20  ..        }...  
ffb0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 79        return sty
ffc0: 6c 65 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d  le;..    }..});.
ffd0: 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 58 4d 4c 4c 61 79  .../**..* XMLLay
ffe0: 6f 75 74 20 77 72 69 74 65 20 74 68 65 20 6c 6f  out write the lo
fff0: 67 73 20 69 6e 20 58 4d 4c 20 66 6f 72 6d 61 74  gs in XML format
10000 2e 0d 0a 2a 20 4c 61 79 6f 75 74 20 69 73 20 73  ...* Layout is s
10010 69 6d 6d 69 6c 61 72 20 74 6f 20 6c 6f 67 34 6a  immilar to log4j
10020 27 73 20 58 4d 4c 4c 61 79 6f 75 74 3a 0d 0a 2a  's XMLLayout:..*
10030 20 3c 70 72 65 3e 0d 0a 2a 20 3c 6c 6f 67 34 6a   <pre>..* <log4j
10040 73 3a 65 76 65 6e 74 20 63 61 74 65 67 6f 72 79  s:event category
10050 3d 22 63 61 74 65 67 6f 72 79 22 20 6c 65 76 65  ="category" leve
10060 6c 3d 22 4c 65 76 65 6c 22 20 63 6c 69 65 6e 74  l="Level" client
10070 3d 22 43 6c 69 65 6e 74 22 20 72 65 66 65 72 65  ="Client" refere
10080 72 3d 22 72 65 66 22 20 74 69 6d 65 73 74 61 6d  r="ref" timestam
10090 3d 22 44 61 74 65 22 3e 0d 0a 2a 20 3c 6c 6f 67  ="Date">..* <log
100a0 34 6a 73 3a 6d 65 73 73 61 67 65 3e 4c 6f 67 67  4js:message>Logg
100b0 65 64 20 6d 65 73 73 61 67 65 3c 2f 6c 6f 67 34  ed message</log4
100c0 6a 73 3a 6d 65 73 73 61 67 65 3e 0d 0a 2a 20 3c  js:message>..* <
100d0 2f 6c 6f 67 34 6a 73 3a 65 76 65 6e 74 3e 0d 0a  /log4js:event>..
100e0 2a 20 3c 2f 70 72 65 3e 0d 0a 2a 20 40 63 6f 6e  * </pre>..* @con
100f0 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40 65 78 74  structor..* @ext
10100 65 6e 64 73 20 4c 61 79 6f 75 74 0d 0a 2a 20 40  ends Layout..* @
10110 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20 53  author Stephan S
10120 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d  trittmatter..*/.
10130 0a 4c 6f 67 34 6a 73 2e 58 4d 4c 4c 61 79 6f 75  .Log4js.XMLLayou
10140 74 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 7b 72  t = function(){r
10150 65 74 75 72 6e 3b 7d 3b 0d 0a 4c 6f 67 34 6a 73  eturn;};..Log4js
10160 2e 58 4d 4c 4c 61 79 6f 75 74 2e 70 72 6f 74 6f  .XMLLayout.proto
10170 74 79 70 65 20 3d 20 4c 6f 67 34 6a 73 2e 65 78  type = Log4js.ex
10180 74 65 6e 64 28 6e 65 77 20 4c 6f 67 34 6a 73 2e  tend(new Log4js.
10190 4c 61 79 6f 75 74 28 29 2c 20 7b 0d 0a 20 20 20  Layout(), {..   
101a0 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 49 6d 70   /** ..    * Imp
101b0 6c 65 6d 65 6e 74 20 74 68 69 73 20 6d 65 74 68  lement this meth
101c0 6f 64 20 74 6f 20 63 72 65 61 74 65 20 79 6f 75  od to create you
101d0 72 20 6f 77 6e 20 6c 61 79 6f 75 74 20 66 6f 72  r own layout for
101e0 6d 61 74 2e 0d 0a 20 20 20 20 2a 20 40 70 61 72  mat...    * @par
101f0 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 6f 67 67 69  am {Log4js.Loggi
10200 6e 67 45 76 65 6e 74 7d 20 6c 6f 67 67 69 6e 67  ngEvent} logging
10210 45 76 65 6e 74 20 6c 6f 67 67 69 6e 67 45 76 65  Event loggingEve
10220 6e 74 20 74 6f 20 66 6f 72 6d 61 74 0d 0a 20 20  nt to format..  
10230 20 20 2a 20 40 72 65 74 75 72 6e 20 66 6f 72 6d    * @return form
10240 61 74 74 65 64 20 53 74 72 69 6e 67 0d 0a 20 20  atted String..  
10250 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e 67    * @type String
10260 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 6f  ..    */..    fo
10270 72 6d 61 74 3a 20 66 75 6e 63 74 69 6f 6e 28 6c  rmat: function(l
10280 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b 0d 0a  oggingEvent) {..
10290 20 20 20 20 20 20 20 20 76 61 72 20 75 73 65 72          var user
102a0 61 67 65 6e 74 20 3d 20 22 75 6e 6b 6e 6f 77 6e  agent = "unknown
102b0 22 3b 0d 0a 20 20 20 20 20 20 20 20 74 72 79 20  ";..        try 
102c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75  {..            u
102d0 73 65 72 61 67 65 6e 74 20 3d 20 6e 61 76 69 67  seragent = navig
102e0 61 74 6f 72 2e 75 73 65 72 41 67 65 6e 74 3b 0d  ator.userAgent;.
102f0 0a 20 20 20 20 20 20 20 20 7d 20 63 61 74 63 68  .        } catch
10300 28 65 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  (e){..          
10310 20 20 75 73 65 72 61 67 65 6e 74 20 3d 20 22 75    useragent = "u
10320 6e 6b 6e 6f 77 6e 22 3b 0d 0a 20 20 20 20 20 20  nknown";..      
10330 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20    }..        .. 
10340 20 20 20 20 20 20 20 76 61 72 20 72 65 66 65 72         var refer
10350 65 72 20 3d 20 22 75 6e 6b 6e 6f 77 6e 22 3b 0d  er = "unknown";.
10360 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a  .        try {..
10370 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 65              refe
10380 72 65 72 20 3d 20 6c 6f 63 61 74 69 6f 6e 2e 68  rer = location.h
10390 72 65 66 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20  ref;..        } 
103a0 63 61 74 63 68 28 65 29 7b 0d 0a 20 20 20 20 20  catch(e){..     
103b0 20 20 20 20 20 20 20 72 65 66 65 72 65 72 20 3d         referer =
103c0 20 22 75 6e 6b 6e 6f 77 6e 22 3b 0d 0a 20 20 20   "unknown";..   
103d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
103e0 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
103f0 20 20 76 61 72 20 63 6f 6e 74 65 6e 74 20 3d 20    var content = 
10400 22 3c 6c 6f 67 34 6a 73 3a 65 76 65 6e 74 20 6c  "<log4js:event l
10410 6f 67 67 65 72 3d 5c 22 22 3b 0d 0a 20 20 20 20  ogger=\"";..    
10420 20 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 6c      content += l
10430 6f 67 67 69 6e 67 45 76 65 6e 74 2e 63 61 74 65  oggingEvent.cate
10440 67 6f 72 79 4e 61 6d 65 20 2b 20 22 5c 22 20 6c  goryName + "\" l
10450 65 76 65 6c 3d 5c 22 22 3b 0d 0a 20 20 20 20 20  evel=\"";..     
10460 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 6c 6f     content += lo
10470 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c  ggingEvent.level
10480 2e 74 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 5c  .toString() + "\
10490 22 20 75 73 65 72 61 67 65 6e 74 3d 5c 22 22 3b  " useragent=\"";
104a0 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e  ..        conten
104b0 74 20 2b 3d 20 75 73 65 72 61 67 65 6e 74 20 2b  t += useragent +
104c0 20 22 5c 22 20 72 65 66 65 72 65 72 3d 5c 22 22   "\" referer=\""
104d0 3b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 65  ;..        conte
104e0 6e 74 20 2b 3d 20 72 65 66 65 72 65 72 2e 72 65  nt += referer.re
104f0 70 6c 61 63 65 28 2f 26 2f 67 2c 20 22 26 61 6d  place(/&/g, "&am
10500 70 3b 22 29 20 2b 20 22 5c 22 20 74 69 6d 65 73  p;") + "\" times
10510 74 61 6d 70 3d 5c 22 22 3b 0d 0a 20 20 20 20 20  tamp=\"";..     
10520 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 6c 6f     content += lo
10530 67 67 69 6e 67 45 76 65 6e 74 2e 67 65 74 46 6f  ggingEvent.getFo
10540 72 6d 61 74 74 65 64 54 69 6d 65 73 74 61 6d 70  rmattedTimestamp
10550 28 29 20 2b 20 22 5c 22 3e 5c 6e 22 3b 0d 0a 20  () + "\">\n";.. 
10560 20 20 20 20 20 20 20 63 6f 6e 74 65 6e 74 20 2b         content +
10570 3d 20 22 5c 74 3c 6c 6f 67 34 6a 73 3a 6d 65 73  = "\t<log4js:mes
10580 73 61 67 65 3e 3c 21 5b 43 44 41 54 41 5b 22 20  sage><![CDATA[" 
10590 2b 20 74 68 69 73 2e 65 73 63 61 70 65 43 64 61  + this.escapeCda
105a0 74 61 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e  ta(loggingEvent.
105b0 6d 65 73 73 61 67 65 29 20 2b 20 22 5d 5d 3e 3c  message) + "]]><
105c0 2f 6c 6f 67 34 6a 73 3a 6d 65 73 73 61 67 65 3e  /log4js:message>
105d0 5c 6e 22 3b 09 0d 0a 20 20 20 20 20 20 20 20 0d  \n";...        .
105e0 0a 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 67  .        if (log
105f0 67 69 6e 67 45 76 65 6e 74 2e 65 78 63 65 70 74  gingEvent.except
10600 69 6f 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ion) {..        
10610 20 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 74      content += t
10620 68 69 73 2e 66 6f 72 6d 61 74 45 78 63 65 70 74  his.formatExcept
10630 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74  ion(loggingEvent
10640 2e 65 78 63 65 70 74 69 6f 6e 29 20 3b 0d 0a 20  .exception) ;.. 
10650 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10660 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 22 3c 2f    content += "</
10670 6c 6f 67 34 6a 73 3a 65 76 65 6e 74 3e 5c 6e 22  log4js:event>\n"
10680 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ;..        ..   
10690 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6e 74       return cont
106a0 65 6e 74 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20  ent;..    },..  
106b0 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 52 65    /** ..    * Re
106c0 74 75 72 6e 73 20 74 68 65 20 63 6f 6e 74 65 6e  turns the conten
106d0 74 20 74 79 70 65 20 6f 75 74 70 75 74 20 62 79  t type output by
106e0 20 74 68 69 73 20 6c 61 79 6f 75 74 2e 20 0d 0a   this layout. ..
106f0 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 54 68      * @return Th
10700 65 20 62 61 73 65 20 63 6c 61 73 73 20 72 65 74  e base class ret
10710 75 72 6e 73 20 22 74 65 78 74 2f 78 6d 6c 22 2e  urns "text/xml".
10720 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53 74  ..    * @type St
10730 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  ring..    */..  
10740 20 20 67 65 74 43 6f 6e 74 65 6e 74 54 79 70 65    getContentType
10750 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a  : function() {..
10760 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
10770 74 65 78 74 2f 78 6d 6c 22 3b 0d 0a 20 20 20 20  text/xml";..    
10780 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20  },..    /** ..  
10790 20 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75    * @return Retu
107a0 72 6e 73 20 74 68 65 20 68 65 61 64 65 72 20 66  rns the header f
107b0 6f 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f  or the layout fo
107c0 72 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63  rmat. The base c
107d0 6c 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c  lass returns nul
107e0 6c 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  l...    * @type 
107f0 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a  String..    */..
10800 20 20 20 20 67 65 74 48 65 61 64 65 72 3a 20 66      getHeader: f
10810 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
10820 20 20 20 20 20 72 65 74 75 72 6e 20 22 3c 6c 6f       return "<lo
10830 67 34 6a 73 3a 65 76 65 6e 74 53 65 74 20 76 65  g4js:eventSet ve
10840 72 73 69 6f 6e 3d 5c 22 22 20 2b 20 4c 6f 67 34  rsion=\"" + Log4
10850 6a 73 2e 76 65 72 73 69 6f 6e 20 2b 20 0d 0a 20  js.version + .. 
10860 20 20 20 20 20 20 20 20 20 20 20 22 5c 22 20 78             "\" x
10870 6d 6c 6e 73 3a 6c 6f 67 34 6a 73 3d 5c 22 68 74  mlns:log4js=\"ht
10880 74 70 3a 2f 2f 6c 6f 67 34 6a 73 2e 62 65 72 6c  tp://log4js.berl
10890 69 6f 73 2e 64 65 2f 32 30 30 37 2f 6c 6f 67 34  ios.de/2007/log4
108a0 6a 73 2f 5c 22 3e 5c 6e 22 3b 0d 0a 20 20 20 20  js/\">\n";..    
108b0 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20  },..    /** ..  
108c0 20 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75    * @return Retu
108d0 72 6e 73 20 74 68 65 20 66 6f 6f 74 65 72 20 66  rns the footer f
108e0 6f 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f  or the layout fo
108f0 72 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63  rmat. The base c
10900 6c 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c  lass returns nul
10910 6c 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  l...    * @type 
10920 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a  String..    */..
10930 20 20 20 20 67 65 74 46 6f 6f 74 65 72 3a 20 66      getFooter: f
10940 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
10950 20 20 20 20 20 72 65 74 75 72 6e 20 22 3c 2f 6c       return "</l
10960 6f 67 34 6a 73 3a 65 76 65 6e 74 53 65 74 3e 5c  og4js:eventSet>\
10970 6e 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  n";..    },..   
10980 20 0d 0a 20 20 20 20 67 65 74 53 65 70 61 72 61   ..    getSepara
10990 74 6f 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  tor: function() 
109a0 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
109b0 6e 20 22 5c 6e 22 3b 0d 0a 20 20 20 20 7d 2c 0d  n "\n";..    },.
109c0 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a  .    ..    /**..
109d0 20 20 20 20 2a 20 62 65 74 74 65 72 20 72 65 61      * better rea
109e0 64 61 62 6c 65 20 66 6f 72 6d 61 74 74 65 64 20  dable formatted 
109f0 45 78 63 65 70 74 69 6f 6e 73 2e 0d 0a 20 20 20  Exceptions...   
10a00 20 2a 20 40 70 61 72 61 6d 20 65 78 20 7b 45 78   * @param ex {Ex
10a10 63 65 70 74 69 6f 6e 7d 20 74 68 65 20 65 78 63  ception} the exc
10a20 65 70 74 69 6f 6e 20 74 6f 20 62 65 20 66 6f 72  eption to be for
10a30 6d 61 74 74 65 64 2e 0d 0a 20 20 20 20 2a 20 40  matted...    * @
10a40 72 65 74 75 72 6e 20 7b 53 74 72 69 6e 67 7d 20  return {String} 
10a50 74 68 65 20 66 6f 72 6d 61 74 74 65 64 20 53 74  the formatted St
10a60 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74  ring representat
10a70 69 6f 6e 20 6f 66 20 74 68 65 20 65 78 63 65 70  ion of the excep
10a80 74 69 6f 6e 2e 0d 0a 20 20 20 20 2a 20 40 70 72  tion...    * @pr
10a90 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ivate..    */.. 
10aa0 20 20 20 66 6f 72 6d 61 74 45 78 63 65 70 74 69     formatExcepti
10ab0 6f 6e 3a 20 66 75 6e 63 74 69 6f 6e 28 65 78 29  on: function(ex)
10ac0 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
10ad0 65 78 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ex) {..         
10ae0 20 20 20 76 61 72 20 65 78 53 74 72 20 3d 20 22     var exStr = "
10af0 5c 74 3c 6c 6f 67 34 6a 73 3a 74 68 72 6f 77 61  \t<log4js:throwa
10b00 62 6c 65 3e 22 3b 20 0d 0a 20 20 20 20 20 20 20  ble>"; ..       
10b10 20 20 20 20 20 69 66 20 28 65 78 2e 6d 65 73 73       if (ex.mess
10b20 61 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  age) {..        
10b30 20 20 20 20 20 20 20 20 65 78 53 74 72 20 2b 3d          exStr +=
10b40 20 20 22 5c 74 5c 74 3c 6c 6f 67 34 6a 73 3a 6d    "\t\t<log4js:m
10b50 65 73 73 61 67 65 3e 3c 21 5b 43 44 41 54 41 5b  essage><![CDATA[
10b60 22 20 2b 20 74 68 69 73 2e 65 73 63 61 70 65 43  " + this.escapeC
10b70 64 61 74 61 28 65 78 2e 6d 65 73 73 61 67 65 29  data(ex.message)
10b80 20 2b 20 22 5d 5d 3e 3c 2f 6c 6f 67 34 6a 73 3a   + "]]></log4js:
10b90 6d 65 73 73 61 67 65 3e 5c 6e 22 3b 09 0d 0a 20  message>\n";... 
10ba0 20 20 20 20 20 20 20 20 20 20 20 7d 20 0d 0a 20             } .. 
10bb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
10bc0 78 2e 64 65 73 63 72 69 70 74 69 6f 6e 29 20 7b  x.description) {
10bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10be0 20 20 65 78 53 74 72 20 2b 3d 20 20 22 5c 74 5c    exStr +=  "\t\
10bf0 74 3c 6c 6f 67 34 6a 73 3a 64 65 73 63 72 69 70  t<log4js:descrip
10c00 74 69 6f 6e 3e 3c 21 5b 43 44 41 54 41 5b 22 20  tion><![CDATA[" 
10c10 2b 20 74 68 69 73 2e 65 73 63 61 70 65 43 64 61  + this.escapeCda
10c20 74 61 28 65 78 2e 64 65 73 63 72 69 70 74 69 6f  ta(ex.descriptio
10c30 6e 29 20 2b 20 22 5d 5d 3e 3c 2f 6c 6f 67 34 6a  n) + "]]></log4j
10c40 73 3a 64 65 73 63 72 69 70 74 69 6f 6e 3e 5c 6e  s:description>\n
10c50 22 3b 09 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ";...           
10c60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
10c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78  ..            ex
10c80 53 74 72 20 2b 3d 20 20 22 5c 74 5c 74 3c 6c 6f  Str +=  "\t\t<lo
10c90 67 34 6a 73 3a 73 74 61 63 6b 74 72 61 63 65 3e  g4js:stacktrace>
10ca0 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
10cb0 65 78 53 74 72 20 2b 3d 20 20 22 5c 74 5c 74 5c  exStr +=  "\t\t\
10cc0 74 3c 6c 6f 67 34 6a 73 3a 6c 6f 63 61 74 69 6f  t<log4js:locatio
10cd0 6e 20 66 69 6c 65 4e 61 6d 65 3d 5c 22 22 2b 65  n fileName=\""+e
10ce0 78 2e 66 69 6c 65 4e 61 6d 65 2b 22 5c 22 20 6c  x.fileName+"\" l
10cf0 69 6e 65 4e 75 6d 62 65 72 3d 5c 22 22 2b 65 78  ineNumber=\""+ex
10d00 2e 6c 69 6e 65 4e 75 6d 62 65 72 2b 22 5c 22 20  .lineNumber+"\" 
10d10 2f 3e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  />";..          
10d20 20 20 65 78 53 74 72 20 2b 3d 20 20 22 5c 74 5c    exStr +=  "\t\
10d30 74 3c 2f 6c 6f 67 34 6a 73 3a 73 74 61 63 6b 74  t</log4js:stackt
10d40 72 61 63 65 3e 22 3b 0d 0a 20 20 20 20 20 20 20  race>";..       
10d50 20 20 20 20 20 65 78 53 74 72 20 3d 20 22 5c 74       exStr = "\t
10d60 3c 2f 6c 6f 67 34 6a 73 3a 74 68 72 6f 77 61 62  </log4js:throwab
10d70 6c 65 3e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  le>";..         
10d80 20 20 20 72 65 74 75 72 6e 20 65 78 53 74 72 3b     return exStr;
10d90 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
10da0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
10db0 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f  ;..    },..    /
10dc0 2a 2a 0d 0a 20 20 20 20 2a 20 45 73 63 61 70 65  **..    * Escape
10dd0 20 43 64 61 74 61 20 6d 65 73 73 61 67 65 73 0d   Cdata messages.
10de0 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74  .    * @param st
10df0 72 20 7b 53 74 72 69 6e 67 7d 20 6d 65 73 73 61  r {String} messa
10e00 67 65 20 74 6f 20 65 73 63 61 70 65 0d 0a 20 20  ge to escape..  
10e10 20 20 2a 20 40 72 65 74 75 72 6e 20 7b 53 74 72    * @return {Str
10e20 69 6e 67 7d 20 74 68 65 20 65 73 63 61 70 65 64  ing} the escaped
10e30 20 6d 65 73 73 61 67 65 0d 0a 20 20 20 20 2a 20   message..    * 
10e40 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f  @private..    */
10e50 0d 0a 20 20 20 20 65 73 63 61 70 65 43 64 61 74  ..    escapeCdat
10e60 61 3a 20 66 75 6e 63 74 69 6f 6e 28 73 74 72 29  a: function(str)
10e70 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
10e80 72 6e 20 73 74 72 2e 72 65 70 6c 61 63 65 28 2f  rn str.replace(/
10e90 5c 5d 5c 5d 3e 2f 2c 20 22 5d 5d 3e 5d 5d 26 67  \]\]>/, "]]>]]&g
10ea0 74 3b 3c 21 5b 43 44 41 54 41 5b 22 29 3b 0d 0a  t;<![CDATA[");..
10eb0 20 20 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a      }..});..../*
10ec0 2a 0d 0a 2a 20 4a 53 4f 4e 4c 61 79 6f 75 74 20  *..* JSONLayout 
10ed0 77 72 69 74 65 20 74 68 65 20 6c 6f 67 73 20 69  write the logs i
10ee0 6e 20 4a 53 4f 4e 20 66 6f 72 6d 61 74 2e 0d 0a  n JSON format...
10ef0 2a 20 4a 53 4f 4e 20 6c 69 62 72 61 72 79 20 69  * JSON library i
10f00 73 20 72 65 71 75 69 72 65 64 20 74 6f 20 75 73  s required to us
10f10 65 20 74 68 69 73 20 4c 61 79 6f 75 74 2e 20 53  e this Layout. S
10f20 65 65 20 61 6c 73 6f 20 7b 40 6c 69 6e 6b 20 68  ee also {@link h
10f30 74 74 70 3a 2f 2f 77 77 77 2e 6a 73 6f 6e 2e 6f  ttp://www.json.o
10f40 72 67 7d 0d 0a 2a 20 40 63 6f 6e 73 74 72 75 63  rg}..* @construc
10f50 74 6f 72 0d 0a 2a 20 40 65 78 74 65 6e 64 73 20  tor..* @extends 
10f60 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 0d 0a 2a  Log4js.Layout..*
10f70 20 40 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e   @author Stephan
10f80 20 53 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a   Strittmatter..*
10f90 2f 0d 0a 4c 6f 67 34 6a 73 2e 4a 53 4f 4e 4c 61  /..Log4js.JSONLa
10fa0 79 6f 75 74 20 3d 20 66 75 6e 63 74 69 6f 6e 28  yout = function(
10fb0 29 20 7b 0d 0a 20 20 20 20 74 68 69 73 2e 64 66  ) {..    this.df
10fc0 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 44 61   = new Log4js.Da
10fd0 74 65 46 6f 72 6d 61 74 74 65 72 28 29 3b 0d 0a  teFormatter();..
10fe0 7d 3b 0d 0a 4c 6f 67 34 6a 73 2e 4a 53 4f 4e 4c  };..Log4js.JSONL
10ff0 61 79 6f 75 74 2e 70 72 6f 74 6f 74 79 70 65 20  ayout.prototype 
11000 3d 20 4c 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28  = Log4js.extend(
11010 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75  new Log4js.Layou
11020 74 28 29 2c 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20  t(), {..    /** 
11030 0d 0a 20 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e  ..    * Implemen
11040 74 20 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f  t this method to
11050 20 63 72 65 61 74 65 20 79 6f 75 72 20 6f 77 6e   create your own
11060 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 0d   layout format..
11070 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 4c  .    * @param {L
11080 6f 67 34 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65  og4js.LoggingEve
11090 6e 74 7d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74  nt} loggingEvent
110a0 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 74 6f   loggingEvent to
110b0 20 66 6f 72 6d 61 74 0d 0a 20 20 20 20 2a 20 40   format..    * @
110c0 72 65 74 75 72 6e 20 66 6f 72 6d 61 74 74 65 64  return formatted
110d0 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40   String..    * @
110e0 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20  type String..   
110f0 20 2a 2f 0d 0a 20 20 20 20 66 6f 72 6d 61 74 3a   */..    format:
11100 20 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e   function(loggin
11110 67 45 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20  gEvent) {..     
11120 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20     ..           
11130 20 20 20 20 20 76 61 72 20 75 73 65 72 61 67 65       var userage
11140 6e 74 20 3d 20 22 75 6e 6b 6e 6f 77 6e 22 3b 0d  nt = "unknown";.
11150 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a  .        try {..
11160 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72              user
11170 61 67 65 6e 74 20 3d 20 6e 61 76 69 67 61 74 6f  agent = navigato
11180 72 2e 75 73 65 72 41 67 65 6e 74 3b 0d 0a 20 20  r.userAgent;..  
11190 20 20 20 20 20 20 7d 20 63 61 74 63 68 28 65 29        } catch(e)
111a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75  {..            u
111b0 73 65 72 61 67 65 6e 74 20 3d 20 22 75 6e 6b 6e  seragent = "unkn
111c0 6f 77 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 7d  own";..        }
111d0 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20  ..        ..    
111e0 20 20 20 20 76 61 72 20 72 65 66 65 72 65 72 20      var referer 
111f0 3d 20 22 75 6e 6b 6e 6f 77 6e 22 3b 0d 0a 20 20  = "unknown";..  
11200 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20        try {..   
11210 20 20 20 20 20 20 20 20 20 72 65 66 65 72 65 72           referer
11220 20 3d 20 6c 6f 63 61 74 69 6f 6e 2e 68 72 65 66   = location.href
11230 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 63 61 74  ;..        } cat
11240 63 68 28 65 29 7b 0d 0a 20 20 20 20 20 20 20 20  ch(e){..        
11250 20 20 20 20 72 65 66 65 72 65 72 20 3d 20 22 75      referer = "u
11260 6e 6b 6e 6f 77 6e 22 3b 0d 0a 20 20 20 20 20 20  nknown";..      
11270 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20    }..        .. 
11280 20 20 20 20 20 20 20 76 61 72 20 6a 73 6f 6e 53         var jsonS
11290 74 72 69 6e 67 20 3d 20 22 7b 5c 6e 20 5c 22 4c  tring = "{\n \"L
112a0 6f 67 67 69 6e 67 45 76 65 6e 74 5c 22 3a 20 7b  oggingEvent\": {
112b0 5c 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a  \n";..        ..
112c0 20 20 20 20 20 20 20 20 6a 73 6f 6e 53 74 72 69          jsonStri
112d0 6e 67 20 2b 3d 20 22 5c 74 5c 22 6c 6f 67 67 65  ng += "\t\"logge
112e0 72 5c 22 3a 20 5c 22 22 20 2b 20 20 6c 6f 67 67  r\": \"" +  logg
112f0 69 6e 67 45 76 65 6e 74 2e 63 61 74 65 67 6f 72  ingEvent.categor
11300 79 4e 61 6d 65 20 2b 20 22 5c 22 2c 5c 6e 22 3b  yName + "\",\n";
11310 0d 0a 20 20 20 20 20 20 20 20 6a 73 6f 6e 53 74  ..        jsonSt
11320 72 69 6e 67 20 2b 3d 20 22 5c 74 5c 22 6c 65 76  ring += "\t\"lev
11330 65 6c 5c 22 3a 20 5c 22 22 20 2b 20 20 6c 6f 67  el\": \"" +  log
11340 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e  gingEvent.level.
11350 74 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 5c 22  toString() + "\"
11360 2c 5c 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 6a  ,\n";..        j
11370 73 6f 6e 53 74 72 69 6e 67 20 2b 3d 20 22 5c 74  sonString += "\t
11380 5c 22 6d 65 73 73 61 67 65 5c 22 3a 20 5c 22 22  \"message\": \""
11390 20 2b 20 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74   +  loggingEvent
113a0 2e 6d 65 73 73 61 67 65 20 2b 20 22 5c 22 2c 5c  .message + "\",\
113b0 6e 22 3b 20 0d 0a 20 20 20 20 20 20 20 20 6a 73  n"; ..        js
113c0 6f 6e 53 74 72 69 6e 67 20 2b 3d 20 22 5c 74 5c  onString += "\t\
113d0 22 72 65 66 65 72 65 72 5c 22 3a 20 5c 22 22 20  "referer\": \"" 
113e0 2b 20 72 65 66 65 72 65 72 20 2b 20 22 5c 22 2c  + referer + "\",
113f0 5c 6e 22 3b 20 0d 0a 20 20 20 20 20 20 20 20 6a  \n"; ..        j
11400 73 6f 6e 53 74 72 69 6e 67 20 2b 3d 20 22 5c 74  sonString += "\t
11410 5c 22 75 73 65 72 61 67 65 6e 74 5c 22 3a 20 5c  \"useragent\": \
11420 22 22 20 2b 20 75 73 65 72 61 67 65 6e 74 20 2b  "" + useragent +
11430 20 22 5c 22 2c 5c 6e 22 3b 20 0d 0a 20 20 20 20   "\",\n"; ..    
11440 20 20 20 20 6a 73 6f 6e 53 74 72 69 6e 67 20 2b      jsonString +
11450 3d 20 22 5c 74 5c 22 74 69 6d 65 73 74 61 6d 70  = "\t\"timestamp
11460 5c 22 3a 20 5c 22 22 20 2b 20 20 74 68 69 73 2e  \": \"" +  this.
11470 64 66 2e 66 6f 72 6d 61 74 44 61 74 65 28 6c 6f  df.formatDate(lo
11480 67 67 69 6e 67 45 76 65 6e 74 2e 73 74 61 72 74  ggingEvent.start
11490 54 69 6d 65 2c 20 22 79 79 79 79 2d 4d 4d 2d 64  Time, "yyyy-MM-d
114a0 64 54 68 68 3a 6d 6d 3a 73 73 5a 22 29 20 2b 20  dThh:mm:ssZ") + 
114b0 22 5c 22 2c 5c 6e 22 3b 0d 0a 20 20 20 20 20 20  "\",\n";..      
114c0 20 20 6a 73 6f 6e 53 74 72 69 6e 67 20 2b 3d 20    jsonString += 
114d0 22 5c 74 5c 22 65 78 63 65 70 74 69 6f 6e 5c 22  "\t\"exception\"
114e0 3a 20 5c 22 22 20 2b 20 20 6c 6f 67 67 69 6e 67  : \"" +  logging
114f0 45 76 65 6e 74 2e 65 78 63 65 70 74 69 6f 6e 20  Event.exception 
11500 2b 20 22 5c 22 5c 6e 22 3b 20 0d 0a 20 20 20 20  + "\"\n"; ..    
11510 20 20 20 20 6a 73 6f 6e 53 74 72 69 6e 67 20 2b      jsonString +
11520 3d 20 22 7d 7d 22 3b 20 20 20 20 20 20 0d 0a 20  = "}}";      .. 
11530 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
11540 20 72 65 74 75 72 6e 20 6a 73 6f 6e 53 74 72 69   return jsonStri
11550 6e 67 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  ng;..    },..   
11560 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 52 65 74   /** ..    * Ret
11570 75 72 6e 73 20 74 68 65 20 63 6f 6e 74 65 6e 74  urns the content
11580 20 74 79 70 65 20 6f 75 74 70 75 74 20 62 79 20   type output by 
11590 74 68 69 73 20 6c 61 79 6f 75 74 2e 20 0d 0a 20  this layout. .. 
115a0 20 20 20 2a 20 40 72 65 74 75 72 6e 20 54 68 65     * @return The
115b0 20 62 61 73 65 20 63 6c 61 73 73 20 72 65 74 75   base class retu
115c0 72 6e 73 20 22 74 65 78 74 2f 78 6d 6c 22 2e 0d  rns "text/xml"..
115d0 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53 74 72  .    * @type Str
115e0 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  ing..    */..   
115f0 20 67 65 74 43 6f 6e 74 65 6e 74 54 79 70 65 3a   getContentType:
11600 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
11610 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 74         return "t
11620 65 78 74 2f 6a 73 6f 6e 22 3b 0d 0a 20 20 20 20  ext/json";..    
11630 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20  },..    /** ..  
11640 20 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75    * @return Retu
11650 72 6e 73 20 74 68 65 20 68 65 61 64 65 72 20 66  rns the header f
11660 6f 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f  or the layout fo
11670 72 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63  rmat. The base c
11680 6c 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c  lass returns nul
11690 6c 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  l...    * @type 
116a0 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a  String..    */..
116b0 20 20 20 20 67 65 74 48 65 61 64 65 72 3a 20 66      getHeader: f
116c0 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
116d0 20 20 20 20 20 72 65 74 75 72 6e 20 22 7b 5c 22       return "{\"
116e0 4c 6f 67 34 6a 73 5c 22 3a 20 5b 5c 6e 22 3b 0d  Log4js\": [\n";.
116f0 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a  .    },..    /**
11700 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e   ..    * @return
11710 20 52 65 74 75 72 6e 73 20 74 68 65 20 66 6f 6f   Returns the foo
11720 74 65 72 20 66 6f 72 20 74 68 65 20 6c 61 79 6f  ter for the layo
11730 75 74 20 66 6f 72 6d 61 74 2e 20 54 68 65 20 62  ut format. The b
11740 61 73 65 20 63 6c 61 73 73 20 72 65 74 75 72 6e  ase class return
11750 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2a 20 40  s null...    * @
11760 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20  type String..   
11770 20 2a 2f 0d 0a 20 20 20 20 67 65 74 46 6f 6f 74   */..    getFoot
11780 65 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  er: function() {
11790 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
117a0 20 22 5c 6e 5d 7d 22 3b 0d 0a 20 20 20 20 7d 2c   "\n]}";..    },
117b0 0d 0a 20 20 20 20 0d 0a 20 20 20 20 67 65 74 53  ..    ..    getS
117c0 65 70 61 72 61 74 6f 72 3a 20 66 75 6e 63 74 69  eparator: functi
117d0 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  on() {..        
117e0 72 65 74 75 72 6e 20 22 2c 5c 6e 22 3b 0d 0a 20  return ",\n";.. 
117f0 20 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a     }..});..../**
11800 20 0d 0a 2a 20 50 61 74 74 65 72 6e 4c 61 79 6f   ..* PatternLayo
11810 75 74 20 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e  ut ..*/..Log4js.
11820 50 61 74 74 65 72 6e 4c 61 79 6f 75 74 20 3d 20  PatternLayout = 
11830 66 75 6e 63 74 69 6f 6e 28 70 61 74 74 65 72 6e  function(pattern
11840 29 20 7b 0d 0a 20 20 20 20 69 66 20 28 70 61 74  ) {..    if (pat
11850 74 65 72 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20  tern) {..       
11860 20 74 68 69 73 2e 70 61 74 74 65 72 6e 20 3d 20   this.pattern = 
11870 70 61 74 74 65 72 6e 3b 0d 0a 20 20 20 20 7d 20  pattern;..    } 
11880 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
11890 74 68 69 73 2e 70 61 74 74 65 72 6e 20 3d 20 4c  this.pattern = L
118a0 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79  og4js.PatternLay
118b0 6f 75 74 2e 44 45 46 41 55 4c 54 5f 43 4f 4e 56  out.DEFAULT_CONV
118c0 45 52 53 49 4f 4e 5f 50 41 54 54 45 52 4e 3b 0d  ERSION_PATTERN;.
118d0 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f  .    }..};....Lo
118e0 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79 6f  g4js.PatternLayo
118f0 75 74 2e 54 54 43 43 5f 43 4f 4e 56 45 52 53 49  ut.TTCC_CONVERSI
11900 4f 4e 5f 50 41 54 54 45 52 4e 20 3d 20 22 25 72  ON_PATTERN = "%r
11910 20 25 70 20 25 63 20 2d 20 25 6d 25 6e 22 3b 0d   %p %c - %m%n";.
11920 0a 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c  .Log4js.PatternL
11930 61 79 6f 75 74 2e 44 45 46 41 55 4c 54 5f 43 4f  ayout.DEFAULT_CO
11940 4e 56 45 52 53 49 4f 4e 5f 50 41 54 54 45 52 4e  NVERSION_PATTERN
11950 20 3d 20 22 25 6d 25 6e 22 3b 0d 0a 4c 6f 67 34   = "%m%n";..Log4
11960 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79 6f 75 74  js.PatternLayout
11970 2e 49 53 4f 38 36 30 31 5f 44 41 54 45 46 4f 52  .ISO8601_DATEFOR
11980 4d 41 54 20 3d 20 22 79 79 79 79 2d 4d 4d 2d 64  MAT = "yyyy-MM-d
11990 64 20 48 48 3a 6d 6d 3a 73 73 2c 53 53 53 22 3b  d HH:mm:ss,SSS";
119a0 0d 0a 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e  ..Log4js.Pattern
119b0 4c 61 79 6f 75 74 2e 44 41 54 45 54 49 4d 45 5f  Layout.DATETIME_
119c0 44 41 54 45 46 4f 52 4d 41 54 20 3d 20 22 64 64  DATEFORMAT = "dd
119d0 20 4d 4d 4d 20 59 59 59 59 20 48 48 3a 6d 6d 3a   MMM YYYY HH:mm:
119e0 73 73 2c 53 53 53 22 3b 0d 0a 4c 6f 67 34 6a 73  ss,SSS";..Log4js
119f0 2e 50 61 74 74 65 72 6e 4c 61 79 6f 75 74 2e 41  .PatternLayout.A
11a00 42 53 4f 4c 55 54 45 54 49 4d 45 5f 44 41 54 45  BSOLUTETIME_DATE
11a10 46 4f 52 4d 41 54 20 3d 20 22 48 48 3a 6d 6d 3a  FORMAT = "HH:mm:
11a20 73 73 2c 53 53 53 22 3b 0d 0a 0d 0a 4c 6f 67 34  ss,SSS";....Log4
11a30 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79 6f 75 74  js.PatternLayout
11a40 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67  .prototype = Log
11a50 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c  4js.extend(new L
11a60 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 28 29 2c 20  og4js.Layout(), 
11a70 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20  {..    /** ..   
11a80 20 2a 20 52 65 74 75 72 6e 73 20 74 68 65 20 63   * Returns the c
11a90 6f 6e 74 65 6e 74 20 74 79 70 65 20 6f 75 74 70  ontent type outp
11aa0 75 74 20 62 79 20 74 68 69 73 20 6c 61 79 6f 75  ut by this layou
11ab0 74 2e 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75  t. ..    * @retu
11ac0 72 6e 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 2e  rn "text/plain".
11ad0 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53 74  ..    * @type St
11ae0 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  ring..    */..  
11af0 20 20 67 65 74 43 6f 6e 74 65 6e 74 54 79 70 65    getContentType
11b00 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a  : function() {..
11b10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
11b20 74 65 78 74 2f 70 6c 61 69 6e 22 3b 0d 0a 20 20  text/plain";..  
11b30 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a    },..    /** ..
11b40 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 52 65      * @return Re
11b50 74 75 72 6e 73 20 74 68 65 20 68 65 61 64 65 72  turns the header
11b60 20 66 6f 72 20 74 68 65 20 6c 61 79 6f 75 74 20   for the layout 
11b70 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 2a 20 40  format...    * @
11b80 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20  type String..   
11b90 20 2a 2f 0d 0a 20 20 20 20 67 65 74 48 65 61 64   */..    getHead
11ba0 65 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  er: function() {
11bb0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
11bc0 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 7d 2c 0d 0a   null;..    },..
11bd0 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20      /** ..    * 
11be0 40 72 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20  @return Returns 
11bf0 74 68 65 20 66 6f 6f 74 65 72 20 66 6f 72 20 74  the footer for t
11c00 68 65 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74  he layout format
11c10 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53  ...    * @type S
11c20 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20  tring..    */.. 
11c30 20 20 20 67 65 74 46 6f 6f 74 65 72 3a 20 66 75     getFooter: fu
11c40 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
11c50 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
11c60 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a  ..    },..    ..
11c70 20 20 20 20 66 6f 72 6d 61 74 3a 20 66 75 6e 63      format: func
11c80 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e  tion(loggingEven
11c90 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61  t) {..        va
11ca0 72 20 72 65 67 65 78 20 3d 20 2f 25 28 2d 3f 5b  r regex = /%(-?[
11cb0 30 2d 39 5d 2b 29 3f 28 5c 2e 3f 5b 30 2d 39 5d  0-9]+)?(\.?[0-9]
11cc0 2b 29 3f 28 5b 63 64 6d 6e 70 72 25 5d 29 28 5c  +)?([cdmnpr%])(\
11cd0 7b 28 5b 5e 5c 7d 5d 2b 29 5c 7d 29 3f 7c 28 5b  {([^\}]+)\})?|([
11ce0 5e 25 5d 2b 29 2f 3b 0d 0a 20 20 20 20 20 20 20  ^%]+)/;..       
11cf0 20 76 61 72 20 66 6f 72 6d 61 74 74 65 64 53 74   var formattedSt
11d00 72 69 6e 67 20 3d 20 22 22 3b 0d 0a 20 20 20 20  ring = "";..    
11d10 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3b 0d      var result;.
11d20 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 65 61  .        var sea
11d30 72 63 68 53 74 72 69 6e 67 20 3d 20 74 68 69 73  rchString = this
11d40 2e 70 61 74 74 65 72 6e 3b 0d 0a 20 20 20 20 20  .pattern;..     
11d50 20 20 20 2f 2f 20 43 61 6e 6e 6f 74 20 75 73 65     // Cannot use
11d60 20 72 65 67 65 78 20 67 6c 6f 62 61 6c 20 66 6c   regex global fl
11d70 61 67 20 73 69 6e 63 65 20 69 74 20 64 6f 65 73  ag since it does
11d80 6e 27 74 20 77 6f 72 6b 20 69 6e 20 49 45 35 0d  n't work in IE5.
11d90 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28  .        while (
11da0 28 72 65 73 75 6c 74 20 3d 20 72 65 67 65 78 2e  (result = regex.
11db0 65 78 65 63 28 73 65 61 72 63 68 53 74 72 69 6e  exec(searchStrin
11dc0 67 29 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  g))) {..        
11dd0 20 20 20 20 76 61 72 20 6d 61 74 63 68 65 64 53      var matchedS
11de0 74 72 69 6e 67 20 3d 20 72 65 73 75 6c 74 5b 30  tring = result[0
11df0 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
11e00 76 61 72 20 70 61 64 64 69 6e 67 20 3d 20 72 65  var padding = re
11e10 73 75 6c 74 5b 31 5d 3b 0d 0a 20 20 20 20 20 20  sult[1];..      
11e20 20 20 20 20 20 20 76 61 72 20 74 72 75 6e 63 61        var trunca
11e30 74 69 6f 6e 20 3d 20 72 65 73 75 6c 74 5b 32 5d  tion = result[2]
11e40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76  ;..            v
11e50 61 72 20 63 6f 6e 76 65 72 73 69 6f 6e 43 68 61  ar conversionCha
11e60 72 61 63 74 65 72 20 3d 20 72 65 73 75 6c 74 5b  racter = result[
11e70 33 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  3];..           
11e80 20 76 61 72 20 73 70 65 63 69 66 69 65 72 20 3d   var specifier =
11e90 20 72 65 73 75 6c 74 5b 35 5d 3b 0d 0a 20 20 20   result[5];..   
11ea0 20 20 20 20 20 20 20 20 20 76 61 72 20 74 65 78           var tex
11eb0 74 20 3d 20 72 65 73 75 6c 74 5b 36 5d 3b 0d 0a  t = result[6];..
11ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
11ed0 20 43 68 65 63 6b 20 69 66 20 74 68 65 20 70 61   Check if the pa
11ee0 74 74 65 72 6e 20 6d 61 74 63 68 65 64 20 77 61  ttern matched wa
11ef0 73 20 6a 75 73 74 20 6e 6f 72 6d 61 6c 20 74 65  s just normal te
11f00 78 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  xt..            
11f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
11f20 20 28 74 65 78 74 29 20 7b 0d 0a 20 20 20 20 20   (text) {..     
11f30 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61             forma
11f40 74 74 65 64 53 74 72 69 6e 67 20 2b 3d 20 22 22  ttedString += ""
11f50 20 2b 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20   + text;..      
11f60 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
11f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f80 2f 2f 20 43 72 65 61 74 65 20 61 20 72 61 77 20  // Create a raw 
11f90 72 65 70 6c 61 63 65 6d 65 6e 74 20 73 74 72 69  replacement stri
11fa0 6e 67 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  ng based on the 
11fb0 63 6f 6e 76 65 72 73 69 6f 6e 0d 0a 20 20 20 20  conversion..    
11fc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63              // c
11fd0 68 61 72 61 63 74 65 72 20 61 6e 64 20 73 70 65  haracter and spe
11fe0 63 69 66 69 65 72 0d 0a 20 20 20 20 20 20 20 20  cifier..        
11ff0 20 20 20 20 20 20 20 20 76 61 72 20 72 65 70 6c          var repl
12000 61 63 65 6d 65 6e 74 20 3d 20 22 22 3b 0d 0a 20  acement = "";.. 
12010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d                 .
12020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12030 20 73 77 69 74 63 68 28 63 6f 6e 76 65 72 73 69   switch(conversi
12040 6f 6e 43 68 61 72 61 63 74 65 72 29 20 7b 0d 0a  onCharacter) {..
12050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12060 20 20 20 20 63 61 73 65 20 22 63 22 3a 0d 0a 20      case "c":.. 
12070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12080 20 20 20 20 20 20 20 76 61 72 20 6c 6f 67 67 65         var logge
12090 72 4e 61 6d 65 20 3d 20 6c 6f 67 67 69 6e 67 45  rName = loggingE
120a0 76 65 6e 74 2e 63 61 74 65 67 6f 72 79 4e 61 6d  vent.categoryNam
120b0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
120c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
120d0 73 70 65 63 69 66 69 65 72 29 20 7b 0d 0a 20 20  specifier) {..  
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120f0 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 72            var pr
12100 65 63 69 73 69 6f 6e 20 3d 20 70 61 72 73 65 49  ecision = parseI
12110 6e 74 28 73 70 65 63 69 66 69 65 72 2c 20 31 30  nt(specifier, 10
12120 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
12130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12140 76 61 72 20 6c 6f 67 67 65 72 4e 61 6d 65 42 69  var loggerNameBi
12150 74 73 20 3d 20 6c 6f 67 67 69 6e 67 45 76 65 6e  ts = loggingEven
12160 74 2e 63 61 74 65 67 6f 72 79 4e 61 6d 65 2e 73  t.categoryName.s
12170 70 6c 69 74 28 22 2e 22 29 3b 0d 0a 20 20 20 20  plit(".");..    
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12190 20 20 20 20 20 20 20 20 69 66 20 28 70 72 65 63          if (prec
121a0 69 73 69 6f 6e 20 3e 3d 20 6c 6f 67 67 65 72 4e  ision >= loggerN
121b0 61 6d 65 42 69 74 73 2e 6c 65 6e 67 74 68 29 20  ameBits.length) 
121c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
121d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121e0 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d     replacement =
121f0 20 6c 6f 67 67 65 72 4e 61 6d 65 3b 0d 0a 20 20   loggerName;..  
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
12220 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12240 20 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20      replacement 
12250 3d 20 6c 6f 67 67 65 72 4e 61 6d 65 42 69 74 73  = loggerNameBits
12260 2e 73 6c 69 63 65 28 6c 6f 67 67 65 72 4e 61 6d  .slice(loggerNam
12270 65 42 69 74 73 2e 6c 65 6e 67 74 68 20 2d 20 70  eBits.length - p
12280 72 65 63 69 73 69 6f 6e 29 2e 6a 6f 69 6e 28 22  recision).join("
12290 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .");..          
122a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
122c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65               } e
122d0 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
122e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122f0 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d     replacement =
12300 20 6c 6f 67 67 65 72 4e 61 6d 65 3b 0d 0a 20 20   loggerName;..  
12310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12320 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12340 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20   break;..       
12350 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
12360 65 20 22 64 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "d":..        
12370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12380 76 61 72 20 64 61 74 65 46 6f 72 6d 61 74 20 3d  var dateFormat =
12390 20 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c   Log4js.PatternL
123a0 61 79 6f 75 74 2e 49 53 4f 38 36 30 31 5f 44 41  ayout.ISO8601_DA
123b0 54 45 46 4f 52 4d 41 54 3b 0d 0a 20 20 20 20 20  TEFORMAT;..     
123c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123d0 20 20 20 69 66 20 28 73 70 65 63 69 66 69 65 72     if (specifier
123e0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
123f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12400 20 64 61 74 65 46 6f 72 6d 61 74 20 3d 20 73 70   dateFormat = sp
12410 65 63 69 66 69 65 72 3b 0d 0a 20 20 20 20 20 20  ecifier;..      
12420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12430 20 20 20 20 20 20 2f 2f 20 50 69 63 6b 20 75 70        // Pick up
12440 20 73 70 65 63 69 61 6c 20 63 61 73 65 73 0d 0a   special cases..
12450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12460 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12470 64 61 74 65 46 6f 72 6d 61 74 20 3d 3d 20 22 49  dateFormat == "I
12480 53 4f 38 36 30 31 22 29 20 7b 0d 0a 20 20 20 20  SO8601") {..    
12490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
124a0 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
124b0 46 6f 72 6d 61 74 20 3d 20 4c 6f 67 34 6a 73 2e  Format = Log4js.
124c0 50 61 74 74 65 72 6e 4c 61 79 6f 75 74 2e 49 53  PatternLayout.IS
124d0 4f 38 36 30 31 5f 44 41 54 45 46 4f 52 4d 41 54  O8601_DATEFORMAT
124e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
124f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12500 20 65 6c 73 65 20 69 66 20 28 64 61 74 65 46 6f   else if (dateFo
12510 72 6d 61 74 20 3d 3d 20 22 41 42 53 4f 4c 55 54  rmat == "ABSOLUT
12520 45 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  E") {..         
12530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12540 20 20 20 20 20 20 20 64 61 74 65 46 6f 72 6d 61         dateForma
12550 74 20 3d 20 4c 6f 67 34 6a 73 2e 50 61 74 74 65  t = Log4js.Patte
12560 72 6e 4c 61 79 6f 75 74 2e 41 42 53 4f 4c 55 54  rnLayout.ABSOLUT
12570 45 54 49 4d 45 5f 44 41 54 45 46 4f 52 4d 41 54  ETIME_DATEFORMAT
12580 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
125a0 20 65 6c 73 65 20 69 66 20 28 64 61 74 65 46 6f   else if (dateFo
125b0 72 6d 61 74 20 3d 3d 20 22 44 41 54 45 22 29 20  rmat == "DATE") 
125c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
125d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125e0 20 20 20 64 61 74 65 46 6f 72 6d 61 74 20 3d 20     dateFormat = 
125f0 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61  Log4js.PatternLa
12600 79 6f 75 74 2e 44 41 54 45 54 49 4d 45 5f 44 41  yout.DATETIME_DA
12610 54 45 46 4f 52 4d 41 54 3b 0d 0a 20 20 20 20 20  TEFORMAT;..     
12620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12630 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12650 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
12660 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
12670 46 6f 72 6d 61 74 20 74 68 65 20 64 61 74 65 0d  Format the date.
12680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12690 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 63 65           replace
126a0 6d 65 6e 74 20 3d 20 28 6e 65 77 20 4c 6f 67 34  ment = (new Log4
126b0 6a 73 2e 53 69 6d 70 6c 65 44 61 74 65 46 6f 72  js.SimpleDateFor
126c0 6d 61 74 28 64 61 74 65 46 6f 72 6d 61 74 29 29  mat(dateFormat))
126d0 2e 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67 45  .format(loggingE
126e0 76 65 6e 74 2e 73 74 61 72 74 54 69 6d 65 29 3b  vent.startTime);
126f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12700 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
12710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12720 20 20 20 20 20 20 63 61 73 65 20 22 6d 22 3a 0d        case "m":.
12730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12740 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20           ..     
12750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12760 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d     replacement =
12770 20 74 68 69 73 2e 66 6f 72 6d 61 74 4f 62 6a 65   this.formatObje
12780 63 74 45 78 70 61 6e 73 69 6f 6e 28 6c 6f 67 67  ctExpansion(logg
12790 69 6e 67 45 76 65 6e 74 2e 6d 65 73 73 61 67 65  ingEvent.message
127a0 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
127c0 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
127d0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
127e0 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  "n":..          
127f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12800 70 6c 61 63 65 6d 65 6e 74 20 3d 20 22 5c 6e 22  placement = "\n"
12810 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12820 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
12830 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12840 20 20 20 20 20 20 20 63 61 73 65 20 22 70 22 3a         case "p":
12850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12860 20 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 63            replac
12870 65 6d 65 6e 74 20 3d 20 6c 6f 67 67 69 6e 67 45  ement = loggingE
12880 76 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53 74 72  vent.level.toStr
12890 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
128a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128b0 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
128c0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
128d0 20 22 72 22 3a 0d 0a 20 20 20 20 20 20 20 20 20   "r":..         
128e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
128f0 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20 22 22 20  eplacement = "" 
12900 2b 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 73  + loggingEvent.s
12910 74 61 72 74 54 69 6d 65 2e 74 6f 4c 6f 63 61 6c  tartTime.toLocal
12920 65 54 69 6d 65 53 74 72 69 6e 67 28 29 3b 20 2f  eTimeString(); /
12930 2f 54 4f 44 4f 3a 20 2e 67 65 74 44 69 66 66 65  /TODO: .getDiffe
12940 72 65 6e 63 65 28 4c 6f 67 34 6a 73 2e 61 70 70  rence(Log4js.app
12950 6c 69 63 61 74 69 6f 6e 53 74 61 72 74 44 61 74  licationStartDat
12960 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
12970 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
12980 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ak;..           
12990 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 25           case "%
129a0 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
129b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c              repl
129c0 61 63 65 6d 65 6e 74 20 3d 20 22 25 22 3b 0d 0a  acement = "%";..
129d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129e0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
129f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a00 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20      default:..  
12a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a20 20 20 20 20 20 20 72 65 70 6c 61 63 65 6d 65 6e        replacemen
12a30 74 20 3d 20 6d 61 74 63 68 65 64 53 74 72 69 6e  t = matchedStrin
12a40 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g;..            
12a50 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
12a60 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
12a70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12a80 20 20 20 20 20 20 20 2f 2f 20 46 6f 72 6d 61 74         // Format
12a90 20 74 68 65 20 72 65 70 6c 61 63 65 6d 65 6e 74   the replacement
12aa0 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 61 6e   according to an
12ab0 79 20 70 61 64 64 69 6e 67 20 6f 72 0d 0a 20 20  y padding or..  
12ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12ad0 20 74 72 75 6e 63 61 74 69 6f 6e 20 73 70 65 63   truncation spec
12ae0 69 66 69 65 64 0d 0a 0d 0a 20 20 20 20 20 20 20  ified....       
12af0 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 65 6e           var len
12b00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12b10 20 20 20 20 20 2f 2f 20 46 69 72 73 74 2c 20 74       // First, t
12b20 72 75 6e 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20  runcation..     
12b30 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
12b40 72 75 6e 63 61 74 69 6f 6e 29 20 7b 0d 0a 20 20  runcation) {..  
12b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b60 20 20 6c 65 6e 20 3d 20 70 61 72 73 65 49 6e 74    len = parseInt
12b70 28 74 72 75 6e 63 61 74 69 6f 6e 2e 73 75 62 73  (truncation.subs
12b80 74 72 28 31 29 2c 20 31 30 29 3b 0d 0a 20 20 20  tr(1), 10);..   
12b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ba0 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20 72   replacement = r
12bb0 65 70 6c 61 63 65 6d 65 6e 74 2e 73 75 62 73 74  eplacement.subst
12bc0 72 69 6e 67 28 30 2c 20 6c 65 6e 29 3b 0d 0a 20  ring(0, len);.. 
12bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12bf0 20 20 2f 2f 20 4e 65 78 74 2c 20 70 61 64 64 69    // Next, paddi
12c00 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
12c10 20 20 20 20 69 66 20 28 70 61 64 64 69 6e 67 29      if (padding)
12c20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12c30 20 20 20 20 20 20 20 20 69 66 20 28 70 61 64 64          if (padd
12c40 69 6e 67 2e 63 68 61 72 41 74 28 30 29 20 3d 3d  ing.charAt(0) ==
12c50 20 22 2d 22 29 20 7b 0d 0a 20 20 20 20 20 20 20   "-") {..       
12c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c70 20 6c 65 6e 20 3d 20 70 61 72 73 65 49 6e 74 28   len = parseInt(
12c80 70 61 64 64 69 6e 67 2e 73 75 62 73 74 72 28 31  padding.substr(1
12c90 29 2c 20 31 30 29 3b 0d 0a 20 20 20 20 20 20 20  ), 10);..       
12ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cb0 20 2f 2f 20 52 69 67 68 74 20 70 61 64 20 77 69   // Right pad wi
12cc0 74 68 20 73 70 61 63 65 73 0d 0a 20 20 20 20 20  th spaces..     
12cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ce0 20 20 20 77 68 69 6c 65 20 28 72 65 70 6c 61 63     while (replac
12cf0 65 6d 65 6e 74 2e 6c 65 6e 67 74 68 20 3c 20 6c  ement.length < l
12d00 65 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  en) {..         
12d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d20 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 2b     replacement +
12d30 3d 20 22 20 22 3b 0d 0a 20 20 20 20 20 20 20 20  = " ";..        
12d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d50 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12d60 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d         } else {.
12d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12d80 20 20 20 20 20 20 20 20 20 6c 65 6e 20 3d 20 70           len = p
12d90 61 72 73 65 49 6e 74 28 70 61 64 64 69 6e 67 2c  arseInt(padding,
12da0 20 31 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20   10);..         
12db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12dc0 2f 20 4c 65 66 74 20 70 61 64 20 77 69 74 68 20  / Left pad with 
12dd0 73 70 61 63 65 73 0d 0a 20 20 20 20 20 20 20 20  spaces..        
12de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12df0 77 68 69 6c 65 20 28 72 65 70 6c 61 63 65 6d 65  while (replaceme
12e00 6e 74 2e 6c 65 6e 67 74 68 20 3c 20 6c 65 6e 29  nt.length < len)
12e10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e30 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20 22 20  replacement = " 
12e40 22 20 2b 20 72 65 70 6c 61 63 65 6d 65 6e 74 3b  " + replacement;
12e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12e60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12e90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12ea0 20 20 20 20 20 20 20 66 6f 72 6d 61 74 74 65 64         formatted
12eb0 53 74 72 69 6e 67 20 2b 3d 20 72 65 70 6c 61 63  String += replac
12ec0 65 6d 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  ement;..        
12ed0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12ee0 20 20 20 73 65 61 72 63 68 53 74 72 69 6e 67 20     searchString 
12ef0 3d 20 73 65 61 72 63 68 53 74 72 69 6e 67 2e 73  = searchString.s
12f00 75 62 73 74 72 28 72 65 73 75 6c 74 2e 69 6e 64  ubstr(result.ind
12f10 65 78 20 2b 20 72 65 73 75 6c 74 5b 30 5d 2e 6c  ex + result[0].l
12f20 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20  ength);..       
12f30 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   }..        retu
12f40 72 6e 20 66 6f 72 6d 61 74 74 65 64 53 74 72 69  rn formattedStri
12f50 6e 67 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  ng;..    },..   
12f60 20 0d 0a 20 20 20 20 66 6f 72 6d 61 74 4f 62 6a   ..    formatObj
12f70 65 63 74 45 78 70 61 6e 73 69 6f 6e 20 3a 20 66  ectExpansion : f
12f80 75 6e 63 74 69 6f 6e 20 28 6f 62 6a 2c 20 64 65  unction (obj, de
12f90 70 74 68 2c 20 69 6e 64 65 6e 74 61 74 69 6f 6e  pth, indentation
12fa0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  ) {..        var
12fb0 20 6f 62 6a 65 63 74 73 45 78 70 61 6e 64 65 64   objectsExpanded
12fc0 20 3d 20 5b 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20   = [];....      
12fd0 20 20 66 75 6e 63 74 69 6f 6e 20 64 6f 46 6f 72    function doFor
12fe0 6d 61 74 28 6f 62 6a 2c 20 64 65 70 74 68 2c 20  mat(obj, depth, 
12ff0 69 6e 64 65 6e 74 61 74 69 6f 6e 29 20 7b 0d 0a  indentation) {..
13000 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
13010 69 2c 20 6a 2c 20 6c 65 6e 2c 20 63 68 69 6c 64  i, j, len, child
13020 44 65 70 74 68 2c 20 63 68 69 6c 64 49 6e 64 65  Depth, childInde
13030 6e 74 61 74 69 6f 6e 2c 20 63 68 69 6c 64 4c 69  ntation, childLi
13040 6e 65 73 2c 20 65 78 70 61 6e 73 69 6f 6e 2c 0d  nes, expansion,.
13050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13060 20 63 68 69 6c 64 45 78 70 61 6e 73 69 6f 6e 3b   childExpansion;
13070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61  ..            va
13080 72 20 6e 65 77 4c 69 6e 65 20 3d 20 27 5c 72 5c  r newLine = '\r\
13090 6e 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n';..           
130a0 20 69 66 20 28 21 69 6e 64 65 6e 74 61 74 69 6f   if (!indentatio
130b0 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  n) {..          
130c0 20 20 20 20 20 20 69 6e 64 65 6e 74 61 74 69 6f        indentatio
130d0 6e 20 3d 20 22 22 3b 0d 0a 20 20 20 20 20 20 20  n = "";..       
130e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
130f0 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20      ..          
13100 20 20 66 75 6e 63 74 69 6f 6e 20 74 6f 53 74 72    function toStr
13110 28 6f 62 6a 29 20 7b 0d 0a 20 20 20 20 20 20 20  (obj) {..       
13120 20 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c           var val
13130 75 65 20 3d 20 27 27 0d 0a 20 20 20 20 20 20 20  ue = ''..       
13140 20 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a           try {..
13150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13160 20 20 20 20 69 66 20 28 6f 62 6a 20 26 26 20 6f      if (obj && o
13170 62 6a 2e 74 6f 53 74 72 69 6e 67 29 20 7b 0d 0a  bj.toString) {..
13180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13190 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
131a0 6f 62 6a 2e 74 6f 53 74 72 69 6e 67 28 29 3b 0d  obj.toString();.
131b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
131c0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
131d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131e0 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 53         value = S
131f0 74 72 69 6e 67 28 6f 62 6a 29 3b 0d 0a 20 20 20  tring(obj);..   
13200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13210 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13220 20 20 20 20 7d 20 63 61 74 63 68 28 65 78 29 20      } catch(ex) 
13230 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13240 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20         try {..  
13250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13260 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 74 6f        value = to
13270 38 56 61 6c 75 65 28 6f 62 6a 29 2e 74 6f 53 74  8Value(obj).toSt
13280 72 69 6e 67 49 6e 74 65 72 6e 61 6c 28 29 3b 0d  ringInternal();.
13290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
132a0 20 20 20 20 20 7d 20 63 61 74 63 68 28 65 78 32       } catch(ex2
132b0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
132c0 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20               .. 
132d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
132f0 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20            ..    
13300 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13320 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
13330 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13340 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20           ..     
13350 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20         function 
13360 73 70 6c 69 74 49 6e 74 6f 4c 69 6e 65 73 28 74  splitIntoLines(t
13370 65 78 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ext) {..        
13380 20 20 20 20 20 20 20 20 2f 2f 20 45 6e 73 75 72          // Ensur
13390 65 20 61 6c 6c 20 6c 69 6e 65 20 62 72 65 61 6b  e all line break
133a0 73 20 61 72 65 20 5c 6e 20 6f 6e 6c 79 0d 0a 20  s are \n only.. 
133b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
133c0 61 72 20 74 65 78 74 32 20 3d 20 74 65 78 74 2e  ar text2 = text.
133d0 72 65 70 6c 61 63 65 28 2f 5c 72 5c 6e 2f 67 2c  replace(/\r\n/g,
133e0 20 22 5c 6e 22 29 2e 72 65 70 6c 61 63 65 28 2f   "\n").replace(/
133f0 5c 72 2f 67 2c 20 22 5c 6e 22 29 3b 0d 0a 20 20  \r/g, "\n");..  
13400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13410 74 75 72 6e 20 74 65 78 74 32 2e 73 70 6c 69 74  turn text2.split
13420 28 22 5c 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20  ("\n");..       
13430 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13440 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20      ..          
13450 20 20 66 75 6e 63 74 69 6f 6e 20 61 72 72 61 79    function array
13460 5f 63 6f 6e 74 61 69 6e 73 28 61 72 72 2c 20 76  _contains(arr, v
13470 61 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  al) {..         
13480 20 20 20 20 20 20 20 66 6f 72 28 76 61 72 20 69         for(var i
13490 20 3d 20 30 2c 20 6c 65 6e 20 3d 20 61 72 72 2e   = 0, len = arr.
134a0 6c 65 6e 67 74 68 3b 20 69 20 3c 20 6c 65 6e 3b  length; i < len;
134b0 20 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20   i++) {..       
134c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
134d0 28 61 72 72 5b 69 5d 20 3d 3d 20 76 61 6c 29 20  (arr[i] == val) 
134e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
134f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13500 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
13510 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13530 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
13540 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
13550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
13560 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
13570 75 6e 63 74 69 6f 6e 20 66 6f 72 6d 61 74 53 74  unction formatSt
13580 72 69 6e 67 28 74 65 78 74 29 20 7b 0d 0a 20 20  ring(text) {..  
13590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
135a0 72 20 6c 69 6e 65 73 20 3d 20 73 70 6c 69 74 49  r lines = splitI
135b0 6e 74 6f 4c 69 6e 65 73 28 74 65 78 74 29 3b 0d  ntoLines(text);.
135c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
135d0 20 66 6f 72 20 28 76 61 72 20 6a 20 3d 20 31 2c   for (var j = 1,
135e0 20 6a 4c 65 6e 20 3d 20 6c 69 6e 65 73 2e 6c 65   jLen = lines.le
135f0 6e 67 74 68 3b 20 6a 20 3c 20 6a 4c 65 6e 3b 20  ngth; j < jLen; 
13600 6a 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  j++) {..        
13610 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
13620 73 5b 6a 5d 20 3d 20 69 6e 64 65 6e 74 61 74 69  s[j] = indentati
13630 6f 6e 20 2b 20 6c 69 6e 65 73 5b 6a 5d 3b 0d 0a  on + lines[j];..
13640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13650 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
13660 20 20 20 72 65 74 75 72 6e 20 6c 69 6e 65 73 2e     return lines.
13670 6a 6f 69 6e 28 6e 65 77 4c 69 6e 65 29 3b 0d 0a  join(newLine);..
13680 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
13690 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
136a0 52 65 74 75 72 6e 73 20 61 20 6e 69 63 65 6c 79  Returns a nicely
136b0 20 66 6f 72 6d 61 74 74 65 64 20 72 65 70 72 65   formatted repre
136c0 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20  sentation of an 
136d0 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  error..         
136e0 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45     function getE
136f0 78 63 65 70 74 69 6f 6e 53 74 72 69 6e 67 52 65  xceptionStringRe
13700 70 28 65 78 29 20 7b 0d 0a 20 20 20 20 20 20 20  p(ex) {..       
13710 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78 29           if (ex)
13720 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13730 20 20 20 20 20 20 20 20 76 61 72 20 65 78 53 74          var exSt
13740 72 20 3d 20 22 45 78 63 65 70 74 69 6f 6e 3a 20  r = "Exception: 
13750 22 20 2b 20 67 65 74 45 78 63 65 70 74 69 6f 6e  " + getException
13760 4d 65 73 73 61 67 65 28 65 78 29 3b 0d 0a 20 20  Message(ex);..  
13770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13780 20 20 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20    try {..       
13790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137a0 20 69 66 20 28 65 78 2e 6c 69 6e 65 4e 75 6d 62   if (ex.lineNumb
137b0 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  er) {..         
137c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137d0 20 20 20 65 78 53 74 72 20 2b 3d 20 22 20 6f 6e     exStr += " on
137e0 20 6c 69 6e 65 20 6e 75 6d 62 65 72 20 22 20 2b   line number " +
137f0 20 65 78 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b 0d   ex.lineNumber;.
13800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13810 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13830 20 20 20 20 69 66 20 28 65 78 2e 66 69 6c 65 4e      if (ex.fileN
13840 61 6d 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ame) {..        
13850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13860 20 20 20 20 65 78 53 74 72 20 2b 3d 20 22 20 69      exStr += " i
13870 6e 20 66 69 6c 65 20 22 20 2b 20 65 78 2e 66 69  n file " + ex.fi
13880 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
13890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
138b0 20 20 20 20 20 20 20 20 7d 20 63 61 74 63 68 20          } catch 
138c0 28 6c 6f 63 61 6c 45 78 29 20 7b 0d 0a 20 20 20  (localEx) {..   
138d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138e0 20 20 20 20 20 6c 6f 67 4c 6f 67 2e 77 61 72 6e       logLog.warn
138f0 28 22 55 6e 61 62 6c 65 20 74 6f 20 6f 62 74 61  ("Unable to obta
13900 69 6e 20 66 69 6c 65 20 61 6e 64 20 6c 69 6e 65  in file and line
13910 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72   information for
13920 20 65 72 72 6f 72 22 29 3b 0d 0a 20 20 20 20 20   error");..     
13930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13950 20 20 20 20 20 20 2f 2f 69 66 20 28 73 68 6f 77        //if (show
13960 53 74 61 63 6b 54 72 61 63 65 73 20 26 26 20 65  StackTraces && e
13970 78 2e 73 74 61 63 6b 29 20 7b 0d 0a 20 20 20 20  x.stack) {..    
13980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13990 65 78 53 74 72 20 2b 3d 20 6e 65 77 4c 69 6e 65  exStr += newLine
139a0 20 2b 20 22 53 74 61 63 6b 20 74 72 61 63 65 3a   + "Stack trace:
139b0 22 20 2b 20 6e 65 77 4c 69 6e 65 2b 20 65 78 2e  " + newLine+ ex.
139c0 73 74 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20  stack;..        
139d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d              //}.
139e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
139f0 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 53 74       return exSt
13a00 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
13a10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13a20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
13a30 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
13a40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
13a50 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20    ..            
13a60 69 66 20 28 6f 62 6a 20 3d 3d 3d 20 6e 75 6c 6c  if (obj === null
13a70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
13a80 20 20 20 20 20 72 65 74 75 72 6e 20 22 6e 75 6c       return "nul
13a90 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l";..           
13aa0 20 7d 20 65 6c 73 65 20 69 66 20 28 74 79 70 65   } else if (type
13ab0 6f 66 20 6f 62 6a 20 3d 3d 20 22 75 6e 64 65 66  of obj == "undef
13ac0 69 6e 65 64 22 29 20 7b 0d 0a 20 20 20 20 20 20  ined") {..      
13ad0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13ae0 20 22 75 6e 64 65 66 69 6e 65 64 22 3b 0d 0a 20   "undefined";.. 
13af0 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
13b00 65 20 69 66 20 28 74 79 70 65 6f 66 20 6f 62 6a  e if (typeof obj
13b10 20 3d 3d 20 22 73 74 72 69 6e 67 22 29 20 7b 0d   == "string") {.
13b20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13b30 20 72 65 74 75 72 6e 20 66 6f 72 6d 61 74 53 74   return formatSt
13b40 72 69 6e 67 28 6f 62 6a 29 3b 0d 0a 20 20 20 20  ring(obj);..    
13b50 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
13b60 66 20 28 74 79 70 65 6f 66 20 6f 62 6a 20 3d 3d  f (typeof obj ==
13b70 20 22 6f 62 6a 65 63 74 22 20 26 26 20 61 72 72   "object" && arr
13b80 61 79 5f 63 6f 6e 74 61 69 6e 73 28 6f 62 6a 65  ay_contains(obje
13b90 63 74 73 45 78 70 61 6e 64 65 64 2c 20 6f 62 6a  ctsExpanded, obj
13ba0 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  )) {..          
13bb0 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20        try {..   
13bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bd0 20 65 78 70 61 6e 73 69 6f 6e 20 3d 20 74 6f 53   expansion = toS
13be0 74 72 28 6f 62 6a 29 3b 0d 0a 20 20 20 20 20 20  tr(obj);..      
13bf0 20 20 20 20 20 20 20 20 20 20 7d 20 63 61 74 63            } catc
13c00 68 20 28 65 78 29 20 7b 0d 0a 20 20 20 20 20 20  h (ex) {..      
13c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78                ex
13c20 70 61 6e 73 69 6f 6e 20 3d 20 22 45 72 72 6f 72  pansion = "Error
13c30 20 66 6f 72 6d 61 74 74 69 6e 67 20 70 72 6f 70   formatting prop
13c40 65 72 74 79 2e 20 44 65 74 61 69 6c 73 3a 20 22  erty. Details: "
13c50 20 2b 20 67 65 74 45 78 63 65 70 74 69 6f 6e 53   + getExceptionS
13c60 74 72 69 6e 67 52 65 70 28 65 78 29 3b 0d 0a 20  tringRep(ex);.. 
13c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c90 20 20 72 65 74 75 72 6e 20 65 78 70 61 6e 73 69    return expansi
13ca0 6f 6e 20 2b 20 22 20 5b 61 6c 72 65 61 64 79 20  on + " [already 
13cb0 65 78 70 61 6e 64 65 64 5d 22 3b 0d 0a 20 20 20  expanded]";..   
13cc0 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
13cd0 69 66 20 28 28 6f 62 6a 20 69 6e 73 74 61 6e 63  if ((obj instanc
13ce0 65 6f 66 20 41 72 72 61 79 29 20 26 26 20 64 65  eof Array) && de
13cf0 70 74 68 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20  pth > 0) {..    
13d00 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
13d10 63 74 73 45 78 70 61 6e 64 65 64 2e 70 75 73 68  ctsExpanded.push
13d20 28 6f 62 6a 29 3b 0d 0a 20 20 20 20 20 20 20 20  (obj);..        
13d30 20 20 20 20 20 20 20 20 65 78 70 61 6e 73 69 6f          expansio
13d40 6e 20 3d 20 22 5b 22 20 2b 20 6e 65 77 4c 69 6e  n = "[" + newLin
13d50 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
13d60 20 20 20 20 63 68 69 6c 64 44 65 70 74 68 20 3d      childDepth =
13d70 20 64 65 70 74 68 20 2d 20 31 3b 0d 0a 20 20 20   depth - 1;..   
13d80 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69               chi
13d90 6c 64 49 6e 64 65 6e 74 61 74 69 6f 6e 20 3d 20  ldIndentation = 
13da0 69 6e 64 65 6e 74 61 74 69 6f 6e 20 2b 20 22 20  indentation + " 
13db0 20 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ";..           
13dc0 20 20 20 20 20 63 68 69 6c 64 4c 69 6e 65 73 20       childLines 
13dd0 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  = [];..         
13de0 20 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20         for (i = 
13df0 30 2c 20 6c 65 6e 20 3d 20 6f 62 6a 2e 6c 65 6e  0, len = obj.len
13e00 67 74 68 3b 20 69 20 3c 20 6c 65 6e 3b 20 69 2b  gth; i < len; i+
13e10 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  +) {..          
13e20 20 20 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d            try {.
13e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13e40 20 20 20 20 20 20 20 20 20 63 68 69 6c 64 45 78           childEx
13e50 70 61 6e 73 69 6f 6e 20 3d 20 64 6f 46 6f 72 6d  pansion = doForm
13e60 61 74 28 6f 62 6a 5b 69 5d 2c 20 63 68 69 6c 64  at(obj[i], child
13e70 44 65 70 74 68 2c 20 63 68 69 6c 64 49 6e 64 65  Depth, childInde
13e80 6e 74 61 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20  ntation);..     
13e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ea0 20 20 20 63 68 69 6c 64 4c 69 6e 65 73 2e 70 75     childLines.pu
13eb0 73 68 28 63 68 69 6c 64 49 6e 64 65 6e 74 61 74  sh(childIndentat
13ec0 69 6f 6e 20 2b 20 63 68 69 6c 64 45 78 70 61 6e  ion + childExpan
13ed0 73 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20  sion);..        
13ee0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 63 61              } ca
13ef0 74 63 68 20 28 65 78 29 20 7b 0d 0a 20 20 20 20  tch (ex) {..    
13f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f10 20 20 20 20 63 68 69 6c 64 4c 69 6e 65 73 2e 70      childLines.p
13f20 75 73 68 28 63 68 69 6c 64 49 6e 64 65 6e 74 61  ush(childIndenta
13f30 74 69 6f 6e 20 2b 20 22 45 72 72 6f 72 20 66 6f  tion + "Error fo
13f40 72 6d 61 74 74 69 6e 67 20 61 72 72 61 79 20 6d  rmatting array m
13f50 65 6d 62 65 72 2e 20 44 65 74 61 69 6c 73 3a 20  ember. Details: 
13f60 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
13f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f80 20 67 65 74 45 78 63 65 70 74 69 6f 6e 53 74 72   getExceptionStr
13f90 69 6e 67 52 65 70 28 65 78 29 20 2b 20 22 22 29  ingRep(ex) + "")
13fa0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13fb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13fc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
13fe0 61 6e 73 69 6f 6e 20 2b 3d 20 63 68 69 6c 64 4c  ansion += childL
13ff0 69 6e 65 73 2e 6a 6f 69 6e 28 22 2c 22 20 2b 20  ines.join("," + 
14000 6e 65 77 4c 69 6e 65 29 20 2b 20 6e 65 77 4c 69  newLine) + newLi
14010 6e 65 20 2b 20 69 6e 64 65 6e 74 61 74 69 6f 6e  ne + indentation
14020 20 2b 20 22 5d 22 3b 0d 0a 20 20 20 20 20 20 20   + "]";..       
14030 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
14040 65 78 70 61 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20  expansion;..    
14050 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
14060 66 20 28 4f 62 6a 65 63 74 2e 70 72 6f 74 6f 74  f (Object.protot
14070 79 70 65 2e 74 6f 53 74 72 69 6e 67 2e 63 61 6c  ype.toString.cal
14080 6c 28 6f 62 6a 29 20 3d 3d 20 22 5b 6f 62 6a 65  l(obj) == "[obje
14090 63 74 20 44 61 74 65 5d 22 29 20 7b 0d 0a 20 20  ct Date]") {..  
140a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
140b0 74 75 72 6e 20 6f 62 6a 2e 74 6f 53 74 72 69 6e  turn obj.toStrin
140c0 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
140d0 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 79 70    } else if (typ
140e0 65 6f 66 20 6f 62 6a 20 3d 3d 20 22 6f 62 6a 65  eof obj == "obje
140f0 63 74 22 20 26 26 20 64 65 70 74 68 20 3e 20 30  ct" && depth > 0
14100 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
14110 20 20 20 20 20 6f 62 6a 65 63 74 73 45 78 70 61       objectsExpa
14120 6e 64 65 64 2e 70 75 73 68 28 6f 62 6a 29 3b 0d  nded.push(obj);.
14130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14140 20 65 78 70 61 6e 73 69 6f 6e 20 3d 20 22 7b 22   expansion = "{"
14150 20 2b 20 6e 65 77 4c 69 6e 65 3b 0d 0a 20 20 20   + newLine;..   
14160 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69               chi
14170 6c 64 44 65 70 74 68 20 3d 20 64 65 70 74 68 20  ldDepth = depth 
14180 2d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  - 1;..          
14190 20 20 20 20 20 20 63 68 69 6c 64 49 6e 64 65 6e        childInden
141a0 74 61 74 69 6f 6e 20 3d 20 69 6e 64 65 6e 74 61  tation = indenta
141b0 74 69 6f 6e 20 2b 20 22 20 20 22 3b 0d 0a 20 20  tion + "  ";..  
141c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68                ch
141d0 69 6c 64 4c 69 6e 65 73 20 3d 20 5b 5d 3b 0d 0a  ildLines = [];..
141e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141f0 66 6f 72 20 28 69 20 69 6e 20 6f 62 6a 29 20 7b  for (i in obj) {
14200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14210 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20        try {..   
14220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14230 20 20 20 20 20 63 68 69 6c 64 45 78 70 61 6e 73       childExpans
14240 69 6f 6e 20 3d 20 64 6f 46 6f 72 6d 61 74 28 6f  ion = doFormat(o
14250 62 6a 5b 69 5d 2c 20 63 68 69 6c 64 44 65 70 74  bj[i], childDept
14260 68 2c 20 63 68 69 6c 64 49 6e 64 65 6e 74 61 74  h, childIndentat
14270 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ion);..         
14280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
14290 68 69 6c 64 4c 69 6e 65 73 2e 70 75 73 68 28 63  hildLines.push(c
142a0 68 69 6c 64 49 6e 64 65 6e 74 61 74 69 6f 6e 20  hildIndentation 
142b0 2b 20 69 20 2b 20 22 3a 20 22 20 2b 20 63 68 69  + i + ": " + chi
142c0 6c 64 45 78 70 61 6e 73 69 6f 6e 29 3b 0d 0a 20  ldExpansion);.. 
142d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
142e0 20 20 20 7d 20 63 61 74 63 68 20 28 65 78 29 20     } catch (ex) 
142f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14300 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c 64             child
14310 4c 69 6e 65 73 2e 70 75 73 68 28 63 68 69 6c 64  Lines.push(child
14320 49 6e 64 65 6e 74 61 74 69 6f 6e 20 2b 20 69 20  Indentation + i 
14330 2b 20 22 3a 20 45 72 72 6f 72 20 66 6f 72 6d 61  + ": Error forma
14340 74 74 69 6e 67 20 70 72 6f 70 65 72 74 79 2e 20  tting property. 
14350 44 65 74 61 69 6c 73 3a 20 22 20 2b 0d 0a 20 20  Details: " +..  
14360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14370 20 20 20 20 20 20 20 20 20 20 67 65 74 45 78 63            getExc
14380 65 70 74 69 6f 6e 53 74 72 69 6e 67 52 65 70 28  eptionStringRep(
14390 65 78 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ex));..         
143a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
143b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
143c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
143d0 20 65 78 70 61 6e 73 69 6f 6e 20 2b 3d 20 63 68   expansion += ch
143e0 69 6c 64 4c 69 6e 65 73 2e 6a 6f 69 6e 28 22 2c  ildLines.join(",
143f0 22 20 2b 20 6e 65 77 4c 69 6e 65 29 20 2b 20 6e  " + newLine) + n
14400 65 77 4c 69 6e 65 20 2b 20 69 6e 64 65 6e 74 61  ewLine + indenta
14410 74 69 6f 6e 20 2b 20 22 7d 22 3b 0d 0a 20 20 20  tion + "}";..   
14420 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
14430 75 72 6e 20 65 78 70 61 6e 73 69 6f 6e 3b 0d 0a  urn expansion;..
14440 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
14450 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
14460 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 6f 72        return for
14470 6d 61 74 53 74 72 69 6e 67 28 74 6f 53 74 72 28  matString(toStr(
14480 6f 62 6a 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  obj));..        
14490 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
144a0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
144b0 20 64 6f 46 6f 72 6d 61 74 28 6f 62 6a 2c 20 64   doFormat(obj, d
144c0 65 70 74 68 2c 20 69 6e 64 65 6e 74 61 74 69 6f  epth, indentatio
144d0 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d  n);..    }..});.
144e0 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 40 70 72 69 76 61  .../**..* @priva
144f0 74 65 0d 0a 2a 20 40 69 67 6e 6f 72 65 0d 0a 2a  te..* @ignore..*
14500 2f 0d 0a 69 66 20 28 21 41 72 72 61 79 2e 70 72  /..if (!Array.pr
14510 6f 74 6f 74 79 70 65 2e 70 75 73 68 29 20 7b 0d  ototype.push) {.
14520 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
14530 46 75 6e 63 74 69 6f 6e 73 20 74 61 6b 65 6e 20  Functions taken 
14540 66 72 6f 6d 20 50 72 6f 74 6f 74 79 70 65 20 6c  from Prototype l
14550 69 62 72 61 72 79 2c 20 64 69 64 6e 27 74 20 77  ibrary, didn't w
14560 61 6e 74 20 74 6f 20 72 65 71 75 69 72 65 20 66  ant to require f
14570 6f 72 20 6a 75 73 74 20 66 65 77 20 0d 0a 20 20  or just few ..  
14580 20 20 2a 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a    * functions...
14590 20 20 20 20 2a 20 4d 6f 72 65 20 69 6e 66 6f 20      * More info 
145a0 61 74 20 7b 40 6c 69 6e 6b 20 68 74 74 70 3a 2f  at {@link http:/
145b0 2f 0d 0a 20 20 20 20 2a 20 70 72 6f 74 6f 74 79  /..    * prototy
145c0 70 65 2e 63 6f 6e 69 6f 2e 6e 65 74 2f 7d 0d 0a  pe.conio.net/}..
145d0 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a      * @private..
145e0 20 20 20 20 2a 2f 0d 0a 20 20 20 20 41 72 72 61      */..    Arra
145f0 79 2e 70 72 6f 74 6f 74 79 70 65 2e 70 75 73 68  y.prototype.push
14600 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d   = function() {.
14610 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61  .        var sta
14620 72 74 4c 65 6e 67 74 68 20 3d 20 74 68 69 73 2e  rtLength = this.
14630 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  length;..       
14640 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b   for (var i = 0;
14650 20 69 20 3c 20 61 72 67 75 6d 65 6e 74 73 2e 6c   i < arguments.l
14660 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a 20  ength; i++) {.. 
14670 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 5b             this[
14680 73 74 61 72 74 4c 65 6e 67 74 68 20 2b 20 69 5d  startLength + i]
14690 20 3d 20 61 72 67 75 6d 65 6e 74 73 5b 69 5d 3b   = arguments[i];
146a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
146b0 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
146c0 2e 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 7d 3b  .length;..    };
146d0 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 46 49  ..}..../**..* FI
146e0 46 4f 20 62 75 66 66 65 72 0d 0a 2a 20 40 70 72  FO buffer..* @pr
146f0 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a  ivate..*/..Log4j
14700 73 2e 46 69 66 6f 42 75 66 66 65 72 20 3d 20 66  s.FifoBuffer = f
14710 75 6e 63 74 69 6f 6e 28 29 0d 0a 7b 0d 0a 74 68  unction()..{..th
14720 69 73 2e 61 72 72 61 79 20 3d 20 6e 65 77 20 41  is.array = new A
14730 72 72 61 79 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c  rray();..};....L
14740 6f 67 34 6a 73 2e 46 69 66 6f 42 75 66 66 65 72  og4js.FifoBuffer
14750 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 7b 0d 0a  .prototype = {..
14760 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a  ..    /**..    *
14770 20 40 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d   @param {Object}
14780 20 6f 62 6a 20 61 6e 79 20 6f 62 6a 65 63 74 20   obj any object 
14790 61 64 64 65 64 20 74 6f 20 62 75 66 66 65 72 0d  added to buffer.
147a0 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 70 75 73  .    */..    pus
147b0 68 20 3a 20 66 75 6e 63 74 69 6f 6e 28 6f 62 6a  h : function(obj
147c0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69  ) {..        thi
147d0 73 2e 61 72 72 61 79 5b 74 68 69 73 2e 61 72 72  s.array[this.arr
147e0 61 79 2e 6c 65 6e 67 74 68 5d 20 3d 20 6f 62 6a  ay.length] = obj
147f0 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ;..        retur
14800 6e 20 74 68 69 73 2e 61 72 72 61 79 2e 6c 65 6e  n this.array.len
14810 67 74 68 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20  gth;..    },..  
14820 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20    ..    /**..   
14830 20 2a 20 40 72 65 74 75 72 6e 20 66 69 72 73 74   * @return first
14840 20 70 75 74 74 65 64 20 69 6e 20 4f 62 6a 65 63   putted in Objec
14850 74 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 70  t..    */..    p
14860 75 6c 6c 20 3a 20 66 75 6e 63 74 69 6f 6e 28 29  ull : function()
14870 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
14880 74 68 69 73 2e 61 72 72 61 79 2e 6c 65 6e 67 74  this.array.lengt
14890 68 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20  h > 0) {..      
148a0 20 20 20 20 20 20 76 61 72 20 66 69 72 73 74 49        var firstI
148b0 74 65 6d 20 3d 20 74 68 69 73 2e 61 72 72 61 79  tem = this.array
148c0 5b 30 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  [0];..          
148d0 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30    for (var i = 0
148e0 3b 20 69 20 3c 20 74 68 69 73 2e 61 72 72 61 79  ; i < this.array
148f0 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 20 69 2b 2b  .length - 1; i++
14900 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
14910 20 20 20 20 20 74 68 69 73 2e 61 72 72 61 79 5b       this.array[
14920 69 5d 20 3d 20 74 68 69 73 2e 61 72 72 61 79 5b  i] = this.array[
14930 69 20 2b 20 31 5d 3b 0d 0a 20 20 20 20 20 20 20  i + 1];..       
14940 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14950 20 20 20 20 74 68 69 73 2e 61 72 72 61 79 2e 6c      this.array.l
14960 65 6e 67 74 68 20 3d 20 74 68 69 73 2e 61 72 72  ength = this.arr
14970 61 79 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0d 0a  ay.length - 1;..
14980 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14990 72 6e 20 66 69 72 73 74 49 74 65 6d 3b 0d 0a 20  rn firstItem;.. 
149a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
149b0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
149c0 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20      },..    ..  
149d0 20 20 6c 65 6e 67 74 68 20 3a 20 66 75 6e 63 74    length : funct
149e0 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ion() {..       
149f0 20 72 65 74 75 72 6e 20 74 68 69 73 2e 61 72 72   return this.arr
14a00 61 79 2e 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20  ay.length;..    
14a10 7d 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2a 2a  }..};......../**
14a20 0d 0a 2a 20 44 61 74 65 20 46 6f 72 6d 61 74 74  ..* Date Formatt
14a30 65 72 0d 0a 2a 20 61 64 64 5a 65 72 6f 28 29 20  er..* addZero() 
14a40 61 6e 64 20 66 6f 72 6d 61 74 44 61 74 65 28 29  and formatDate()
14a50 20 61 72 65 20 63 6f 75 72 74 65 73 79 20 6f 66   are courtesy of
14a60 20 4d 69 6b 65 20 47 6f 6c 64 69 6e 67 3a 0d 0a   Mike Golding:..
14a70 2a 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6d 69 6b  * http://www.mik
14a80 65 7a 69 6c 6c 61 2e 63 6f 6d 2f 65 78 70 30 30  ezilla.com/exp00
14a90 31 35 2e 68 74 6d 6c 0d 0a 2a 20 40 70 72 69 76  15.html..* @priv
14aa0 61 74 65 0d 0a 2a 2f 20 0d 0a 4c 6f 67 34 6a 73  ate..*/ ..Log4js
14ab0 2e 44 61 74 65 46 6f 72 6d 61 74 74 65 72 20 3d  .DateFormatter =
14ac0 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
14ad0 20 20 20 72 65 74 75 72 6e 3b 0d 0a 7d 3b 0d 0a     return;..};..
14ae0 2f 2a 2a 0d 0a 2a 20 64 65 66 61 75 6c 74 20 66  /**..* default f
14af0 6f 72 6d 61 74 20 6f 66 20 64 61 74 65 20 28 49  ormat of date (I
14b00 53 4f 2d 38 36 30 31 29 0d 0a 2a 20 40 73 74 61  SO-8601)..* @sta
14b10 74 69 63 0d 0a 2a 20 40 66 69 6e 61 6c 0d 0a 2a  tic..* @final..*
14b20 2f 0d 0a 4c 6f 67 34 6a 73 2e 44 61 74 65 46 6f  /..Log4js.DateFo
14b30 72 6d 61 74 74 65 72 2e 44 45 46 41 55 4c 54 5f  rmatter.DEFAULT_
14b40 44 41 54 45 5f 46 4f 52 4d 41 54 20 3d 20 22 79  DATE_FORMAT = "y
14b50 79 79 79 2d 4d 4d 2d 64 64 54 68 68 3a 6d 6d 3a  yyy-MM-ddThh:mm:
14b60 73 73 4f 22 3b 0d 0a 0d 0a 0d 0a 4c 6f 67 34 6a  ssO";......Log4j
14b70 73 2e 44 61 74 65 46 6f 72 6d 61 74 74 65 72 2e  s.DateFormatter.
14b80 70 72 6f 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20  prototype = {.. 
14b90 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 46 6f     /**..    * Fo
14ba0 72 6d 61 74 73 20 74 68 65 20 67 69 76 65 6e 20  rmats the given 
14bb0 64 61 74 65 20 62 79 20 74 68 65 20 67 69 76 65  date by the give
14bc0 6e 20 70 61 74 74 65 72 6e 2e 3c 62 72 20 2f 3e  n pattern.<br />
14bd0 0d 0a 20 20 20 20 2a 20 46 6f 6c 6c 6f 77 69 6e  ..    * Followin
14be0 67 20 73 77 69 74 63 68 65 73 20 61 72 65 20 73  g switches are s
14bf0 75 70 70 6f 72 74 65 64 3a 0d 0a 20 20 20 20 2a  upported:..    *
14c00 20 3c 75 6c 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69   <ul>..    * <li
14c10 3e 79 79 79 79 3a 20 54 68 65 20 79 65 61 72 3c  >yyyy: The year<
14c20 2f 6c 69 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e  /li>..    * <li>
14c30 4d 4d 3a 20 74 68 65 20 6d 6f 6e 74 68 3c 2f 6c  MM: the month</l
14c40 69 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e 64 64  i>..    * <li>dd
14c50 3a 20 74 68 65 20 64 61 79 20 6f 66 20 6d 6f 6e  : the day of mon
14c60 74 68 3c 6c 69 3e 0d 0a 20 20 20 20 2a 20 3c 6c  th<li>..    * <l
14c70 69 3e 68 68 3a 20 74 68 65 20 68 6f 75 72 3c 6c  i>hh: the hour<l
14c80 69 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e 6d 6d  i>..    * <li>mm
14c90 3a 20 6d 69 6e 75 74 65 73 3c 2f 6c 69 3e 0d 0a  : minutes</li>..
14ca0 20 20 20 20 2a 20 3c 6c 69 3e 4f 3a 20 74 69 6d      * <li>O: tim
14cb0 65 7a 6f 6e 65 20 6f 66 66 73 65 74 3c 2f 6c 69  ezone offset</li
14cc0 3e 0d 0a 20 20 20 20 2a 20 3c 2f 75 6c 3e 0d 0a  >..    * </ul>..
14cd0 20 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 44 61      * @param {Da
14ce0 74 65 7d 20 76 44 61 74 65 20 74 68 65 20 64 61  te} vDate the da
14cf0 74 65 20 74 6f 20 66 6f 72 6d 61 74 0d 0a 20 20  te to format..  
14d00 20 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69    * @param {Stri
14d10 6e 67 7d 20 76 46 6f 72 6d 61 74 20 74 68 65 20  ng} vFormat the 
14d20 66 6f 72 6d 61 74 20 70 61 74 74 65 72 6e 0d 0a  format pattern..
14d30 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 7b 53      * @return {S
14d40 74 72 69 6e 67 7d 20 66 6f 72 6d 61 74 74 65 64  tring} formatted
14d50 20 64 61 74 65 20 73 74 72 69 6e 67 0d 0a 20 20   date string..  
14d60 20 20 2a 20 40 73 74 61 74 69 63 0d 0a 20 20 20    * @static..   
14d70 20 2a 2f 0d 0a 20 20 20 20 66 6f 72 6d 61 74 44   */..    formatD
14d80 61 74 65 20 3a 20 66 75 6e 63 74 69 6f 6e 28 76  ate : function(v
14d90 44 61 74 65 2c 20 76 46 6f 72 6d 61 74 29 20 7b  Date, vFormat) {
14da0 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 76 44  ..        var vD
14db0 61 79 20 3d 20 74 68 69 73 2e 61 64 64 5a 65 72  ay = this.addZer
14dc0 6f 28 76 44 61 74 65 2e 67 65 74 44 61 74 65 28  o(vDate.getDate(
14dd0 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  ));..        var
14de0 20 76 4d 6f 6e 74 68 20 3d 20 74 68 69 73 2e 61   vMonth = this.a
14df0 64 64 5a 65 72 6f 28 76 44 61 74 65 2e 67 65 74  ddZero(vDate.get
14e00 4d 6f 6e 74 68 28 29 2b 31 29 3b 0d 0a 20 20 20  Month()+1);..   
14e10 20 20 20 20 20 76 61 72 20 76 59 65 61 72 4c 6f       var vYearLo
14e20 6e 67 20 3d 20 74 68 69 73 2e 61 64 64 5a 65 72  ng = this.addZer
14e30 6f 28 76 44 61 74 65 2e 67 65 74 46 75 6c 6c 59  o(vDate.getFullY
14e40 65 61 72 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ear());..       
14e50 20 76 61 72 20 76 59 65 61 72 53 68 6f 72 74 20   var vYearShort 
14e60 3d 20 74 68 69 73 2e 61 64 64 5a 65 72 6f 28 76  = this.addZero(v
14e70 44 61 74 65 2e 67 65 74 46 75 6c 6c 59 65 61 72  Date.getFullYear
14e80 28 29 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73 75  ().toString().su
14e90 62 73 74 72 69 6e 67 28 33 2c 34 29 29 3b 0d 0a  bstring(3,4));..
14ea0 20 20 20 20 20 20 20 20 76 61 72 20 76 59 65 61          var vYea
14eb0 72 20 3d 20 28 76 46 6f 72 6d 61 74 2e 69 6e 64  r = (vFormat.ind
14ec0 65 78 4f 66 28 22 79 79 79 79 22 29 3e 2d 31 3f  exOf("yyyy")>-1?
14ed0 76 59 65 61 72 4c 6f 6e 67 3a 76 59 65 61 72 53  vYearLong:vYearS
14ee0 68 6f 72 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  hort);..        
14ef0 76 61 72 20 76 48 6f 75 72 20 20 3d 20 74 68 69  var vHour  = thi
14f00 73 2e 61 64 64 5a 65 72 6f 28 76 44 61 74 65 2e  s.addZero(vDate.
14f10 67 65 74 48 6f 75 72 73 28 29 29 3b 0d 0a 20 20  getHours());..  
14f20 20 20 20 20 20 20 76 61 72 20 76 4d 69 6e 75 74        var vMinut
14f30 65 20 3d 20 74 68 69 73 2e 61 64 64 5a 65 72 6f  e = this.addZero
14f40 28 76 44 61 74 65 2e 67 65 74 4d 69 6e 75 74 65  (vDate.getMinute
14f50 73 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 76  s());..        v
14f60 61 72 20 76 53 65 63 6f 6e 64 20 3d 20 74 68 69  ar vSecond = thi
14f70 73 2e 61 64 64 5a 65 72 6f 28 76 44 61 74 65 2e  s.addZero(vDate.
14f80 67 65 74 53 65 63 6f 6e 64 73 28 29 29 3b 0d 0a  getSeconds());..
14f90 20 20 20 20 20 20 20 20 76 61 72 20 76 54 69 6d          var vTim
14fa0 65 5a 6f 6e 65 20 3d 20 74 68 69 73 2e 4f 28 76  eZone = this.O(v
14fb0 44 61 74 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Date);..        
14fc0 76 61 72 20 76 44 61 74 65 53 74 72 69 6e 67 20  var vDateString 
14fd0 3d 20 76 46 6f 72 6d 61 74 2e 72 65 70 6c 61 63  = vFormat.replac
14fe0 65 28 2f 64 64 2f 67 2c 20 76 44 61 79 29 2e 72  e(/dd/g, vDay).r
14ff0 65 70 6c 61 63 65 28 2f 4d 4d 2f 67 2c 20 76 4d  eplace(/MM/g, vM
15000 6f 6e 74 68 29 2e 72 65 70 6c 61 63 65 28 2f 79  onth).replace(/y
15010 7b 31 2c 34 7d 2f 67 2c 20 76 59 65 61 72 29 3b  {1,4}/g, vYear);
15020 0d 0a 20 20 20 20 20 20 20 20 76 44 61 74 65 53  ..        vDateS
15030 74 72 69 6e 67 20 3d 20 76 44 61 74 65 53 74 72  tring = vDateStr
15040 69 6e 67 2e 72 65 70 6c 61 63 65 28 2f 68 68 2f  ing.replace(/hh/
15050 67 2c 20 76 48 6f 75 72 29 2e 72 65 70 6c 61 63  g, vHour).replac
15060 65 28 2f 6d 6d 2f 67 2c 20 76 4d 69 6e 75 74 65  e(/mm/g, vMinute
15070 29 2e 72 65 70 6c 61 63 65 28 2f 73 73 2f 67 2c  ).replace(/ss/g,
15080 20 76 53 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20   vSecond);..    
15090 20 20 20 20 76 44 61 74 65 53 74 72 69 6e 67 20      vDateString 
150a0 3d 20 76 44 61 74 65 53 74 72 69 6e 67 2e 72 65  = vDateString.re
150b0 70 6c 61 63 65 28 2f 4f 2f 67 2c 20 76 54 69 6d  place(/O/g, vTim
150c0 65 5a 6f 6e 65 29 3b 0d 0a 20 20 20 20 20 20 20  eZone);..       
150d0 20 72 65 74 75 72 6e 20 76 44 61 74 65 53 74 72   return vDateStr
150e0 69 6e 67 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20  ing;..    },..  
150f0 20 20 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d        ..    /**.
15100 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d  .    * @private.
15110 0a 20 20 20 20 2a 20 40 73 74 61 74 69 63 0d 0a  .    * @static..
15120 20 20 20 20 2a 2f 0d 0a 20 20 20 20 61 64 64 5a      */..    addZ
15130 65 72 6f 20 3a 20 66 75 6e 63 74 69 6f 6e 28 76  ero : function(v
15140 4e 75 6d 62 65 72 29 20 7b 0d 0a 20 20 20 20 20  Number) {..     
15150 20 20 20 72 65 74 75 72 6e 20 28 28 76 4e 75 6d     return ((vNum
15160 62 65 72 20 3c 20 31 30 29 20 3f 20 22 30 22 20  ber < 10) ? "0" 
15170 3a 20 22 22 29 20 2b 20 76 4e 75 6d 62 65 72 3b  : "") + vNumber;
15180 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a  ..    },..    ..
15190 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 46      /**..    * F
151a0 6f 72 6d 61 74 65 73 20 74 68 65 20 54 69 6d 65  ormates the Time
151b0 4f 66 66 65 73 74 0d 0a 20 20 20 20 2a 20 54 68  Offest..    * Th
151c0 61 6e 6b 73 20 74 6f 20 68 74 74 70 3a 2f 2f 77  anks to http://w
151d0 77 77 2e 73 76 65 6e 64 74 6f 66 74 65 2e 63 6f  ww.svendtofte.co
151e0 6d 2f 63 6f 64 65 2f 64 61 74 65 5f 66 6f 72 6d  m/code/date_form
151f0 61 74 2f 0d 0a 20 20 20 20 2a 20 40 70 72 69 76  at/..    * @priv
15200 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  ate..    */..   
15210 20 4f 20 3a 20 66 75 6e 63 74 69 6f 6e 20 28 64   O : function (d
15220 61 74 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ate) {..        
15230 2f 2f 20 44 69 66 66 65 72 65 6e 63 65 20 74 6f  // Difference to
15240 20 47 72 65 65 6e 77 69 63 68 20 74 69 6d 65 20   Greenwich time 
15250 28 47 4d 54 29 20 69 6e 20 68 6f 75 72 73 0d 0a  (GMT) in hours..
15260 20 20 20 20 20 20 20 20 76 61 72 20 6f 73 20 3d          var os =
15270 20 4d 61 74 68 2e 61 62 73 28 64 61 74 65 2e 67   Math.abs(date.g
15280 65 74 54 69 6d 65 7a 6f 6e 65 4f 66 66 73 65 74  etTimezoneOffset
15290 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61  ());..        va
152a0 72 20 68 20 3d 20 53 74 72 69 6e 67 28 4d 61 74  r h = String(Mat
152b0 68 2e 66 6c 6f 6f 72 28 6f 73 2f 36 30 29 29 3b  h.floor(os/60));
152c0 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 6d 20  ..        var m 
152d0 3d 20 53 74 72 69 6e 67 28 6f 73 25 36 30 29 3b  = String(os%60);
152e0 0d 0a 20 20 20 20 20 20 20 20 68 2e 6c 65 6e 67  ..        h.leng
152f0 74 68 20 3d 3d 20 31 3f 20 68 20 3d 20 22 30 22  th == 1? h = "0"
15300 2b 68 3a 31 3b 0d 0a 20 20 20 20 20 20 20 20 6d  +h:1;..        m
15310 2e 6c 65 6e 67 74 68 20 3d 3d 20 31 3f 20 6d 20  .length == 1? m 
15320 3d 20 22 30 22 2b 6d 3a 31 3b 0d 0a 20 20 20 20  = "0"+m:1;..    
15330 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 2e      return date.
15340 67 65 74 54 69 6d 65 7a 6f 6e 65 4f 66 66 73 65  getTimezoneOffse
15350 74 28 29 20 3c 20 30 20 3f 20 22 2b 22 2b 68 2b  t() < 0 ? "+"+h+
15360 6d 20 3a 20 22 2d 22 2b 68 2b 6d 3b 0d 0a 20 20  m : "-"+h+m;..  
15370 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 2f 2a 2a    }..};....../**
15380 0d 0a 2a 20 69 6e 74 65 72 6e 61 6c 20 4c 6f 67  ..* internal Log
15390 67 65 72 20 74 6f 20 62 65 20 75 73 65 64 0d 0a  ger to be used..
153a0 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a  * @private..*/..
153b0 76 61 72 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72  var log4jsLogger
153c0 20 3d 20 4c 6f 67 34 6a 73 2e 67 65 74 4c 6f 67   = Log4js.getLog
153d0 67 65 72 28 22 4c 6f 67 34 6a 73 22 29 3b 0d 0a  ger("Log4js");..
153e0 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 61 64 64  log4jsLogger.add
153f0 41 70 70 65 6e 64 65 72 28 6e 65 77 20 4c 6f 67  Appender(new Log
15400 34 6a 73 2e 42 72 6f 77 73 65 72 43 6f 6e 73 6f  4js.BrowserConso
15410 6c 65 41 70 70 65 6e 64 65 72 28 29 29 3b 0d 0a  leAppender());..
15420 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 73 65 74  log4jsLogger.set
15430 4c 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76  Level(Log4js.Lev
15440 65 6c 2e 41 4c 4c 29 3b 0d 0a                    el.ALL);..