Hex Artifact Content Вы: nobody
Вход

Artifact 9a9fcf2be90762964429e9f4b1acc6a5ac7b2e29:


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 2a 20 4c  lobal..../*..* L
0070: 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74 68  icensed under th
0080: 65 20 41 70 61 63 68 65 20 4c 69 63 65 6e 73 65  e Apache License
0090: 2c 20 56 65 72 73 69 6f 6e 20 32 2e 30 20 28 74  , Version 2.0 (t
00a0: 68 65 20 22 4c 69 63 65 6e 73 65 22 29 3b 0d 0a  he "License");..
00b0: 2a 20 79 6f 75 20 6d 61 79 20 6e 6f 74 20 75 73  * you may not us
00c0: 65 20 74 68 69 73 20 66 69 6c 65 20 65 78 63 65  e this file exce
00d0: 70 74 20 69 6e 20 63 6f 6d 70 6c 69 61 6e 63 65  pt in compliance
00e0: 20 77 69 74 68 20 74 68 65 20 4c 69 63 65 6e 73   with the Licens
00f0: 65 2e 0d 0a 2a 20 59 6f 75 20 6d 61 79 20 6f 62  e...* You may ob
0100: 74 61 69 6e 20 61 20 63 6f 70 79 20 6f 66 20 74  tain a copy of t
0110: 68 65 20 4c 69 63 65 6e 73 65 20 61 74 0d 0a 2a  he License at..*
0120: 0d 0a 2a 20 20 20 20 20 20 68 74 74 70 3a 2f 2f  ..*      http://
0130: 77 77 77 2e 61 70 61 63 68 65 2e 6f 72 67 2f 6c  www.apache.org/l
0140: 69 63 65 6e 73 65 73 2f 4c 49 43 45 4e 53 45 2d  icenses/LICENSE-
0150: 32 2e 30 0d 0a 2a 0d 0a 2a 20 55 6e 6c 65 73 73  2.0..*..* Unless
0160: 20 72 65 71 75 69 72 65 64 20 62 79 20 61 70 70   required by app
0170: 6c 69 63 61 62 6c 65 20 6c 61 77 20 6f 72 20 61  licable law or a
0180: 67 72 65 65 64 20 74 6f 20 69 6e 20 77 72 69 74  greed to in writ
0190: 69 6e 67 2c 20 73 6f 66 74 77 61 72 65 0d 0a 2a  ing, software..*
01a0: 20 64 69 73 74 72 69 62 75 74 65 64 20 75 6e 64   distributed und
01b0: 65 72 20 74 68 65 20 4c 69 63 65 6e 73 65 20 69  er the License i
01c0: 73 20 64 69 73 74 72 69 62 75 74 65 64 20 6f 6e  s distributed on
01d0: 20 61 6e 20 22 41 53 20 49 53 22 20 42 41 53 49   an "AS IS" BASI
01e0: 53 2c 0d 0a 2a 20 57 49 54 48 4f 55 54 20 57 41  S,..* WITHOUT WA
01f0: 52 52 41 4e 54 49 45 53 20 4f 52 20 43 4f 4e 44  RRANTIES OR COND
0200: 49 54 49 4f 4e 53 20 4f 46 20 41 4e 59 20 4b 49  ITIONS OF ANY KI
0210: 4e 44 2c 20 65 69 74 68 65 72 20 65 78 70 72 65  ND, either expre
0220: 73 73 20 6f 72 20 69 6d 70 6c 69 65 64 2e 0d 0a  ss or implied...
0230: 2a 20 53 65 65 20 74 68 65 20 4c 69 63 65 6e 73  * See the Licens
0240: 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66  e for the specif
0250: 69 63 20 6c 61 6e 67 75 61 67 65 20 67 6f 76 65  ic language gove
0260: 72 6e 69 6e 67 20 70 65 72 6d 69 73 73 69 6f 6e  rning permission
0270: 73 20 61 6e 64 0d 0a 2a 20 6c 69 6d 69 74 61 74  s and..* limitat
0280: 69 6f 6e 73 20 75 6e 64 65 72 20 74 68 65 20 4c  ions under the L
0290: 69 63 65 6e 73 65 2e 0d 0a 2a 2f 0d 0a 0d 0a 2f  icense...*/..../
02a0: 2a 6a 73 6c 3a 6f 70 74 69 6f 6e 20 65 78 70 6c  *jsl:option expl
02b0: 69 63 69 74 2a 2f 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a  icit*/..../**..*
02c0: 20 40 66 69 6c 65 6f 76 65 72 76 69 65 77 20 6c   @fileoverview l
02d0: 6f 67 34 6a 73 20 69 73 20 61 20 6c 69 62 72 61  og4js is a libra
02e0: 72 79 20 74 6f 20 6c 6f 67 20 69 6e 20 4a 61 76  ry to log in Jav
02f0: 61 53 63 72 69 70 74 20 69 6e 20 73 69 6d 69 6c  aScript in simil
0300: 61 72 20 6d 61 6e 6e 65 72 20 0d 0a 2a 20 74 68  ar manner ..* th
0310: 61 6e 20 69 6e 20 6c 6f 67 34 6a 20 66 6f 72 20  an in log4j for 
0320: 4a 61 76 61 2e 20 54 68 65 20 41 50 49 20 73 68  Java. The API sh
0330: 6f 75 6c 64 20 62 65 20 6e 65 61 72 6c 79 20 74  ould be nearly t
0340: 68 65 20 73 61 6d 65 2e 0d 0a 2a 20 0d 0a 2a 20  he same...* ..* 
0350: 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61 69  This file contai
0360: 6e 73 20 61 6c 6c 20 6c 6f 67 34 6a 73 20 63 6f  ns all log4js co
0370: 64 65 20 61 6e 64 20 69 73 20 74 68 65 20 6f 6e  de and is the on
0380: 6c 79 20 66 69 6c 65 20 72 65 71 75 69 72 65 64  ly file required
0390: 20 66 6f 72 20 6c 6f 67 67 69 6e 67 2e 0d 0a 2a   for logging...*
03a0: 20 0d 0a 2a 20 3c 68 33 3e 45 78 61 6d 70 6c 65   ..* <h3>Example
03b0: 3a 3c 2f 68 33 3e 0d 0a 2a 20 3c 70 72 65 3e 0d  :</h3>..* <pre>.
03c0: 0a 2a 20 20 76 61 72 20 6c 6f 67 20 3d 20 6e 65  .*  var log = ne
03d0: 77 20 4c 6f 67 34 6a 73 2e 67 65 74 4c 6f 67 67  w Log4js.getLogg
03e0: 65 72 28 22 73 6f 6d 65 2d 63 61 74 65 67 6f 72  er("some-categor
03f0: 79 2d 6e 61 6d 65 22 29 3b 20 2f 2f 63 72 65 61  y-name"); //crea
0400: 74 65 20 6c 6f 67 67 65 72 20 69 6e 73 74 61 6e  te logger instan
0410: 63 65 0d 0a 2a 20 20 6c 6f 67 2e 73 65 74 4c 65  ce..*  log.setLe
0420: 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  vel(Log4js.Level
0430: 2e 54 52 41 43 45 29 3b 20 2f 2f 73 65 74 20 74  .TRACE); //set t
0440: 68 65 20 4c 65 76 65 6c 0d 0a 2a 20 20 6c 6f 67  he Level..*  log
0450: 2e 61 64 64 41 70 70 65 6e 64 65 72 28 6e 65 77  .addAppender(new
0460: 20 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72   ConsoleAppender
0470: 28 6c 6f 67 2c 20 66 61 6c 73 65 29 29 3b 20 2f  (log, false)); /
0480: 2f 20 63 6f 6e 73 6f 6c 65 20 74 68 61 74 20 6c  / console that l
0490: 61 75 6e 63 68 65 73 20 69 6e 20 6e 65 77 20 77  aunches in new w
04a0: 69 6e 64 6f 77 0d 0a 0d 0a 2a 20 20 2f 2f 20 69  indow....*  // i
04b0: 66 20 6d 75 6c 74 69 70 6c 65 20 61 70 70 65 6e  f multiple appen
04c0: 64 65 72 73 20 61 72 65 20 73 65 74 20 61 6c 6c  ders are set all
04d0: 20 77 69 6c 6c 20 6c 6f 67 0d 0a 2a 20 20 6c 6f   will log..*  lo
04e0: 67 2e 61 64 64 41 70 70 65 6e 64 65 72 28 6e 65  g.addAppender(ne
04f0: 77 20 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65  w ConsoleAppende
0500: 72 28 6c 6f 67 2c 20 74 72 75 65 29 29 3b 20 2f  r(log, true)); /
0510: 2f 20 63 6f 6e 73 6f 6c 65 20 74 68 61 74 20 69  / console that i
0520: 73 20 69 6e 2d 6c 69 6e 65 20 69 6e 20 74 68 65  s in-line in the
0530: 20 70 61 67 65 0d 0a 2a 20 20 6c 6f 67 2e 61 64   page..*  log.ad
0540: 64 41 70 70 65 6e 64 65 72 28 6e 65 77 20 46 69  dAppender(new Fi
0550: 6c 65 41 70 70 65 6e 64 65 72 28 22 43 3a 5c 5c  leAppender("C:\\
0560: 73 6f 6d 65 66 69 6c 65 2e 6c 6f 67 22 29 29 3b  somefile.log"));
0570: 20 2f 2f 20 66 69 6c 65 20 61 70 70 65 6e 64 65   // file appende
0580: 72 20 6c 6f 67 73 20 74 6f 20 43 3a 5c 5c 73 6f  r logs to C:\\so
0590: 6d 65 66 69 6c 65 2e 6c 6f 67 0d 0a 2a 20 0d 0a  mefile.log..* ..
05a0: 2a 20 20 2e 2e 2e 0d 0a 2a 20 0d 0a 2a 20 20 2f  *  .....* ..*  /
05b0: 2f 63 61 6c 6c 20 74 68 65 20 6c 6f 67 0d 0a 2a  /call the log..*
05c0: 20 20 6c 6f 67 2e 74 72 61 63 65 28 22 74 72 61    log.trace("tra
05d0: 63 65 20 6d 65 22 20 29 3b 0d 0a 2a 20 3c 2f 70  ce me" );..* </p
05e0: 72 65 3e 0d 0a 2a 0d 0a 2a 20 40 76 65 72 73 69  re>..*..* @versi
05f0: 6f 6e 20 30 2e 33 0d 0a 2a 20 40 61 75 74 68 6f  on 0.3..* @autho
0600: 72 20 53 74 65 70 68 61 6e 20 53 74 72 69 74 74  r Stephan Stritt
0610: 6d 61 74 74 65 72 20 2d 20 68 74 74 70 3a 2f 2f  matter - http://
0620: 6a 72 6f 6c 6c 65 72 2e 63 6f 6d 2f 70 61 67 65  jroller.com/page
0630: 2f 73 74 72 69 74 74 69 0d 0a 2a 20 40 61 75 74  /stritti..* @aut
0640: 68 6f 72 20 53 65 74 68 20 43 68 69 73 61 6d 6f  hor Seth Chisamo
0650: 72 65 20 2d 20 68 74 74 70 3a 2f 2f 77 77 77 2e  re - http://www.
0660: 63 68 69 73 61 6d 6f 72 65 2e 63 6f 6d 0d 0a 2a  chisamore.com..*
0670: 20 40 73 69 6e 63 65 20 32 30 30 35 2d 30 35 2d   @since 2005-05-
0680: 32 30 0d 0a 2a 20 57 65 62 73 69 74 65 3a 20 68  20..* Website: h
0690: 74 74 70 3a 2f 2f 6c 6f 67 34 6a 73 2e 62 65 72  ttp://log4js.ber
06a0: 6c 69 6f 73 2e 64 65 0d 0a 2a 2f 0d 0a 76 61 72  lios.de..*/..var
06b0: 20 4c 6f 67 34 6a 73 20 3d 20 7b 0d 0a 20 20 20   Log4js = {..   
06c0: 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20   ..    /** ..   
06d0: 20 2a 20 43 75 72 72 65 6e 74 20 76 65 72 73 69   * Current versi
06e0: 6f 6e 20 6f 66 20 6c 6f 67 34 6a 73 2e 20 0d 0a  on of log4js. ..
06f0: 20 20 20 20 2a 20 40 73 74 61 74 69 63 0d 0a 20      * @static.. 
0700: 20 20 20 2a 20 40 66 69 6e 61 6c 0d 0a 20 20 20     * @final..   
0710: 20 2a 2f 0d 0a 20 20 20 20 76 65 72 73 69 6f 6e   */..    version
0720: 3a 20 22 31 2e 30 22 2c 0d 0a 0d 0a 20 20 20 20  : "1.0",....    
0730: 2f 2a 2a 20 20 0d 0a 20 20 20 20 2a 20 44 61 74  /**  ..    * Dat
0740: 65 20 6f 66 20 6c 6f 67 67 65 72 20 69 6e 69 74  e of logger init
0750: 69 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20 2a 20  ialized...    * 
0760: 40 73 74 61 74 69 63 0d 0a 20 20 20 20 2a 20 40  @static..    * @
0770: 66 69 6e 61 6c 0d 0a 20 20 20 20 2a 2f 0d 0a 20  final..    */.. 
0780: 20 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 53 74     applicationSt
0790: 61 72 74 44 61 74 65 3a 20 6e 65 77 20 44 61 74  artDate: new Dat
07a0: 65 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 0d 0a  e(),..        ..
07b0: 20 20 20 20 2f 2a 2a 20 20 0d 0a 20 20 20 20 2a      /**  ..    *
07c0: 20 48 61 73 68 74 61 62 6c 65 20 6f 66 20 6c 6f   Hashtable of lo
07d0: 67 67 65 72 73 2e 0d 0a 20 20 20 20 2a 20 40 73  ggers...    * @s
07e0: 74 61 74 69 63 0d 0a 20 20 20 20 2a 20 40 66 69  tatic..    * @fi
07f0: 6e 61 6c 0d 0a 20 20 20 20 2a 20 40 70 72 69 76  nal..    * @priv
0800: 61 74 65 20 20 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ate  ..    */.. 
0810: 20 20 20 6c 6f 67 67 65 72 73 3a 20 7b 7d 2c 0d     loggers: {},.
0820: 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a  .    ..    /**..
0830: 20 20 20 20 2a 20 47 65 74 20 61 20 6c 6f 67 67      * Get a logg
0840: 65 72 20 69 6e 73 74 61 6e 63 65 2e 20 49 6e 73  er instance. Ins
0850: 74 61 6e 63 65 20 69 73 20 63 61 63 68 65 64 20  tance is cached 
0860: 6f 6e 20 63 61 74 65 67 6f 72 79 4e 61 6d 65 20  on categoryName 
0870: 6c 65 76 65 6c 2e 0d 0a 20 20 20 20 2a 20 40 70  level...    * @p
0880: 61 72 61 6d 20 20 7b 53 74 72 69 6e 67 7d 20 63  aram  {String} c
0890: 61 74 65 67 6f 72 79 4e 61 6d 65 20 6e 61 6d 65  ategoryName name
08a0: 20 6f 66 20 63 61 74 65 67 6f 72 79 20 74 6f 20   of category to 
08b0: 6c 6f 67 20 74 6f 2e 0d 0a 20 20 20 20 2a 20 40  log to...    * @
08c0: 72 65 74 75 72 6e 20 7b 4c 6f 67 67 65 72 7d 20  return {Logger} 
08d0: 69 6e 73 74 61 6e 63 65 20 6f 66 20 6c 6f 67 67  instance of logg
08e0: 65 72 20 66 6f 72 20 74 68 65 20 63 61 74 65 67  er for the categ
08f0: 6f 72 79 0d 0a 20 20 20 20 2a 20 40 73 74 61 74  ory..    * @stat
0900: 69 63 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  ic..    */..    
0910: 67 65 74 4c 6f 67 67 65 72 3a 20 66 75 6e 63 74  getLogger: funct
0920: 69 6f 6e 28 63 61 74 65 67 6f 72 79 4e 61 6d 65  ion(categoryName
0930: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20  ) {..        .. 
0940: 20 20 20 20 20 20 20 2f 2f 20 55 73 65 20 64 65         // Use de
0950: 66 61 75 6c 74 20 6c 6f 67 67 65 72 20 69 66 20  fault logger if 
0960: 63 61 74 65 67 6f 72 79 4e 61 6d 65 20 69 73 20  categoryName is 
0970: 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20 6f 72  not specified or
0980: 20 69 6e 76 61 6c 69 64 0d 0a 20 20 20 20 20 20   invalid..      
0990: 20 20 69 66 20 28 21 28 74 79 70 65 6f 66 20 63    if (!(typeof c
09a0: 61 74 65 67 6f 72 79 4e 61 6d 65 20 3d 3d 20 22  ategoryName == "
09b0: 73 74 72 69 6e 67 22 29 29 20 7b 0d 0a 20 20 20  string")) {..   
09c0: 20 20 20 20 20 20 20 20 20 63 61 74 65 67 6f 72           categor
09d0: 79 4e 61 6d 65 20 3d 20 22 5b 64 65 66 61 75 6c  yName = "[defaul
09e0: 74 5d 22 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t]";..        }.
09f0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  ...        if (!
0a00: 4c 6f 67 34 6a 73 2e 6c 6f 67 67 65 72 73 5b 63  Log4js.loggers[c
0a10: 61 74 65 67 6f 72 79 4e 61 6d 65 5d 29 20 7b 0d  ategoryName]) {.
0a20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
0a30: 43 72 65 61 74 65 20 74 68 65 20 6c 6f 67 67 65  Create the logge
0a40: 72 20 66 6f 72 20 74 68 69 73 20 6e 61 6d 65 20  r for this name 
0a50: 69 66 20 69 74 20 64 6f 65 73 6e 27 74 20 61 6c  if it doesn't al
0a60: 72 65 61 64 79 20 65 78 69 73 74 0d 0a 20 20 20  ready exist..   
0a70: 20 20 20 20 20 20 20 20 20 4c 6f 67 34 6a 73 2e           Log4js.
0a80: 6c 6f 67 67 65 72 73 5b 63 61 74 65 67 6f 72 79  loggers[category
0a90: 4e 61 6d 65 5d 20 3d 20 6e 65 77 20 4c 6f 67 34  Name] = new Log4
0aa0: 6a 73 2e 4c 6f 67 67 65 72 28 63 61 74 65 67 6f  js.Logger(catego
0ab0: 72 79 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ryName);..      
0ac0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20    }..        .. 
0ad0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4c 6f         return Lo
0ae0: 67 34 6a 73 2e 6c 6f 67 67 65 72 73 5b 63 61 74  g4js.loggers[cat
0af0: 65 67 6f 72 79 4e 61 6d 65 5d 3b 0d 0a 20 20 20  egoryName];..   
0b00: 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f   },..    ..    /
0b10: 2a 2a 0d 0a 20 20 20 20 2a 20 47 65 74 20 74 68  **..    * Get th
0b20: 65 20 64 65 66 61 75 6c 74 20 6c 6f 67 67 65 72  e default logger
0b30: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
0b40: 2a 20 40 72 65 74 75 72 6e 20 7b 4c 6f 67 67 65  * @return {Logge
0b50: 72 7d 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 64  r} instance of d
0b60: 65 66 61 75 6c 74 20 6c 6f 67 67 65 72 0d 0a 20  efault logger.. 
0b70: 20 20 20 2a 20 40 73 74 61 74 69 63 0d 0a 20 20     * @static..  
0b80: 20 20 2a 2f 0d 0a 20 20 20 20 67 65 74 44 65 66    */..    getDef
0b90: 61 75 6c 74 4c 6f 67 67 65 72 3a 20 66 75 6e 63  aultLogger: func
0ba0: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20  tion() {..      
0bb0: 20 20 72 65 74 75 72 6e 20 4c 6f 67 34 6a 73 2e    return Log4js.
0bc0: 67 65 74 4c 6f 67 67 65 72 28 22 5b 64 65 66 61  getLogger("[defa
0bd0: 75 6c 74 5d 22 29 3b 20 0d 0a 20 20 20 20 7d 2c  ult]"); ..    },
0be0: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d  ..    ..    /**.
0bf0: 0a 20 20 20 20 2a 20 41 74 61 74 63 68 20 61 6e  .    * Atatch an
0c00: 20 6f 62 73 65 72 76 65 72 20 66 75 6e 63 74 69   observer functi
0c10: 6f 6e 20 74 6f 20 61 6e 20 65 6c 65 6d 65 6e 74  on to an element
0c20: 73 20 65 76 65 6e 74 20 62 72 6f 77 73 65 72 20  s event browser 
0c30: 69 6e 64 65 70 65 6e 64 65 6e 74 2e 0d 0a 20 20  independent...  
0c40: 20 20 2a 20 0d 0a 20 20 20 20 2a 20 40 70 61 72    * ..    * @par
0c50: 61 6d 20 65 6c 65 6d 65 6e 74 20 65 6c 65 6d 65  am element eleme
0c60: 6e 74 20 74 6f 20 61 74 74 61 63 68 20 65 76 65  nt to attach eve
0c70: 6e 74 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d  nt..    * @param
0c80: 20 6e 61 6d 65 20 6e 61 6d 65 20 6f 66 20 65 76   name name of ev
0c90: 65 6e 74 0d 0a 20 20 20 20 2a 20 40 70 61 72 61  ent..    * @para
0ca0: 6d 20 6f 62 73 65 72 76 65 72 20 6f 62 73 65 72  m observer obser
0cb0: 76 65 72 20 6d 65 74 68 6f 64 20 74 6f 20 62 65  ver method to be
0cc0: 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20 2a 20 40   called..    * @
0cd0: 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d  private..    */.
0ce0: 0a 20 20 20 20 61 74 74 61 63 68 45 76 65 6e 74  .    attachEvent
0cf0: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 65 6c 65 6d  : function (elem
0d00: 65 6e 74 2c 20 6e 61 6d 65 2c 20 6f 62 73 65 72  ent, name, obser
0d10: 76 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ver) {..        
0d20: 69 66 20 28 65 6c 65 6d 65 6e 74 2e 61 64 64 45  if (element.addE
0d30: 76 65 6e 74 4c 69 73 74 65 6e 65 72 29 20 7b 20  ventListener) { 
0d40: 2f 2f 44 4f 4d 20 65 76 65 6e 74 20 6d 6f 64 65  //DOM event mode
0d50: 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  l..            e
0d60: 6c 65 6d 65 6e 74 2e 61 64 64 45 76 65 6e 74 4c  lement.addEventL
0d70: 69 73 74 65 6e 65 72 28 6e 61 6d 65 2c 20 6f 62  istener(name, ob
0d80: 73 65 72 76 65 72 2c 20 66 61 6c 73 65 29 3b 0d  server, false);.
0d90: 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20  .        } else 
0da0: 69 66 20 28 65 6c 65 6d 65 6e 74 2e 61 74 74 61  if (element.atta
0db0: 63 68 45 76 65 6e 74 29 20 7b 20 2f 2f 4d 24 20  chEvent) { //M$ 
0dc0: 65 76 65 6e 74 20 6d 6f 64 65 6c 0d 0a 20 20 20  event model..   
0dd0: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
0de0: 2e 61 74 74 61 63 68 45 76 65 6e 74 28 27 6f 6e  .attachEvent('on
0df0: 27 20 2b 20 6e 61 6d 65 2c 20 6f 62 73 65 72 76  ' + name, observ
0e00: 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  er);..        }.
0e10: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a 20 20  .    }..    ..  
0e20: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 4c 6f 61    /**..    * Loa
0e30: 64 20 61 20 4a 53 2d 73 63 72 69 70 74 20 64 79  d a JS-script dy
0e40: 6e 61 6d 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20  namically...    
0e50: 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e 67  * @param {String
0e60: 7d 20 73 72 63 0d 0a 20 20 20 20 2a 2f 0d 0a 2f  } src..    */../
0e70: 2a 09 24 69 6d 70 6f 72 74 3a 20 66 75 6e 63 74  *.$import: funct
0e80: 69 6f 6e 20 28 73 72 63 29 20 7b 0d 0a 20 20 20  ion (src) {..   
0e90: 20 20 20 20 20 76 61 72 20 64 6f 63 75 6d 65 6e       var documen
0ea0: 74 53 63 72 69 70 74 73 20 3d 20 64 6f 63 75 6d  tScripts = docum
0eb0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42  ent.getElementsB
0ec0: 79 54 61 67 4e 61 6d 65 28 22 73 63 72 69 70 74  yTagName("script
0ed0: 22 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 20  ");..    ..     
0ee0: 20 20 20 66 6f 72 20 28 69 6e 64 65 78 20 3d 20     for (index = 
0ef0: 30 3b 20 69 6e 64 65 78 20 3c 20 64 6f 63 75 6d  0; index < docum
0f00: 65 6e 74 53 63 72 69 70 74 73 2e 6c 65 6e 67 74  entScripts.lengt
0f10: 68 3b 20 2b 2b 69 6e 64 65 78 29 0d 0a 20 20 20  h; ++index)..   
0f20: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0f30: 20 20 20 20 76 61 72 20 64 6f 63 75 6d 65 6e 74      var document
0f40: 53 63 72 69 70 74 20 3d 20 64 6f 63 75 6d 65 6e  Script = documen
0f50: 74 53 63 72 69 70 74 73 5b 69 6e 64 65 78 5d 3b  tScripts[index];
0f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
0f70: 20 28 64 6f 63 75 6d 65 6e 74 53 63 72 69 70 74   (documentScript
0f80: 2e 73 72 63 20 3d 3d 20 73 72 63 29 20 7b 0d 0a  .src == src) {..
0f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fa0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
0fb0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
0fc0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
0fd0: 20 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 73   ..        var s
0fe0: 63 72 69 70 74 20 3d 20 64 6f 63 75 6d 65 6e 74  cript = document
0ff0: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27  .createElement('
1000: 73 63 72 69 70 74 27 29 3b 0d 0a 20 20 20 20 20  script');..     
1010: 20 20 20 73 63 72 69 70 74 2e 74 79 70 65 20 3d     script.type =
1020: 20 27 74 65 78 74 2f 6a 61 76 61 73 63 72 69 70   'text/javascrip
1030: 74 27 3b 0d 0a 20 20 20 20 20 20 20 20 73 63 72  t';..        scr
1040: 69 70 74 2e 73 72 63 20 3d 20 73 72 63 3b 0d 0a  ipt.src = src;..
1050: 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
1060: 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42 79 54 61  .getElementsByTa
1070: 67 4e 61 6d 65 28 27 68 65 61 64 27 29 5b 30 5d  gName('head')[0]
1080: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 73 63 72  .appendChild(scr
1090: 69 70 74 29 3b 20 0d 0a 20 20 20 20 20 20 20 20  ipt); ..        
10a0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
10b0: 20 74 72 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20   true;..    }.. 
10c0: 20 20 20 2a 2f 0d 0a 7d 3b 0d 0a 0d 0a 2f 2a 2a     */..};..../**
10d0: 0d 0a 2a 20 49 6e 74 65 72 6e 61 6c 20 6f 62 6a  ..* Internal obj
10e0: 65 63 74 20 65 78 74 65 6e 73 69 6f 6e 20 28 4f  ect extension (O
10f0: 4f 29 20 6d 65 74 68 6f 64 73 2e 0d 0a 2a 20 0d  O) methods...* .
1100: 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a 20 40  .* @private..* @
1110: 69 67 6e 6f 72 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34  ignore..*/..Log4
1120: 6a 73 2e 65 78 74 65 6e 64 20 3d 20 66 75 6e 63  js.extend = func
1130: 74 69 6f 6e 28 64 65 73 74 69 6e 61 74 69 6f 6e  tion(destination
1140: 2c 20 73 6f 75 72 63 65 29 20 7b 0d 0a 66 6f 72  , source) {..for
1150: 20 28 70 72 6f 70 65 72 74 79 20 69 6e 20 73 6f   (property in so
1160: 75 72 63 65 29 20 7b 0d 0a 20 20 20 20 64 65 73  urce) {..    des
1170: 74 69 6e 61 74 69 6f 6e 5b 70 72 6f 70 65 72 74  tination[propert
1180: 79 5d 20 3d 20 73 6f 75 72 63 65 5b 70 72 6f 70  y] = source[prop
1190: 65 72 74 79 5d 3b 0d 0a 7d 0d 0a 72 65 74 75 72  erty];..}..retur
11a0: 6e 20 64 65 73 74 69 6e 61 74 69 6f 6e 3b 0d 0a  n destination;..
11b0: 7d 0d 0a 20 20 20 20 0d 0a 2f 2a 2a 0d 0a 2a 20  }..    ../**..* 
11c0: 46 75 6e 63 74 69 6f 6e 73 20 74 61 6b 65 6e 20  Functions taken 
11d0: 66 72 6f 6d 20 50 72 6f 74 6f 74 79 70 65 20 6c  from Prototype l
11e0: 69 62 72 61 72 79 2c 20 20 0d 0a 2a 20 64 69 64  ibrary,  ..* did
11f0: 6e 27 74 20 77 61 6e 74 20 74 6f 20 72 65 71 75  n't want to requ
1200: 69 72 65 20 66 6f 72 20 6a 75 73 74 20 66 65 77  ire for just few
1210: 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 2a 20 4d   functions...* M
1220: 6f 72 65 20 69 6e 66 6f 20 61 74 20 7b 40 6c 69  ore info at {@li
1230: 6e 6b 20 68 74 74 70 3a 2f 2f 70 72 6f 74 6f 74  nk http://protot
1240: 79 70 65 2e 63 6f 6e 69 6f 2e 6e 65 74 2f 7d 0d  ype.conio.net/}.
1250: 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f 09  .* @private..*/.
1260: 0d 0a 4c 6f 67 34 6a 73 2e 62 69 6e 64 20 3d 20  ..Log4js.bind = 
1270: 66 75 6e 63 74 69 6f 6e 28 66 6e 2c 20 6f 62 6a  function(fn, obj
1280: 65 63 74 29 20 7b 0d 0a 72 65 74 75 72 6e 20 66  ect) {..return f
1290: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
12a0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 6e 2e 61       return fn.a
12b0: 70 70 6c 79 28 6f 62 6a 65 63 74 2c 20 61 72 67  pply(object, arg
12c0: 75 6d 65 6e 74 73 29 3b 0d 0a 7d 3b 0d 0a 7d 3b  uments);..};..};
12d0: 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 4c 6f 67 34 6a  ..../**..* Log4j
12e0: 73 2e 4c 65 76 65 6c 20 45 6e 75 6d 65 72 61 74  s.Level Enumerat
12f0: 69 6f 6e 2e 20 44 6f 20 6e 6f 74 20 75 73 65 20  ion. Do not use 
1300: 64 69 72 65 63 74 6c 79 2e 20 55 73 65 20 73 74  directly. Use st
1310: 61 74 69 63 20 6f 62 6a 65 63 74 73 20 69 6e 73  atic objects ins
1320: 74 65 61 64 2e 0d 0a 2a 20 40 63 6f 6e 73 74 72  tead...* @constr
1330: 75 63 74 6f 72 0d 0a 2a 20 40 70 61 72 61 6d 20  uctor..* @param 
1340: 7b 4e 75 6d 62 65 72 7d 20 6c 65 76 65 6c 20 6e  {Number} level n
1350: 75 6d 62 65 72 20 6f 66 20 6c 65 76 65 6c 0d 0a  umber of level..
1360: 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e 67  * @param {String
1370: 7d 20 6c 65 76 65 6c 53 74 72 69 6e 67 20 53 74  } levelString St
1380: 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74  ring representat
1390: 69 6f 6e 20 6f 66 20 6c 65 76 65 6c 0d 0a 2a 20  ion of level..* 
13a0: 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f  @private..*/..Lo
13b0: 67 34 6a 73 2e 4c 65 76 65 6c 20 3d 20 66 75 6e  g4js.Level = fun
13c0: 63 74 69 6f 6e 28 6c 65 76 65 6c 2c 20 6c 65 76  ction(level, lev
13d0: 65 6c 53 74 72 29 20 7b 0d 0a 20 20 20 20 74 68  elStr) {..    th
13e0: 69 73 2e 6c 65 76 65 6c 20 3d 20 6c 65 76 65 6c  is.level = level
13f0: 3b 0d 0a 20 20 20 20 74 68 69 73 2e 6c 65 76 65  ;..    this.leve
1400: 6c 53 74 72 20 3d 20 6c 65 76 65 6c 53 74 72 3b  lStr = levelStr;
1410: 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 4c  ..};....Log4js.L
1420: 65 76 65 6c 2e 70 72 6f 74 6f 74 79 70 65 20 3d  evel.prototype =
1430: 20 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20    {..    /** .. 
1440: 20 20 20 2a 20 63 6f 6e 76 65 72 74 73 20 67 69     * converts gi
1450: 76 65 6e 20 53 74 72 69 6e 67 20 74 6f 20 63 6f  ven String to co
1460: 72 72 65 73 70 6f 6e 64 69 6e 67 20 4c 65 76 65  rresponding Leve
1470: 6c 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20  l..    * @param 
1480: 7b 53 74 72 69 6e 67 7d 20 73 41 72 67 20 53 74  {String} sArg St
1490: 72 69 6e 67 20 76 61 6c 75 65 20 6f 66 20 4c 65  ring value of Le
14a0: 76 65 6c 0d 0a 20 20 20 20 2a 20 40 70 61 72 61  vel..    * @para
14b0: 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 7d  m {Log4js.Level}
14c0: 20 64 65 66 61 75 6c 74 4c 65 76 65 6c 20 64 65   defaultLevel de
14d0: 66 61 75 6c 74 20 4c 65 76 65 6c 2c 20 69 66 20  fault Level, if 
14e0: 6e 6f 20 53 74 72 69 6e 67 20 72 65 70 72 65 73  no String repres
14f0: 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 2a 20  entation..    * 
1500: 40 72 65 74 75 72 6e 20 4c 65 76 65 6c 20 6f 62  @return Level ob
1510: 6a 65 63 74 0d 0a 20 20 20 20 2a 20 40 74 79 70  ject..    * @typ
1520: 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d 0a  e Log4js.Level..
1530: 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 6f 4c 65      */..    toLe
1540: 76 65 6c 3a 20 66 75 6e 63 74 69 6f 6e 28 73 41  vel: function(sA
1550: 72 67 2c 20 64 65 66 61 75 6c 74 4c 65 76 65 6c  rg, defaultLevel
1560: 29 20 7b 20 20 20 20 20 20 20 20 20 20 20 20 20  ) {             
1570: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20       ..         
1580: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
1590: 20 69 66 28 73 41 72 67 20 3d 3d 3d 20 6e 75 6c   if(sArg === nul
15a0: 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  l) {..          
15b0: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74    return default
15c0: 4c 65 76 65 6c 3b 0d 0a 20 20 20 20 20 20 20 20  Level;..        
15d0: 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20  }..        ..   
15e0: 20 20 20 20 20 69 66 28 74 79 70 65 6f 66 20 73       if(typeof s
15f0: 41 72 67 20 3d 3d 20 22 73 74 72 69 6e 67 22 29  Arg == "string")
1600: 20 7b 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20   { ..           
1610: 20 76 61 72 20 73 20 3d 20 73 41 72 67 2e 74 6f   var s = sArg.to
1620: 55 70 70 65 72 43 61 73 65 28 29 3b 0d 0a 20 20  UpperCase();..  
1630: 20 20 20 20 20 20 20 20 20 20 69 66 28 73 20 3d            if(s =
1640: 3d 20 22 41 4c 4c 22 29 20 7b 72 65 74 75 72 6e  = "ALL") {return
1650: 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 41 4c   Log4js.Level.AL
1660: 4c 3b 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  L;}..           
1670: 20 69 66 28 73 20 3d 3d 20 22 44 45 42 55 47 22   if(s == "DEBUG"
1680: 29 20 7b 72 65 74 75 72 6e 20 4c 6f 67 34 6a 73  ) {return Log4js
1690: 2e 4c 65 76 65 6c 2e 44 45 42 55 47 3b 7d 0d 0a  .Level.DEBUG;}..
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 73              if(s
16b0: 20 3d 3d 20 22 49 4e 46 4f 22 29 20 7b 72 65 74   == "INFO") {ret
16c0: 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  urn Log4js.Level
16d0: 2e 49 4e 46 4f 3b 7d 0d 0a 20 20 20 20 20 20 20  .INFO;}..       
16e0: 20 20 20 20 20 69 66 28 73 20 3d 3d 20 22 57 41       if(s == "WA
16f0: 52 4e 22 29 20 7b 72 65 74 75 72 6e 20 4c 6f 67  RN") {return Log
1700: 34 6a 73 2e 4c 65 76 65 6c 2e 57 41 52 4e 3b 7d  4js.Level.WARN;}
1710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1720: 28 73 20 3d 3d 20 22 45 52 52 4f 52 22 29 20 7b  (s == "ERROR") {
1730: 72 65 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65  return Log4js.Le
1740: 76 65 6c 2e 45 52 52 4f 52 3b 7d 0d 0a 20 20 20  vel.ERROR;}..   
1750: 20 20 20 20 20 20 20 20 20 69 66 28 73 20 3d 3d           if(s ==
1760: 20 22 46 41 54 41 4c 22 29 20 7b 72 65 74 75 72   "FATAL") {retur
1770: 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 46  n Log4js.Level.F
1780: 41 54 41 4c 3b 7d 0d 0a 20 20 20 20 20 20 20 20  ATAL;}..        
1790: 20 20 20 20 69 66 28 73 20 3d 3d 20 22 4f 46 46      if(s == "OFF
17a0: 22 29 20 7b 72 65 74 75 72 6e 20 4c 6f 67 34 6a  ") {return Log4j
17b0: 73 2e 4c 65 76 65 6c 2e 4f 46 46 3b 7d 0d 0a 20  s.Level.OFF;}.. 
17c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 28 73 20             if(s 
17d0: 3d 3d 20 22 54 52 41 43 45 22 29 20 7b 72 65 74  == "TRACE") {ret
17e0: 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  urn Log4js.Level
17f0: 2e 54 52 41 43 45 3b 7d 0d 0a 20 20 20 20 20 20  .TRACE;}..      
1800: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66        return def
1810: 61 75 6c 74 4c 65 76 65 6c 3b 0d 0a 20 20 20 20  aultLevel;..    
1820: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 28 74 79      } else if(ty
1830: 70 65 6f 66 20 73 41 72 67 20 3d 3d 20 22 6e 75  peof sArg == "nu
1840: 6d 62 65 72 22 29 20 7b 0d 0a 20 20 20 20 20 20  mber") {..      
1850: 20 20 20 20 20 20 73 77 69 74 63 68 28 73 41 72        switch(sAr
1860: 67 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  g) {..          
1870: 20 20 20 20 20 20 63 61 73 65 20 41 4c 4c 5f 49        case ALL_I
1880: 4e 54 3a 20 72 65 74 75 72 6e 20 4c 6f 67 34 6a  NT: return Log4j
1890: 73 2e 4c 65 76 65 6c 2e 41 4c 4c 3b 0d 0a 20 20  s.Level.ALL;..  
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
18b0: 73 65 20 44 45 42 55 47 5f 49 4e 54 3a 20 72 65  se DEBUG_INT: re
18c0: 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65  turn Log4js.Leve
18d0: 6c 2e 44 45 42 55 47 3b 0d 0a 20 20 20 20 20 20  l.DEBUG;..      
18e0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 49            case I
18f0: 4e 46 4f 5f 49 4e 54 3a 20 72 65 74 75 72 6e 20  NFO_INT: return 
1900: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 49 4e 46  Log4js.Level.INF
1910: 4f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  O;..            
1920: 20 20 20 20 63 61 73 65 20 57 41 52 4e 5f 49 4e      case WARN_IN
1930: 54 3a 20 72 65 74 75 72 6e 20 4c 6f 67 34 6a 73  T: return Log4js
1940: 2e 4c 65 76 65 6c 2e 57 41 52 4e 3b 0d 0a 20 20  .Level.WARN;..  
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1960: 73 65 20 45 52 52 4f 52 5f 49 4e 54 3a 20 72 65  se ERROR_INT: re
1970: 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65  turn Log4js.Leve
1980: 6c 2e 45 52 52 4f 52 3b 0d 0a 20 20 20 20 20 20  l.ERROR;..      
1990: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 46            case F
19a0: 41 54 41 4c 5f 49 4e 54 3a 20 72 65 74 75 72 6e  ATAL_INT: return
19b0: 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 46 41   Log4js.Level.FA
19c0: 54 41 4c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  TAL;..          
19d0: 20 20 20 20 20 20 63 61 73 65 20 4f 46 46 5f 49        case OFF_I
19e0: 4e 54 3a 20 72 65 74 75 72 6e 20 4c 6f 67 34 6a  NT: return Log4j
19f0: 73 2e 4c 65 76 65 6c 2e 4f 46 46 3b 0d 0a 20 20  s.Level.OFF;..  
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1a10: 73 65 20 54 52 41 43 45 5f 49 4e 54 3a 20 72 65  se TRACE_INT: re
1a20: 74 75 72 6e 20 4c 6f 67 34 6a 73 2e 4c 65 76 65  turn Log4js.Leve
1a30: 6c 2e 54 52 41 43 45 3b 0d 0a 20 20 20 20 20 20  l.TRACE;..      
1a40: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c            defaul
1a50: 74 3a 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c  t: return defaul
1a60: 74 4c 65 76 65 6c 3b 0d 0a 20 20 20 20 20 20 20  tLevel;..       
1a70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1a80: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
1a90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66        return def
1aa0: 61 75 6c 74 4c 65 76 65 6c 3b 09 0d 0a 20 20 20  aultLevel;...   
1ab0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 09 0d       }..    },..
1ac0: 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a  .    /** ..    *
1ad0: 20 40 72 65 74 75 72 6e 20 20 63 6f 6e 76 65 72   @return  conver
1ae0: 74 65 64 20 4c 65 76 65 6c 20 74 6f 20 53 74 72  ted Level to Str
1af0: 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74 79 70 65  ing..    * @type
1b00: 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 09   String..    */.
1b10: 09 0d 0a 20 20 20 20 74 6f 53 74 72 69 6e 67 3a  ...    toString:
1b20: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
1b30: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68         return th
1b40: 69 73 2e 6c 65 76 65 6c 53 74 72 3b 09 0d 0a 20  is.levelStr;... 
1b50: 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d     },..    /** .
1b60: 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 69  .    * @return i
1b70: 6e 74 65 72 6e 61 6c 20 4e 75 6d 62 65 72 20 76  nternal Number v
1b80: 61 6c 75 65 20 6f 66 20 4c 65 76 65 6c 0d 0a 20  alue of Level.. 
1b90: 20 20 20 2a 20 40 74 79 70 65 20 4e 75 6d 62 65     * @type Numbe
1ba0: 72 0d 0a 20 20 20 20 2a 2f 09 09 09 0d 0a 20 20  r..    */.....  
1bb0: 20 20 76 61 6c 75 65 4f 66 3a 20 66 75 6e 63 74    valueOf: funct
1bc0: 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ion() {..       
1bd0: 20 72 65 74 75 72 6e 20 74 68 69 73 2e 6c 65 76   return this.lev
1be0: 65 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a  el;..    }..};..
1bf0: 0d 0a 2f 2f 20 53 74 61 74 69 63 20 76 61 72 69  ..// Static vari
1c00: 61 62 6c 65 73 0d 0a 2f 2a 2a 20 0d 0a 2a 20 40  ables../** ..* @
1c10: 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f 67  private..*/..Log
1c20: 34 6a 73 2e 4c 65 76 65 6c 2e 4f 46 46 5f 49 4e  4js.Level.OFF_IN
1c30: 54 20 3d 20 4e 75 6d 62 65 72 2e 4d 41 58 5f 56  T = Number.MAX_V
1c40: 41 4c 55 45 3b 0d 0a 2f 2a 2a 20 0d 0a 2a 20 40  ALUE;../** ..* @
1c50: 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f 67  private..*/..Log
1c60: 34 6a 73 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 5f  4js.Level.FATAL_
1c70: 49 4e 54 20 3d 20 35 30 30 30 30 3b 0d 0a 2f 2a  INT = 50000;../*
1c80: 2a 20 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a  * ..* @private..
1c90: 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  */..Log4js.Level
1ca0: 2e 45 52 52 4f 52 5f 49 4e 54 20 3d 20 34 30 30  .ERROR_INT = 400
1cb0: 30 30 3b 0d 0a 2f 2a 2a 20 0d 0a 2a 20 40 70 72  00;../** ..* @pr
1cc0: 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a  ivate..*/..Log4j
1cd0: 73 2e 4c 65 76 65 6c 2e 57 41 52 4e 5f 49 4e 54  s.Level.WARN_INT
1ce0: 20 3d 20 33 30 30 30 30 3b 0d 0a 2f 2a 2a 20 0d   = 30000;../** .
1cf0: 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d  .* @private..*/.
1d00: 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 49 4e  .Log4js.Level.IN
1d10: 46 4f 5f 49 4e 54 20 3d 20 32 30 30 30 30 3b 0d  FO_INT = 20000;.
1d20: 0a 2f 2a 2a 20 0d 0a 2a 20 40 70 72 69 76 61 74  ./** ..* @privat
1d30: 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c 65  e..*/..Log4js.Le
1d40: 76 65 6c 2e 44 45 42 55 47 5f 49 4e 54 20 3d 20  vel.DEBUG_INT = 
1d50: 31 30 30 30 30 3b 0d 0a 2f 2a 2a 20 0d 0a 2a 20  10000;../** ..* 
1d60: 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f  @private..*/..Lo
1d70: 67 34 6a 73 2e 4c 65 76 65 6c 2e 54 52 41 43 45  g4js.Level.TRACE
1d80: 5f 49 4e 54 20 3d 20 35 30 30 30 3b 0d 0a 2f 2a  _INT = 5000;../*
1d90: 2a 20 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a  * ..* @private..
1da0: 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  */..Log4js.Level
1db0: 2e 41 4c 4c 5f 49 4e 54 20 3d 20 4e 75 6d 62 65  .ALL_INT = Numbe
1dc0: 72 2e 4d 49 4e 5f 56 41 4c 55 45 3b 0d 0a 0d 0a  r.MIN_VALUE;....
1dd0: 2f 2a 2a 20 0d 0a 2a 20 4c 6f 67 67 69 6e 67 20  /** ..* Logging 
1de0: 4c 65 76 65 6c 20 4f 46 46 20 2d 20 61 6c 6c 20  Level OFF - all 
1df0: 64 69 73 61 62 6c 65 64 0d 0a 2a 20 40 74 79 70  disabled..* @typ
1e00: 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d 0a  e Log4js.Level..
1e10: 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a 4c  * @static..*/..L
1e20: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 4f 46 46 20  og4js.Level.OFF 
1e30: 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c 65 76  = new Log4js.Lev
1e40: 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  el(Log4js.Level.
1e50: 4f 46 46 5f 49 4e 54 2c 20 22 4f 46 46 22 29 3b  OFF_INT, "OFF");
1e60: 0d 0a 2f 2a 2a 20 0d 0a 2a 20 4c 6f 67 67 69 6e  ../** ..* Loggin
1e70: 67 20 4c 65 76 65 6c 20 46 61 74 61 6c 0d 0a 2a  g Level Fatal..*
1e80: 20 40 74 79 70 65 20 4c 6f 67 34 6a 73 2e 4c 65   @type Log4js.Le
1e90: 76 65 6c 0d 0a 2a 20 40 73 74 61 74 69 63 0d 0a  vel..* @static..
1ea0: 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  */..Log4js.Level
1eb0: 2e 46 41 54 41 4c 20 3d 20 6e 65 77 20 4c 6f 67  .FATAL = new Log
1ec0: 34 6a 73 2e 4c 65 76 65 6c 28 4c 6f 67 34 6a 73  4js.Level(Log4js
1ed0: 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 5f 49 4e 54  .Level.FATAL_INT
1ee0: 2c 20 22 46 41 54 41 4c 22 29 3b 0d 0a 2f 2a 2a  , "FATAL");../**
1ef0: 20 0d 0a 2a 20 4c 6f 67 67 69 6e 67 20 4c 65 76   ..* Logging Lev
1f00: 65 6c 20 45 72 72 6f 72 0d 0a 2a 20 40 74 79 70  el Error..* @typ
1f10: 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d 0a  e Log4js.Level..
1f20: 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a 4c  * @static..*/..L
1f30: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 45 52 52 4f  og4js.Level.ERRO
1f40: 52 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c  R = new Log4js.L
1f50: 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65  evel(Log4js.Leve
1f60: 6c 2e 45 52 52 4f 52 5f 49 4e 54 2c 20 22 45 52  l.ERROR_INT, "ER
1f70: 52 4f 52 22 29 3b 20 0d 0a 2f 2a 2a 20 0d 0a 2a  ROR"); ../** ..*
1f80: 20 4c 6f 67 67 69 6e 67 20 4c 65 76 65 6c 20 57   Logging Level W
1f90: 61 72 6e 0d 0a 2a 20 40 74 79 70 65 20 4c 6f 67  arn..* @type Log
1fa0: 34 6a 73 2e 4c 65 76 65 6c 0d 0a 2a 20 40 73 74  4js.Level..* @st
1fb0: 61 74 69 63 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73  atic..*/..Log4js
1fc0: 2e 4c 65 76 65 6c 2e 57 41 52 4e 20 3d 20 6e 65  .Level.WARN = ne
1fd0: 77 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 28 4c  w Log4js.Level(L
1fe0: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 57 41 52 4e  og4js.Level.WARN
1ff0: 5f 49 4e 54 2c 20 22 57 41 52 4e 22 29 3b 20 0d  _INT, "WARN"); .
2000: 0a 2f 2a 2a 20 0d 0a 2a 20 4c 6f 67 67 69 6e 67  ./** ..* Logging
2010: 20 4c 65 76 65 6c 20 49 6e 66 6f 0d 0a 2a 20 40   Level Info..* @
2020: 74 79 70 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65  type Log4js.Leve
2030: 6c 0d 0a 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f  l..* @static..*/
2040: 0d 0a 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 49  ..Log4js.Level.I
2050: 4e 46 4f 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73  NFO = new Log4js
2060: 2e 4c 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65  .Level(Log4js.Le
2070: 76 65 6c 2e 49 4e 46 4f 5f 49 4e 54 2c 20 22 49  vel.INFO_INT, "I
2080: 4e 46 4f 22 29 3b 20 20 20 20 20 0d 0a 2f 2a 2a  NFO");     ../**
2090: 20 0d 0a 2a 20 4c 6f 67 67 69 6e 67 20 4c 65 76   ..* Logging Lev
20a0: 65 6c 20 44 65 62 75 67 0d 0a 2a 20 40 74 79 70  el Debug..* @typ
20b0: 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d 0a  e Log4js.Level..
20c0: 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a 4c  * @static..*/..L
20d0: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 44 45 42 55  og4js.Level.DEBU
20e0: 47 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c  G = new Log4js.L
20f0: 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65  evel(Log4js.Leve
2100: 6c 2e 44 45 42 55 47 5f 49 4e 54 2c 20 22 44 45  l.DEBUG_INT, "DE
2110: 42 55 47 22 29 3b 20 20 0d 0a 2f 2a 2a 20 0d 0a  BUG");  ../** ..
2120: 2a 20 4c 6f 67 67 69 6e 67 20 4c 65 76 65 6c 20  * Logging Level 
2130: 54 72 61 63 65 0d 0a 2a 20 40 74 79 70 65 20 4c  Trace..* @type L
2140: 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d 0a 2a 20 40  og4js.Level..* @
2150: 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a 4c 6f 67 34  static..*/..Log4
2160: 6a 73 2e 4c 65 76 65 6c 2e 54 52 41 43 45 20 3d  js.Level.TRACE =
2170: 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c 65 76 65   new Log4js.Leve
2180: 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 54  l(Log4js.Level.T
2190: 52 41 43 45 5f 49 4e 54 2c 20 22 54 52 41 43 45  RACE_INT, "TRACE
21a0: 22 29 3b 20 20 0d 0a 2f 2a 2a 20 0d 0a 2a 20 4c  ");  ../** ..* L
21b0: 6f 67 67 69 6e 67 20 4c 65 76 65 6c 20 41 6c 6c  ogging Level All
21c0: 20 2d 20 41 6c 6c 20 74 72 61 63 65 73 20 61 72   - All traces ar
21d0: 65 20 65 6e 61 62 6c 65 64 0d 0a 2a 20 40 74 79  e enabled..* @ty
21e0: 70 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 0d  pe Log4js.Level.
21f0: 0a 2a 20 40 73 74 61 74 69 63 0d 0a 2a 2f 0d 0a  .* @static..*/..
2200: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 41 4c 4c  Log4js.Level.ALL
2210: 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c 65   = new Log4js.Le
2220: 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  vel(Log4js.Level
2230: 2e 41 4c 4c 5f 49 4e 54 2c 20 22 41 4c 4c 22 29  .ALL_INT, "ALL")
2240: 3b 20 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 4c 6f 67  ; ..../**..* Log
2250: 34 6a 73 20 43 75 73 74 6f 6d 45 76 65 6e 74 0d  4js CustomEvent.
2260: 0a 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d  .* @constructor.
2270: 0a 2a 20 40 61 75 74 68 6f 72 20 43 6f 72 65 79  .* @author Corey
2280: 20 4a 6f 68 6e 73 6f 6e 20 2d 20 6f 72 69 67 69   Johnson - origi
2290: 6e 61 6c 20 63 6f 64 65 20 69 6e 20 4c 75 6d 62  nal code in Lumb
22a0: 65 72 6a 61 63 6b 20 28 68 74 74 70 3a 2f 2f 67  erjack (http://g
22b0: 6c 65 65 70 67 6c 6f 70 2e 63 6f 6d 2f 6a 61 76  leepglop.com/jav
22c0: 61 73 63 72 69 70 74 73 2f 6c 6f 67 67 65 72 2f  ascripts/logger/
22d0: 29 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53 65 74  )..* @author Set
22e0: 68 20 43 68 69 73 61 6d 6f 72 65 20 2d 20 61 64  h Chisamore - ad
22f0: 61 70 74 65 64 20 66 6f 72 20 4c 6f 67 34 6a 73  apted for Log4js
2300: 0d 0a 2a 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f  ..* @private..*/
2310: 0d 0a 4c 6f 67 34 6a 73 2e 43 75 73 74 6f 6d 45  ..Log4js.CustomE
2320: 76 65 6e 74 20 3d 20 66 75 6e 63 74 69 6f 6e 28  vent = function(
2330: 29 20 7b 0d 0a 20 20 20 20 74 68 69 73 2e 6c 69  ) {..    this.li
2340: 73 74 65 6e 65 72 73 20 3d 20 5b 5d 3b 0d 0a 7d  steners = [];..}
2350: 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 43 75 73 74  ;....Log4js.Cust
2360: 6f 6d 45 76 65 6e 74 2e 70 72 6f 74 6f 74 79 70  omEvent.prototyp
2370: 65 20 3d 20 7b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a  e = {....    /**
2380: 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d  ..    * @param m
2390: 65 74 68 6f 64 20 6d 65 74 68 6f 64 20 74 6f 20  ethod method to 
23a0: 62 65 20 61 64 64 65 64 0d 0a 20 20 20 20 2a 2f  be added..    */
23b0: 20 0d 0a 20 20 20 20 61 64 64 4c 69 73 74 65 6e   ..    addListen
23c0: 65 72 20 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 65  er : function(me
23d0: 74 68 6f 64 29 20 7b 0d 0a 20 20 20 20 20 20 20  thod) {..       
23e0: 20 74 68 69 73 2e 6c 69 73 74 65 6e 65 72 73 2e   this.listeners.
23f0: 70 75 73 68 28 6d 65 74 68 6f 64 29 3b 0d 0a 20  push(method);.. 
2400: 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f 2a 2a     },....    /**
2410: 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d  ..    * @param m
2420: 65 74 68 6f 64 20 6d 65 74 68 6f 64 20 74 6f 20  ethod method to 
2430: 62 65 20 72 65 6d 6f 76 65 64 0d 0a 20 20 20 20  be removed..    
2440: 2a 2f 20 0d 0a 20 20 20 20 72 65 6d 6f 76 65 4c  */ ..    removeL
2450: 69 73 74 65 6e 65 72 20 3a 20 66 75 6e 63 74 69  istener : functi
2460: 6f 6e 28 6d 65 74 68 6f 64 29 20 7b 0d 0a 20 20  on(method) {..  
2470: 20 20 20 20 20 20 76 61 72 20 66 6f 75 6e 64 49        var foundI
2480: 6e 64 65 78 65 73 20 3d 20 74 68 69 73 2e 66 69  ndexes = this.fi
2490: 6e 64 4c 69 73 74 65 6e 65 72 49 6e 64 65 78 65  ndListenerIndexe
24a0: 73 28 6d 65 74 68 6f 64 29 3b 0d 0a 0d 0a 20 20  s(method);....  
24b0: 20 20 20 20 20 20 66 6f 72 28 76 61 72 20 69 20        for(var i 
24c0: 3d 20 30 3b 20 69 20 3c 20 66 6f 75 6e 64 49 6e  = 0; i < foundIn
24d0: 64 65 78 65 73 2e 6c 65 6e 67 74 68 3b 20 69 2b  dexes.length; i+
24e0: 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  +) {..          
24f0: 20 20 74 68 69 73 2e 6c 69 73 74 65 6e 65 72 73    this.listeners
2500: 2e 73 70 6c 69 63 65 28 66 6f 75 6e 64 49 6e 64  .splice(foundInd
2510: 65 78 65 73 5b 69 5d 2c 20 31 29 3b 0d 0a 20 20  exes[i], 1);..  
2520: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d        }..    },.
2530: 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20  ...    /**..    
2540: 2a 20 40 70 61 72 61 6d 20 68 61 6e 64 6c 65 72  * @param handler
2550: 0d 0a 20 20 20 20 2a 2f 20 0d 0a 20 20 20 20 64  ..    */ ..    d
2560: 69 73 70 61 74 63 68 20 3a 20 66 75 6e 63 74 69  ispatch : functi
2570: 6f 6e 28 68 61 6e 64 6c 65 72 29 20 7b 0d 0a 20  on(handler) {.. 
2580: 20 20 20 20 20 20 20 66 6f 72 28 76 61 72 20 69         for(var i
2590: 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e 6c   = 0; i < this.l
25a0: 69 73 74 65 6e 65 72 73 2e 6c 65 6e 67 74 68 3b  isteners.length;
25b0: 20 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20   i++) {..       
25c0: 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20 20       try {..    
25d0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
25e0: 2e 6c 69 73 74 65 6e 65 72 73 5b 69 5d 28 68 61  .listeners[i](ha
25f0: 6e 64 6c 65 72 29 3b 0d 0a 20 20 20 20 20 20 20  ndler);..       
2600: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2610: 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0d      catch (e) {.
2620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2630: 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 77 61   log4jsLogger.wa
2640: 72 6e 28 22 43 6f 75 6c 64 20 6e 6f 74 20 72 75  rn("Could not ru
2650: 6e 20 74 68 65 20 6c 69 73 74 65 6e 65 72 20 22  n the listener "
2660: 20 2b 20 74 68 69 73 2e 6c 69 73 74 65 6e 65 72   + this.listener
2670: 73 5b 69 5d 20 2b 20 22 2e 20 5c 6e 22 20 2b 20  s[i] + ". \n" + 
2680: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2690: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
26a0: 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f 2a 2a     },....    /**
26b0: 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65  ..    * @private
26c0: 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d  ..    * @param m
26d0: 65 74 68 6f 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ethod..    */.. 
26e0: 20 20 20 66 69 6e 64 4c 69 73 74 65 6e 65 72 49     findListenerI
26f0: 6e 64 65 78 65 73 20 3a 20 66 75 6e 63 74 69 6f  ndexes : functio
2700: 6e 28 6d 65 74 68 6f 64 29 20 7b 0d 0a 20 20 20  n(method) {..   
2710: 20 20 20 20 20 76 61 72 20 69 6e 64 65 78 65 73       var indexes
2720: 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20   = [];..        
2730: 66 6f 72 28 76 61 72 20 69 20 3d 20 30 3b 20 69  for(var i = 0; i
2740: 20 3c 20 74 68 69 73 2e 6c 69 73 74 65 6e 65 72   < this.listener
2750: 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b  s.length; i++) {
2760: 09 09 09 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
2770: 20 69 66 20 28 74 68 69 73 2e 6c 69 73 74 65 6e   if (this.listen
2780: 65 72 73 5b 69 5d 20 3d 3d 20 6d 65 74 68 6f 64  ers[i] == method
2790: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
27a0: 20 20 20 20 20 69 6e 64 65 78 65 73 2e 70 75 73       indexes.pus
27b0: 68 28 69 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  h(i);..         
27c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
27d0: 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
27e0: 6e 20 69 6e 64 65 78 65 73 3b 0d 0a 20 20 20 20  n indexes;..    
27f0: 7d 0d 0a 7d 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20  }..};..../**..* 
2800: 4d 6f 64 65 6c 73 20 61 20 6c 6f 67 67 69 6e 67  Models a logging
2810: 20 65 76 65 6e 74 2e 0d 0a 2a 20 40 63 6f 6e 73   event...* @cons
2820: 74 72 75 63 74 6f 72 0d 0a 2a 20 40 70 61 72 61  tructor..* @para
2830: 6d 20 7b 53 74 72 69 6e 67 7d 20 63 61 74 65 67  m {String} categ
2840: 6f 72 79 4e 61 6d 65 20 6e 61 6d 65 20 6f 66 20  oryName name of 
2850: 63 61 74 65 67 6f 72 79 0d 0a 2a 20 40 70 61 72  category..* @par
2860: 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  am {Log4js.Level
2870: 7d 20 6c 65 76 65 6c 20 6c 65 76 65 6c 20 6f 66  } level level of
2880: 20 6d 65 73 73 61 67 65 0d 0a 2a 20 40 70 61 72   message..* @par
2890: 61 6d 20 7b 53 74 72 69 6e 67 7d 20 6d 65 73 73  am {String} mess
28a0: 61 67 65 20 6d 65 73 73 61 67 65 20 74 6f 20 6c  age message to l
28b0: 6f 67 0d 0a 2a 20 40 70 61 72 61 6d 20 7b 4c 6f  og..* @param {Lo
28c0: 67 34 6a 73 2e 4c 6f 67 67 65 72 7d 20 6c 6f 67  g4js.Logger} log
28d0: 67 65 72 20 74 68 65 20 61 73 73 6f 63 69 61 74  ger the associat
28e0: 65 64 20 6c 6f 67 67 65 72 0d 0a 2a 20 40 61 75  ed logger..* @au
28f0: 74 68 6f 72 20 53 65 74 68 20 43 68 69 73 61 6d  thor Seth Chisam
2900: 6f 72 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e  ore..*/..Log4js.
2910: 4c 6f 67 67 69 6e 67 45 76 65 6e 74 20 3d 20 66  LoggingEvent = f
2920: 75 6e 63 74 69 6f 6e 28 63 61 74 65 67 6f 72 79  unction(category
2930: 4e 61 6d 65 2c 20 6c 65 76 65 6c 2c 20 6d 65 73  Name, level, mes
2940: 73 61 67 65 2c 20 65 78 63 65 70 74 69 6f 6e 2c  sage, exception,
2950: 20 6c 6f 67 67 65 72 29 20 7b 0d 0a 20 20 20 20   logger) {..    
2960: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 74 68 65 20 74  /**..    * the t
2970: 69 6d 65 73 74 61 6d 70 20 6f 66 20 74 68 65 20  imestamp of the 
2980: 4c 6f 67 67 69 6e 67 20 45 76 65 6e 74 0d 0a 20  Logging Event.. 
2990: 20 20 20 2a 20 40 74 79 70 65 20 44 61 74 65 0d     * @type Date.
29a0: 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d  .    * @private.
29b0: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68 69  .    */..    thi
29c0: 73 2e 73 74 61 72 74 54 69 6d 65 20 3d 20 6e 65  s.startTime = ne
29d0: 77 20 44 61 74 65 28 29 3b 0d 0a 20 20 20 20 2f  w Date();..    /
29e0: 2a 2a 0d 0a 20 20 20 20 2a 20 63 61 74 65 67 6f  **..    * catego
29f0: 72 79 20 6f 66 20 65 76 65 6e 74 0d 0a 20 20 20  ry of event..   
2a00: 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e 67 0d   * @type String.
2a10: 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d  .    * @private.
2a20: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68 69  .    */..    thi
2a30: 73 2e 63 61 74 65 67 6f 72 79 4e 61 6d 65 20 3d  s.categoryName =
2a40: 20 63 61 74 65 67 6f 72 79 4e 61 6d 65 3b 0d 0a   categoryName;..
2a50: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 74      /**..    * t
2a60: 68 65 20 6c 6f 67 67 69 6e 67 20 6d 65 73 73 61  he logging messa
2a70: 67 65 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  ge..    * @type 
2a80: 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 70  String..    * @p
2a90: 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a  rivate..    */..
2aa0: 20 20 20 20 74 68 69 73 2e 6d 65 73 73 61 67 65      this.message
2ab0: 20 3d 20 6d 65 73 73 61 67 65 3b 0d 0a 20 20 20   = message;..   
2ac0: 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 74 68 65 20   /**..    * the 
2ad0: 6c 6f 67 67 69 6e 67 20 65 78 63 65 70 74 69 6f  logging exceptio
2ae0: 6e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 45  n..    * @type E
2af0: 78 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20 2a 20  xception..    * 
2b00: 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f  @private..    */
2b10: 0d 0a 20 20 20 20 74 68 69 73 2e 65 78 63 65 70  ..    this.excep
2b20: 74 69 6f 6e 20 3d 20 65 78 63 65 70 74 69 6f 6e  tion = exception
2b30: 3b 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20  ;..    /**..    
2b40: 2a 20 6c 65 76 65 6c 20 6f 66 20 6c 6f 67 0d 0a  * level of log..
2b50: 20 20 20 20 2a 20 40 74 79 70 65 20 4c 6f 67 34      * @type Log4
2b60: 6a 73 2e 4c 65 76 65 6c 0d 0a 20 20 20 20 2a 20  js.Level..    * 
2b70: 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f  @private..    */
2b80: 0d 0a 20 20 20 20 74 68 69 73 2e 6c 65 76 65 6c  ..    this.level
2b90: 20 3d 20 6c 65 76 65 6c 3b 0d 0a 20 20 20 20 2f   = level;..    /
2ba0: 2a 2a 0d 0a 20 20 20 20 2a 20 72 65 66 65 72 65  **..    * refere
2bb0: 6e 63 65 20 74 6f 20 6c 6f 67 67 65 72 0d 0a 20  nce to logger.. 
2bc0: 20 20 20 2a 20 40 74 79 70 65 20 4c 6f 67 34 6a     * @type Log4j
2bd0: 73 2e 4c 6f 67 67 65 72 0d 0a 20 20 20 20 2a 20  s.Logger..    * 
2be0: 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f  @private..    */
2bf0: 0d 0a 20 20 20 20 74 68 69 73 2e 6c 6f 67 67 65  ..    this.logge
2c00: 72 20 3d 20 6c 6f 67 67 65 72 3b 0d 0a 7d 3b 0d  r = logger;..};.
2c10: 0a 0d 0a 4c 6f 67 34 6a 73 2e 4c 6f 67 67 69 6e  ...Log4js.Loggin
2c20: 67 45 76 65 6e 74 2e 70 72 6f 74 6f 74 79 70 65  gEvent.prototype
2c30: 20 3d 20 7b 09 0d 0a 20 20 20 20 2f 2a 2a 0d 0a   = {...    /**..
2c40: 20 20 20 20 2a 20 67 65 74 20 74 68 65 20 74 69      * get the ti
2c50: 6d 65 73 74 61 6d 70 20 66 6f 72 6d 61 74 74 65  mestamp formatte
2c60: 64 20 61 73 20 53 74 72 69 6e 67 2e 0d 0a 20 20  d as String...  
2c70: 20 20 2a 20 40 72 65 74 75 72 6e 20 7b 53 74 72    * @return {Str
2c80: 69 6e 67 7d 20 66 6f 72 6d 61 74 74 65 64 20 74  ing} formatted t
2c90: 69 6d 65 73 74 61 6d 70 0d 0a 20 20 20 20 2a 20  imestamp..    * 
2ca0: 40 73 65 65 20 4c 6f 67 34 6a 73 23 73 65 74 44  @see Log4js#setD
2cb0: 61 74 65 46 6f 72 6d 61 74 28 29 0d 0a 20 20 20  ateFormat()..   
2cc0: 20 2a 2f 0d 0a 20 20 20 20 67 65 74 46 6f 72 6d   */..    getForm
2cd0: 61 74 74 65 64 54 69 6d 65 73 74 61 6d 70 3a 20  attedTimestamp: 
2ce0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
2cf0: 20 20 20 20 20 20 69 66 28 74 68 69 73 2e 6c 6f        if(this.lo
2d00: 67 67 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20  gger) {..       
2d10: 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73       return this
2d20: 2e 6c 6f 67 67 65 72 2e 67 65 74 46 6f 72 6d 61  .logger.getForma
2d30: 74 74 65 64 54 69 6d 65 73 74 61 6d 70 28 74 68  ttedTimestamp(th
2d40: 69 73 2e 73 74 61 72 74 54 69 6d 65 29 3b 0d 0a  is.startTime);..
2d50: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
2d60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2d70: 74 75 72 6e 20 74 68 69 73 2e 73 74 61 72 74 54  turn this.startT
2d80: 69 6d 65 2e 74 6f 47 4d 54 53 74 72 69 6e 67 28  ime.toGMTString(
2d90: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
2da0: 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 2f 2a 2a 0d     }..};..../**.
2db0: 0a 2a 20 4c 6f 67 67 65 72 20 74 6f 20 6c 6f 67  .* Logger to log
2dc0: 20 6d 65 73 73 61 67 65 73 20 74 6f 20 74 68 65   messages to the
2dd0: 20 64 65 66 69 6e 65 64 20 61 70 70 65 6e 64 65   defined appende
2de0: 72 2e 3c 2f 70 3e 0d 0a 2a 20 44 65 66 61 75 6c  r.</p>..* Defaul
2df0: 74 20 61 70 70 65 6e 64 65 72 20 69 73 20 41 70  t appender is Ap
2e00: 70 65 6e 64 65 72 2c 20 77 68 69 63 68 20 69 73  pender, which is
2e10: 20 69 67 6e 6f 72 69 6e 67 20 61 6c 6c 20 6d 65   ignoring all me
2e20: 73 73 61 67 65 73 2e 20 50 6c 65 61 73 65 0d 0a  ssages. Please..
2e30: 2a 20 75 73 65 20 73 65 74 41 70 70 65 6e 64 65  * use setAppende
2e40: 72 28 29 20 74 6f 20 73 65 74 20 61 20 73 70 65  r() to set a spe
2e50: 63 69 66 69 63 20 61 70 70 65 6e 64 65 72 20 28  cific appender (
2e60: 65 2e 67 2e 20 57 69 6e 64 6f 77 41 70 70 65 6e  e.g. WindowAppen
2e70: 64 65 72 29 2e 0d 0a 2a 20 75 73 65 20 7b 40 73  der)...* use {@s
2e80: 65 65 20 4c 6f 67 34 6a 73 23 67 65 74 4c 6f 67  ee Log4js#getLog
2e90: 67 65 72 28 53 74 72 69 6e 67 29 7d 20 74 6f 20  ger(String)} to 
2ea0: 67 65 74 20 61 6e 20 69 6e 73 74 61 6e 63 65 2e  get an instance.
2eb0: 0d 0a 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f 72  ..* @constructor
2ec0: 0d 0a 2a 20 40 70 61 72 61 6d 20 6e 61 6d 65 20  ..* @param name 
2ed0: 6e 61 6d 65 20 6f 66 20 63 61 74 65 67 6f 72 79  name of category
2ee0: 20 74 6f 20 6c 6f 67 20 74 6f 0d 0a 2a 20 40 61   to log to..* @a
2ef0: 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20 53 74  uthor Stephan St
2f00: 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a  rittmatter..*/..
2f10: 4c 6f 67 34 6a 73 2e 4c 6f 67 67 65 72 20 3d 20  Log4js.Logger = 
2f20: 66 75 6e 63 74 69 6f 6e 28 6e 61 6d 65 29 20 7b  function(name) {
2f30: 0d 0a 20 20 20 20 74 68 69 73 2e 6c 6f 67 67 69  ..    this.loggi
2f40: 6e 67 45 76 65 6e 74 73 20 3d 20 5b 5d 3b 0d 0a  ngEvents = [];..
2f50: 20 20 20 20 74 68 69 73 2e 61 70 70 65 6e 64 65      this.appende
2f60: 72 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 2f 2a  rs = [];..    /*
2f70: 2a 20 63 61 74 65 67 6f 72 79 20 6f 66 20 6c 6f  * category of lo
2f80: 67 67 65 72 20 2a 2f 0d 0a 20 20 20 20 74 68 69  gger */..    thi
2f90: 73 2e 63 61 74 65 67 6f 72 79 20 3d 20 6e 61 6d  s.category = nam
2fa0: 65 20 7c 7c 20 22 22 3b 0d 0a 20 20 20 20 2f 2a  e || "";..    /*
2fb0: 2a 20 6c 65 76 65 6c 20 74 6f 20 62 65 20 6c 6f  * level to be lo
2fc0: 67 67 65 64 20 2a 2f 0d 0a 20 20 20 20 74 68 69  gged */..    thi
2fd0: 73 2e 6c 65 76 65 6c 20 3d 20 4c 6f 67 34 6a 73  s.level = Log4js
2fe0: 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 3b 0d 0a 20  .Level.FATAL;.. 
2ff0: 20 20 20 0d 0a 20 20 20 20 74 68 69 73 2e 64 61     ..    this.da
3000: 74 65 66 6f 72 6d 61 74 20 3d 20 4c 6f 67 34 6a  teformat = Log4j
3010: 73 2e 44 61 74 65 46 6f 72 6d 61 74 74 65 72 2e  s.DateFormatter.
3020: 44 45 46 41 55 4c 54 5f 44 41 54 45 5f 46 4f 52  DEFAULT_DATE_FOR
3030: 4d 41 54 3b 0d 0a 20 20 20 20 74 68 69 73 2e 64  MAT;..    this.d
3040: 61 74 65 66 6f 72 6d 61 74 74 65 72 20 3d 20 6e  ateformatter = n
3050: 65 77 20 4c 6f 67 34 6a 73 2e 44 61 74 65 46 6f  ew Log4js.DateFo
3060: 72 6d 61 74 74 65 72 28 29 3b 0d 0a 20 20 20 20  rmatter();..    
3070: 0d 0a 20 20 20 20 74 68 69 73 2e 6f 6e 6c 6f 67  ..    this.onlog
3080: 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 43 75   = new Log4js.Cu
3090: 73 74 6f 6d 45 76 65 6e 74 28 29 3b 0d 0a 20 20  stomEvent();..  
30a0: 20 20 74 68 69 73 2e 6f 6e 63 6c 65 61 72 20 3d    this.onclear =
30b0: 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 43 75 73 74   new Log4js.Cust
30c0: 6f 6d 45 76 65 6e 74 28 29 3b 0d 0a 20 20 20 20  omEvent();..    
30d0: 0d 0a 20 20 20 20 2f 2a 2a 20 61 70 70 65 6e 64  ..    /** append
30e0: 65 72 20 74 6f 20 77 72 69 74 65 20 69 6e 20 2a  er to write in *
30f0: 2f 0d 0a 20 20 20 20 74 68 69 73 2e 61 70 70 65  /..    this.appe
3100: 6e 64 65 72 73 2e 70 75 73 68 28 6e 65 77 20 4c  nders.push(new L
3110: 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 74  og4js.Appender(t
3120: 68 69 73 29 29 3b 0d 0a 20 20 20 20 0d 0a 20 20  his));..    ..  
3130: 20 20 2f 2f 20 69 66 20 6d 75 6c 74 69 70 6c 65    // if multiple
3140: 20 6c 6f 67 20 6f 62 6a 65 63 74 73 20 61 72 65   log objects are
3150: 20 69 6e 73 74 61 6e 74 69 61 74 65 64 20 74 68   instantiated th
3160: 69 73 20 77 69 6c 6c 20 6f 6e 6c 79 20 6c 6f 67  is will only log
3170: 20 74 6f 20 74 68 65 20 6c 6f 67 20 0d 0a 20 20   to the log ..  
3180: 20 20 2f 2f 20 6f 62 6a 65 63 74 20 74 68 61 74    // object that
3190: 20 69 73 20 64 65 63 6c 61 72 65 64 20 6c 61 73   is declared las
31a0: 74 20 63 61 6e 27 74 20 73 65 65 6d 20 74 6f 20  t can't seem to 
31b0: 67 65 74 20 74 68 65 20 61 74 74 61 63 68 45 76  get the attachEv
31c0: 65 6e 74 20 6d 65 74 68 6f 64 20 74 6f 20 0d 0a  ent method to ..
31d0: 20 20 20 20 2f 2f 20 77 6f 72 6b 20 63 6f 72 72      // work corr
31e0: 65 63 74 6c 79 0d 0a 20 20 20 20 74 72 79 20 7b  ectly..    try {
31f0: 0d 0a 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77  ..        window
3200: 2e 6f 6e 65 72 72 6f 72 20 3d 20 74 68 69 73 2e  .onerror = this.
3210: 77 69 6e 64 6f 77 45 72 72 6f 72 2e 62 69 6e 64  windowError.bind
3220: 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 20 63  (this);..    } c
3230: 61 74 63 68 20 28 65 29 20 7b 0d 0a 20 20 20 20  atch (e) {..    
3240: 20 20 20 20 2f 2f 6c 6f 67 34 6a 73 4c 6f 67 67      //log4jsLogg
3250: 65 72 2e 66 61 74 61 6c 28 65 29 3b 0d 0a 20 20  er.fatal(e);..  
3260: 20 20 7d 0d 0a 20 20 20 20 0d 0a 20 20 20 20 66    }..    ..    f
3270: 6f 72 20 28 76 61 72 20 6b 20 69 6e 20 4c 6f 67  or (var k in Log
3280: 34 6a 73 2e 4c 65 76 65 6c 29 7b 0d 0a 20 20 20  4js.Level){..   
3290: 20 20 20 20 20 76 61 72 20 6c 65 76 20 3d 20 4c       var lev = L
32a0: 6f 67 34 6a 73 2e 4c 65 76 65 6c 5b 6b 5d 3b 0d  og4js.Level[k];.
32b0: 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 79 70  .        var typ
32c0: 65 4e 61 6d 65 20 3d 20 4f 62 6a 65 63 74 2e 70  eName = Object.p
32d0: 72 6f 74 6f 74 79 70 65 2e 74 6f 53 74 72 69 6e  rototype.toStrin
32e0: 67 2e 63 61 6c 6c 28 6c 65 76 29 3b 0d 0a 20 20  g.call(lev);..  
32f0: 20 20 20 20 20 20 69 66 20 28 74 79 70 65 4e 61        if (typeNa
3300: 6d 65 20 3d 3d 20 22 5b 6f 62 6a 65 63 74 20 4f  me == "[object O
3310: 62 6a 65 63 74 5d 22 29 7b 0d 0a 20 20 20 20 20  bject]"){..     
3320: 20 20 20 20 20 20 20 76 61 72 20 6d 61 63 72 6f         var macro
3330: 73 20 3d 20 53 65 6c 66 53 63 72 69 70 74 2e 73  s = SelfScript.s
3340: 65 6c 66 5b 22 6d 61 63 72 6f 73 d0 a3 d1 81 d1  elf["macros.....
3350: 82 d0 b0 d0 bd d0 be d0 b2 d0 b8 d1 82 d1 8c 20  ............... 
3360: d0 bb d0 be d0 b3 d0 b3 20 22 2b 6e 61 6d 65 2b  ........ "+name+
3370: 22 20 d0 bd d0 b0 20 22 20 2b 20 6b 5d 3b 0d 0a  " .... " + k];..
3380: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3390: 21 6d 61 63 72 6f 73 29 7b 0d 0a 20 20 20 20 20  !macros){..     
33a0: 20 20 20 20 20 20 20 20 20 20 20 53 65 6c 66 53             SelfS
33b0: 63 72 69 70 74 2e 73 65 6c 66 5b 22 6d 61 63 72  cript.self["macr
33c0: 6f 73 d0 a3 d1 81 d1 82 d0 b0 d0 bd d0 be d0 b2  os..............
33d0: d0 b8 d1 82 d1 8c 20 d0 bb d0 be d0 b3 d0 b3 20  ...... ........ 
33e0: 22 2b 6e 61 6d 65 2b 22 20 d0 bd d0 b0 20 22 20  "+name+" .... " 
33f0: 2b 20 6b 5d 20 3d 20 6e 65 77 20 46 75 6e 63 74  + k] = new Funct
3400: 69 6f 6e 28 27 76 61 72 20 6c 6f 67 67 65 72 20  ion('var logger 
3410: 3d 20 4c 6f 67 34 6a 73 2e 67 65 74 4c 6f 67 67  = Log4js.getLogg
3420: 65 72 28 22 27 20 2b 20 6e 61 6d 65 20 2b 20 27  er("' + name + '
3430: 22 29 3b 20 6c 6f 67 67 65 72 2e 73 65 74 4c 65  "); logger.setLe
3440: 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  vel(Log4js.Level
3450: 2e 27 2b 6c 65 76 2e 74 6f 53 74 72 69 6e 67 28  .'+lev.toString(
3460: 29 2b 27 29 3b 20 6c 6f 67 67 65 72 2e 6c 6f 67  )+'); logger.log
3470: 28 22 d0 a3 d1 80 d0 be d0 b2 d0 b5 d0 bd d1 8c  ("..............
3480: 20 d0 bb d0 be d0 b3 d0 b0 20 d0 b8 d0 b7 d0 bc   ........ ......
3490: d0 b5 d0 bd d0 b5 d0 bd 20 d0 bd d0 b0 20 27 2b  ........ .... '+
34a0: 6c 65 76 2e 74 6f 53 74 72 69 6e 67 28 29 2b 27  lev.toString()+'
34b0: 20 22 29 3b 27 29 3b 0d 0a 20 20 20 20 20 20 20   ");');..       
34c0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34d0: 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a  }..    }..    ..
34e0: 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 4c 6f 67  };....Log4js.Log
34f0: 67 65 72 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20  ger.prototype = 
3500: 7b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20  {....    /**..  
3510: 20 20 2a 20 61 64 64 20 61 64 64 69 74 69 6f 6e    * add addition
3520: 61 6c 20 61 70 70 65 6e 64 65 72 2e 20 44 65 66  al appender. Def
3530: 61 75 6c 74 41 70 70 65 6e 64 65 72 20 61 6c 77  aultAppender alw
3540: 61 79 73 20 69 73 20 74 68 65 72 65 2e 0d 0a 20  ays is there... 
3550: 20 20 20 2a 20 40 70 61 72 61 6d 20 61 70 70 65     * @param appe
3560: 6e 64 65 72 20 61 64 64 69 74 69 6f 6e 61 6c 20  nder additional 
3570: 77 61 6e 74 65 64 20 61 70 70 65 6e 64 65 72 0d  wanted appender.
3580: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 61 64 64  .    */..    add
3590: 41 70 70 65 6e 64 65 72 3a 20 66 75 6e 63 74 69  Appender: functi
35a0: 6f 6e 28 61 70 70 65 6e 64 65 72 29 20 7b 0d 0a  on(appender) {..
35b0: 20 20 20 20 20 20 20 20 69 66 20 28 61 70 70 65          if (appe
35c0: 6e 64 65 72 20 69 6e 73 74 61 6e 63 65 6f 66 20  nder instanceof 
35d0: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 29  Log4js.Appender)
35e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
35f0: 61 70 70 65 6e 64 65 72 2e 73 65 74 4c 6f 67 67  appender.setLogg
3600: 65 72 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  er(this);..     
3610: 20 20 20 20 20 20 20 74 68 69 73 2e 61 70 70 65         this.appe
3620: 6e 64 65 72 73 2e 70 75 73 68 28 61 70 70 65 6e  nders.push(appen
3630: 64 65 72 29 3b 09 09 09 0d 0a 20 20 20 20 20 20  der);.....      
3640: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
3650: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 22 4e          throw "N
3660: 6f 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 61  ot instance of a
3670: 6e 20 41 70 70 65 6e 64 65 72 3a 20 22 20 2b 20  n Appender: " + 
3680: 61 70 70 65 6e 64 65 72 3b 0d 0a 20 20 20 20 20  appender;..     
3690: 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 0d 0a     }..    },....
36a0: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 73      /**..    * s
36b0: 65 74 20 41 72 72 61 79 20 6f 66 20 61 70 70 65  et Array of appe
36c0: 6e 64 65 72 73 2e 20 50 72 65 76 69 6f 75 73 20  nders. Previous 
36d0: 41 70 70 65 6e 64 65 72 73 20 61 72 65 20 63 6c  Appenders are cl
36e0: 65 61 72 65 64 20 61 6e 64 20 72 65 6d 6f 76 65  eared and remove
36f0: 64 2e 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d  d...    * @param
3700: 20 7b 41 72 72 61 79 7d 20 61 70 70 65 6e 64 65   {Array} appende
3710: 72 73 20 41 72 72 61 79 20 6f 66 20 41 70 70 65  rs Array of Appe
3720: 6e 64 65 72 73 0d 0a 20 20 20 20 2a 2f 0d 0a 20  nders..    */.. 
3730: 20 20 20 73 65 74 41 70 70 65 6e 64 65 72 73 3a     setAppenders:
3740: 20 66 75 6e 63 74 69 6f 6e 28 61 70 70 65 6e 64   function(append
3750: 65 72 73 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ers) {..        
3760: 2f 2f 63 6c 65 61 72 20 66 69 72 73 74 20 61 6c  //clear first al
3770: 6c 20 65 78 69 73 74 69 6e 67 20 61 70 70 65 6e  l existing appen
3780: 64 65 72 73 0d 0a 20 20 20 20 20 20 20 20 66 6f  ders..        fo
3790: 72 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c  r(var i = 0; i <
37a0: 20 74 68 69 73 2e 61 70 70 65 6e 64 65 72 73 2e   this.appenders.
37b0: 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a  length; i++) {..
37c0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
37d0: 2e 61 70 70 65 6e 64 65 72 73 5b 69 5d 2e 64 6f  .appenders[i].do
37e0: 43 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20  Clear();..      
37f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20    }..        .. 
3800: 20 20 20 20 20 20 20 74 68 69 73 2e 61 70 70 65         this.appe
3810: 6e 64 65 72 73 20 3d 20 61 70 70 65 6e 64 65 72  nders = appender
3820: 73 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20  s;..        ..  
3830: 20 20 20 20 20 20 66 6f 72 28 76 61 72 20 6a 20        for(var j 
3840: 3d 20 30 3b 20 6a 20 3c 20 74 68 69 73 2e 61 70  = 0; j < this.ap
3850: 70 65 6e 64 65 72 73 2e 6c 65 6e 67 74 68 3b 20  penders.length; 
3860: 6a 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  j++) {..        
3870: 20 20 20 20 74 68 69 73 2e 61 70 70 65 6e 64 65      this.appende
3880: 72 73 5b 6a 5d 2e 73 65 74 4c 6f 67 67 65 72 28  rs[j].setLogger(
3890: 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  this);..        
38a0: 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d  }..    },..    .
38b0: 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
38c0: 53 65 74 20 74 68 65 20 4c 6f 67 6c 65 76 65 6c  Set the Loglevel
38d0: 20 64 65 66 61 75 6c 74 20 69 73 20 4c 6f 67 4c   default is LogL
38e0: 45 76 65 6c 2e 54 52 41 43 45 0d 0a 20 20 20 20  Evel.TRACE..    
38f0: 2a 20 40 70 61 72 61 6d 20 6c 65 76 65 6c 20 77  * @param level w
3900: 61 6e 74 65 64 20 6c 6f 67 67 69 6e 67 20 6c 65  anted logging le
3910: 76 65 6c 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  vel..    */..   
3920: 20 73 65 74 4c 65 76 65 6c 3a 20 66 75 6e 63 74   setLevel: funct
3930: 69 6f 6e 28 6c 65 76 65 6c 29 20 7b 0d 0a 20 20  ion(level) {..  
3940: 20 20 20 20 20 20 74 68 69 73 2e 6c 65 76 65 6c        this.level
3950: 20 3d 20 6c 65 76 65 6c 3b 0d 0a 20 20 20 20 7d   = level;..    }
3960: 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a  ,..    ..    /**
3970: 20 0d 0a 20 20 20 20 2a 20 6d 61 69 6e 20 6c 6f   ..    * main lo
3980: 67 20 6d 65 74 68 6f 64 20 6c 6f 67 67 69 6e 67  g method logging
3990: 20 74 6f 20 61 6c 6c 20 61 76 61 69 6c 61 62 6c   to all availabl
39a0: 65 20 61 70 70 65 6e 64 65 72 73 20 0d 0a 20 20  e appenders ..  
39b0: 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 20    * @private..  
39c0: 20 20 2a 2f 0d 0a 20 20 20 20 6c 6f 67 3a 20 66    */..    log: f
39d0: 75 6e 63 74 69 6f 6e 28 6c 6f 67 4c 65 76 65 6c  unction(logLevel
39e0: 2c 20 6d 65 73 73 61 67 65 2c 20 65 78 63 65 70  , message, excep
39f0: 74 69 6f 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20  tion) {..       
3a00: 20 76 61 72 20 6c 6f 67 67 69 6e 67 45 76 65 6e   var loggingEven
3a10: 74 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c  t = new Log4js.L
3a20: 6f 67 67 69 6e 67 45 76 65 6e 74 28 74 68 69 73  oggingEvent(this
3a30: 2e 63 61 74 65 67 6f 72 79 2c 20 6c 6f 67 4c 65  .category, logLe
3a40: 76 65 6c 2c 20 0d 0a 20 20 20 20 20 20 20 20 20  vel, ..         
3a50: 20 20 20 6d 65 73 73 61 67 65 2c 20 65 78 63 65     message, exce
3a60: 70 74 69 6f 6e 2c 20 74 68 69 73 29 3b 0d 0a 20  ption, this);.. 
3a70: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 67         this.logg
3a80: 69 6e 67 45 76 65 6e 74 73 2e 70 75 73 68 28 6c  ingEvents.push(l
3a90: 6f 67 67 69 6e 67 45 76 65 6e 74 29 3b 0d 0a 20  oggingEvent);.. 
3aa0: 20 20 20 20 20 20 20 74 68 69 73 2e 6f 6e 6c 6f         this.onlo
3ab0: 67 2e 64 69 73 70 61 74 63 68 28 6c 6f 67 67 69  g.dispatch(loggi
3ac0: 6e 67 45 76 65 6e 74 29 3b 0d 0a 20 20 20 20 7d  ngEvent);..    }
3ad0: 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a  ,..    ..    /**
3ae0: 20 63 6c 65 61 72 20 6c 6f 67 67 69 6e 67 20 2a   clear logging *
3af0: 2f 0d 0a 20 20 20 20 63 6c 65 61 72 20 3a 20 66  /..    clear : f
3b00: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20  unction () {..  
3b10: 20 20 20 20 20 20 74 72 79 7b 0d 0a 20 20 20 20        try{..    
3b20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67          this.log
3b30: 67 69 6e 67 45 76 65 6e 74 73 20 3d 20 5b 5d 3b  gingEvents = [];
3b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
3b50: 69 73 2e 6f 6e 63 6c 65 61 72 2e 64 69 73 70 61  is.onclear.dispa
3b60: 74 63 68 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  tch();..        
3b70: 7d 20 63 61 74 63 68 28 65 29 7b 7d 0d 0a 20 20  } catch(e){}..  
3b80: 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 63 68    },..    /** ch
3b90: 65 63 6b 73 20 69 66 20 4c 65 76 65 6c 20 54 72  ecks if Level Tr
3ba0: 61 63 65 20 69 73 20 65 6e 61 62 6c 65 64 20 2a  ace is enabled *
3bb0: 2f 0d 0a 20 20 20 20 69 73 54 72 61 63 65 45 6e  /..    isTraceEn
3bc0: 61 62 6c 65 64 3a 20 66 75 6e 63 74 69 6f 6e 28  abled: function(
3bd0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ) {..        if 
3be0: 28 74 68 69 73 2e 6c 65 76 65 6c 2e 76 61 6c 75  (this.level.valu
3bf0: 65 4f 66 28 29 20 3c 3d 20 4c 6f 67 34 6a 73 2e  eOf() <= Log4js.
3c00: 4c 65 76 65 6c 2e 54 52 41 43 45 2e 76 61 6c 75  Level.TRACE.valu
3c10: 65 4f 66 28 29 29 20 7b 0d 0a 20 20 20 20 20 20  eOf()) {..      
3c20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
3c30: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
3c40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
3c50: 6c 73 65 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20  lse;..    },..  
3c60: 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 54 72    /** ..    * Tr
3c70: 61 63 65 20 6d 65 73 73 61 67 65 73 20 0d 0a 20  ace messages .. 
3c80: 20 20 20 2a 20 40 70 61 72 61 6d 20 6d 65 73 73     * @param mess
3c90: 61 67 65 20 7b 4f 62 6a 65 63 74 7d 20 6d 65 73  age {Object} mes
3ca0: 73 61 67 65 20 74 6f 20 62 65 20 6c 6f 67 67 65  sage to be logge
3cb0: 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74  d..    */..    t
3cc0: 72 61 63 65 3a 20 66 75 6e 63 74 69 6f 6e 28 6d  race: function(m
3cd0: 65 73 73 61 67 65 29 20 7b 0d 0a 20 20 20 20 20  essage) {..     
3ce0: 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 54 72     if (this.isTr
3cf0: 61 63 65 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d  aceEnabled()) {.
3d00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
3d10: 73 2e 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76  s.log(Log4js.Lev
3d20: 65 6c 2e 54 52 41 43 45 2c 20 6d 65 73 73 61 67  el.TRACE, messag
3d30: 65 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20  e, null);..     
3d40: 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20     }..    },..  
3d50: 20 20 2f 2a 2a 20 63 68 65 63 6b 73 20 69 66 20    /** checks if 
3d60: 4c 65 76 65 6c 20 44 65 62 75 67 20 69 73 20 65  Level Debug is e
3d70: 6e 61 62 6c 65 64 20 2a 2f 0d 0a 20 20 20 20 69  nabled */..    i
3d80: 73 44 65 62 75 67 45 6e 61 62 6c 65 64 3a 20 66  sDebugEnabled: f
3d90: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
3da0: 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c 65       if (this.le
3db0: 76 65 6c 2e 76 61 6c 75 65 4f 66 28 29 20 3c 3d  vel.valueOf() <=
3dc0: 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 44 45   Log4js.Level.DE
3dd0: 42 55 47 2e 76 61 6c 75 65 4f 66 28 29 29 20 7b  BUG.valueOf()) {
3de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3df0: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
3e00: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72      }..        r
3e10: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
3e20: 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a    },..    /** ..
3e30: 20 20 20 20 2a 20 44 65 62 75 67 20 6d 65 73 73      * Debug mess
3e40: 61 67 65 73 20 0d 0a 20 20 20 20 2a 20 40 70 61  ages ..    * @pa
3e50: 72 61 6d 20 6d 65 73 73 61 67 65 20 7b 4f 62 6a  ram message {Obj
3e60: 65 63 74 7d 20 6d 65 73 73 61 67 65 20 74 6f 20  ect} message to 
3e70: 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20 2a  be logged..    *
3e80: 2f 0d 0a 20 20 20 20 64 65 62 75 67 3a 20 66 75  /..    debug: fu
3e90: 6e 63 74 69 6f 6e 28 6d 65 73 73 61 67 65 29 20  nction(message) 
3ea0: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74  {..        if (t
3eb0: 68 69 73 2e 69 73 44 65 62 75 67 45 6e 61 62 6c  his.isDebugEnabl
3ec0: 65 64 28 29 29 20 7b 0d 0a 20 20 20 20 20 20 20  ed()) {..       
3ed0: 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 28 4c 6f       this.log(Lo
3ee0: 67 34 6a 73 2e 4c 65 76 65 6c 2e 44 45 42 55 47  g4js.Level.DEBUG
3ef0: 2c 20 6d 65 73 73 61 67 65 2c 20 6e 75 6c 6c 29  , message, null)
3f00: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
3f10: 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20    },..    /**.. 
3f20: 20 20 20 2a 20 44 65 62 75 67 20 6d 65 73 73 61     * Debug messa
3f30: 67 65 73 20 0d 0a 20 20 20 20 2a 20 40 70 61 72  ges ..    * @par
3f40: 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 6d 65 73 73  am {Object} mess
3f50: 61 67 65 20 20 6d 65 73 73 61 67 65 20 74 6f 20  age  message to 
3f60: 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20 2a  be logged..    *
3f70: 20 40 70 61 72 61 6d 20 7b 54 68 72 6f 77 61 62   @param {Throwab
3f80: 6c 65 7d 20 74 68 72 6f 77 61 62 6c 65 20 0d 0a  le} throwable ..
3f90: 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 65 62 75      */..    debu
3fa0: 67 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 65 73 73  g: function(mess
3fb0: 61 67 65 2c 20 74 68 72 6f 77 61 62 6c 65 29 20  age, throwable) 
3fc0: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74  {..        if (t
3fd0: 68 69 73 2e 69 73 44 65 62 75 67 45 6e 61 62 6c  his.isDebugEnabl
3fe0: 65 64 28 29 29 20 7b 0d 0a 20 20 20 20 20 20 20  ed()) {..       
3ff0: 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 28 4c 6f       this.log(Lo
4000: 67 34 6a 73 2e 4c 65 76 65 6c 2e 44 45 42 55 47  g4js.Level.DEBUG
4010: 2c 20 6d 65 73 73 61 67 65 2c 20 74 68 72 6f 77  , message, throw
4020: 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  able);..        
4030: 7d 0d 0a 20 20 20 20 7d 2c 09 0d 0a 20 20 20 20  }..    },...    
4040: 2f 2a 2a 20 63 68 65 63 6b 73 20 69 66 20 4c 65  /** checks if Le
4050: 76 65 6c 20 49 6e 66 6f 20 69 73 20 65 6e 61 62  vel Info is enab
4060: 6c 65 64 20 2a 2f 0d 0a 20 20 20 20 69 73 49 6e  led */..    isIn
4070: 66 6f 45 6e 61 62 6c 65 64 3a 20 66 75 6e 63 74  foEnabled: funct
4080: 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ion() {..       
4090: 20 69 66 20 28 74 68 69 73 2e 6c 65 76 65 6c 2e   if (this.level.
40a0: 76 61 6c 75 65 4f 66 28 29 20 3c 3d 20 4c 6f 67  valueOf() <= Log
40b0: 34 6a 73 2e 4c 65 76 65 6c 2e 49 4e 46 4f 2e 76  4js.Level.INFO.v
40c0: 61 6c 75 65 4f 66 28 29 29 20 7b 0d 0a 20 20 20  alueOf()) {..   
40d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
40e0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  true;..        }
40f0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
4100: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 2c 0d   false;..    },.
4110: 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a  .    /** ..    *
4120: 20 6c 6f 67 67 69 6e 67 20 69 6e 66 6f 20 6d 65   logging info me
4130: 73 73 61 67 65 73 20 0d 0a 20 20 20 20 2a 20 40  ssages ..    * @
4140: 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20 6d  param {Object} m
4150: 65 73 73 61 67 65 20 20 6d 65 73 73 61 67 65 20  essage  message 
4160: 74 6f 20 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20  to be logged..  
4170: 20 20 2a 2f 0d 0a 20 20 20 20 69 6e 66 6f 3a 20    */..    info: 
4180: 66 75 6e 63 74 69 6f 6e 28 6d 65 73 73 61 67 65  function(message
4190: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ) {..        if 
41a0: 28 74 68 69 73 2e 69 73 49 6e 66 6f 45 6e 61 62  (this.isInfoEnab
41b0: 6c 65 64 28 29 29 20 7b 0d 0a 20 20 20 20 20 20  led()) {..      
41c0: 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 28 4c        this.log(L
41d0: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 49 4e 46 4f  og4js.Level.INFO
41e0: 2c 20 6d 65 73 73 61 67 65 2c 20 6e 75 6c 6c 29  , message, null)
41f0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
4200: 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a    },..    /** ..
4210: 20 20 20 20 2a 20 6c 6f 67 67 69 6e 67 20 69 6e      * logging in
4220: 66 6f 20 6d 65 73 73 61 67 65 73 20 0d 0a 20 20  fo messages ..  
4230: 20 20 2a 20 40 70 61 72 61 6d 20 7b 4f 62 6a 65    * @param {Obje
4240: 63 74 7d 20 6d 65 73 73 61 67 65 20 20 6d 65 73  ct} message  mes
4250: 73 61 67 65 20 74 6f 20 62 65 20 6c 6f 67 67 65  sage to be logge
4260: 64 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20  d..    * @param 
4270: 7b 54 68 72 6f 77 61 62 6c 65 7d 20 74 68 72 6f  {Throwable} thro
4280: 77 61 62 6c 65 20 20 0d 0a 20 20 20 20 2a 2f 0d  wable  ..    */.
4290: 0a 20 20 20 20 69 6e 66 6f 3a 20 66 75 6e 63 74  .    info: funct
42a0: 69 6f 6e 28 6d 65 73 73 61 67 65 2c 20 74 68 72  ion(message, thr
42b0: 6f 77 61 62 6c 65 29 20 7b 0d 0a 20 20 20 20 20  owable) {..     
42c0: 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 49 6e     if (this.isIn
42d0: 66 6f 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d 0a  foEnabled()) {..
42e0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
42f0: 2e 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76 65  .log(Log4js.Leve
4300: 6c 2e 49 4e 46 4f 2c 20 6d 65 73 73 61 67 65 2c  l.INFO, message,
4310: 20 74 68 72 6f 77 61 62 6c 65 29 3b 0d 0a 20 20   throwable);..  
4320: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d        }..    },.
4330: 0a 20 20 20 20 2f 2a 2a 20 63 68 65 63 6b 73 20  .    /** checks 
4340: 69 66 20 4c 65 76 65 6c 20 57 61 72 6e 20 69 73  if Level Warn is
4350: 20 65 6e 61 62 6c 65 64 20 2a 2f 0d 0a 20 20 20   enabled */..   
4360: 20 69 73 57 61 72 6e 45 6e 61 62 6c 65 64 3a 20   isWarnEnabled: 
4370: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
4380: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6c        if (this.l
4390: 65 76 65 6c 2e 76 61 6c 75 65 4f 66 28 29 20 3c  evel.valueOf() <
43a0: 3d 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 57  = Log4js.Level.W
43b0: 41 52 4e 2e 76 61 6c 75 65 4f 66 28 29 29 20 7b  ARN.valueOf()) {
43c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
43d0: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
43e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72      }..        r
43f0: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
4400: 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 20    },....    /** 
4410: 6c 6f 67 67 69 6e 67 20 77 61 72 6e 20 6d 65 73  logging warn mes
4420: 73 61 67 65 73 20 2a 2f 0d 0a 20 20 20 20 77 61  sages */..    wa
4430: 72 6e 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 65 73  rn: function(mes
4440: 73 61 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  sage) {..       
4450: 20 69 66 20 28 74 68 69 73 2e 69 73 57 61 72 6e   if (this.isWarn
4460: 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d 0a 20 20  Enabled()) {..  
4470: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
4480: 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  og(Log4js.Level.
4490: 57 41 52 4e 2c 20 6d 65 73 73 61 67 65 2c 20 6e  WARN, message, n
44a0: 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ull);..        }
44b0: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a  ..    },..    /*
44c0: 2a 20 6c 6f 67 67 69 6e 67 20 77 61 72 6e 20 6d  * logging warn m
44d0: 65 73 73 61 67 65 73 20 2a 2f 0d 0a 20 20 20 20  essages */..    
44e0: 77 61 72 6e 3a 20 66 75 6e 63 74 69 6f 6e 28 6d  warn: function(m
44f0: 65 73 73 61 67 65 2c 20 74 68 72 6f 77 61 62 6c  essage, throwabl
4500: 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66  e) {..        if
4510: 20 28 74 68 69 73 2e 69 73 57 61 72 6e 45 6e 61   (this.isWarnEna
4520: 62 6c 65 64 28 29 29 20 7b 0d 0a 20 20 20 20 20  bled()) {..     
4530: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 28         this.log(
4540: 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 57 41 52  Log4js.Level.WAR
4550: 4e 2c 20 6d 65 73 73 61 67 65 2c 20 74 68 72 6f  N, message, thro
4560: 77 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  wable);..       
4570: 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20   }..    },..    
4580: 2f 2a 2a 20 63 68 65 63 6b 73 20 69 66 20 4c 65  /** checks if Le
4590: 76 65 6c 20 45 72 72 6f 72 20 69 73 20 65 6e 61  vel Error is ena
45a0: 62 6c 65 64 20 2a 2f 0d 0a 20 20 20 20 69 73 45  bled */..    isE
45b0: 72 72 6f 72 45 6e 61 62 6c 65 64 3a 20 66 75 6e  rrorEnabled: fun
45c0: 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20  ction() {..     
45d0: 20 20 20 69 66 20 28 74 68 69 73 2e 6c 65 76 65     if (this.leve
45e0: 6c 2e 76 61 6c 75 65 4f 66 28 29 20 3c 3d 20 4c  l.valueOf() <= L
45f0: 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 45 52 52 4f  og4js.Level.ERRO
4600: 52 2e 76 61 6c 75 65 4f 66 28 29 29 20 7b 0d 0a  R.valueOf()) {..
4610: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4620: 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
4630: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74    }..        ret
4640: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
4650: 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 6c 6f 67 67  },..    /** logg
4660: 69 6e 67 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ing error messag
4670: 65 73 20 2a 2f 0d 0a 20 20 20 20 65 72 72 6f 72  es */..    error
4680: 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 65 73 73 61  : function(messa
4690: 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69  ge) {..        i
46a0: 66 20 28 74 68 69 73 2e 69 73 45 72 72 6f 72 45  f (this.isErrorE
46b0: 6e 61 62 6c 65 64 28 29 29 20 7b 0d 0a 20 20 20  nabled()) {..   
46c0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f           this.lo
46d0: 67 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 45  g(Log4js.Level.E
46e0: 52 52 4f 52 2c 20 6d 65 73 73 61 67 65 2c 20 6e  RROR, message, n
46f0: 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ull);..        }
4700: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a  ..    },..    /*
4710: 2a 20 6c 6f 67 67 69 6e 67 20 65 72 72 6f 72 20  * logging error 
4720: 6d 65 73 73 61 67 65 73 20 2a 2f 0d 0a 20 20 20  messages */..   
4730: 20 65 72 72 6f 72 3a 20 66 75 6e 63 74 69 6f 6e   error: function
4740: 28 6d 65 73 73 61 67 65 2c 20 74 68 72 6f 77 61  (message, throwa
4750: 62 6c 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ble) {..        
4760: 69 66 20 28 74 68 69 73 2e 69 73 45 72 72 6f 72  if (this.isError
4770: 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d 0a 20 20  Enabled()) {..  
4780: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c            this.l
4790: 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  og(Log4js.Level.
47a0: 45 52 52 4f 52 2c 20 6d 65 73 73 61 67 65 2c 20  ERROR, message, 
47b0: 74 68 72 6f 77 61 62 6c 65 29 3b 0d 0a 20 20 20  throwable);..   
47c0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a       }..    },..
47d0: 20 20 20 20 2f 2a 2a 20 63 68 65 63 6b 73 20 69      /** checks i
47e0: 66 20 4c 65 76 65 6c 20 46 61 74 61 6c 20 69 73  f Level Fatal is
47f0: 20 65 6e 61 62 6c 65 64 20 2a 2f 0d 0a 20 20 20   enabled */..   
4800: 20 69 73 46 61 74 61 6c 45 6e 61 62 6c 65 64 3a   isFatalEnabled:
4810: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
4820: 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e         if (this.
4830: 6c 65 76 65 6c 2e 76 61 6c 75 65 4f 66 28 29 20  level.valueOf() 
4840: 3c 3d 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e  <= Log4js.Level.
4850: 46 41 54 41 4c 2e 76 61 6c 75 65 4f 66 28 29 29  FATAL.valueOf())
4860: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
4870: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
4880: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4890: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
48a0: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20      },..    /** 
48b0: 6c 6f 67 67 69 6e 67 20 66 61 74 61 6c 20 6d 65  logging fatal me
48c0: 73 73 61 67 65 73 20 2a 2f 0d 0a 20 20 20 20 66  ssages */..    f
48d0: 61 74 61 6c 3a 20 66 75 6e 63 74 69 6f 6e 28 6d  atal: function(m
48e0: 65 73 73 61 67 65 29 20 7b 0d 0a 20 20 20 20 20  essage) {..     
48f0: 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 46 61     if (this.isFa
4900: 74 61 6c 45 6e 61 62 6c 65 64 28 29 29 20 7b 0d  talEnabled()) {.
4910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
4920: 73 2e 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65 76  s.log(Log4js.Lev
4930: 65 6c 2e 46 41 54 41 4c 2c 20 6d 65 73 73 61 67  el.FATAL, messag
4940: 65 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20  e, null);..     
4950: 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20     }..    },..  
4960: 20 20 2f 2a 2a 20 6c 6f 67 67 69 6e 67 20 66 61    /** logging fa
4970: 74 61 6c 20 6d 65 73 73 61 67 65 73 20 2a 2f 0d  tal messages */.
4980: 0a 20 20 20 20 66 61 74 61 6c 3a 20 66 75 6e 63  .    fatal: func
4990: 74 69 6f 6e 28 6d 65 73 73 61 67 65 2c 20 74 68  tion(message, th
49a0: 72 6f 77 61 62 6c 65 29 20 7b 0d 0a 20 20 20 20  rowable) {..    
49b0: 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 73 46      if (this.isF
49c0: 61 74 61 6c 45 6e 61 62 6c 65 64 28 29 29 20 7b  atalEnabled()) {
49d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
49e0: 69 73 2e 6c 6f 67 28 4c 6f 67 34 6a 73 2e 4c 65  is.log(Log4js.Le
49f0: 76 65 6c 2e 46 41 54 41 4c 2c 20 6d 65 73 73 61  vel.FATAL, messa
4a00: 67 65 2c 20 74 68 72 6f 77 61 62 6c 65 29 3b 0d  ge, throwable);.
4a10: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
4a20: 7d 2c 09 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20  },...    /** .. 
4a30: 20 20 20 2a 20 43 61 70 74 75 72 65 20 6d 61 69     * Capture mai
4a40: 6e 20 77 69 6e 64 6f 77 20 65 72 72 6f 72 73 20  n window errors 
4a50: 61 6e 64 20 6c 6f 67 20 61 73 20 66 61 74 61 6c  and log as fatal
4a60: 2e 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74  ...    * @privat
4a70: 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 77  e..    */..    w
4a80: 69 6e 64 6f 77 45 72 72 6f 72 3a 20 66 75 6e 63  indowError: func
4a90: 74 69 6f 6e 28 6d 73 67 2c 20 75 72 6c 2c 20 6c  tion(msg, url, l
4aa0: 69 6e 65 29 7b 0d 0a 20 20 20 20 20 20 20 20 76  ine){..        v
4ab0: 61 72 20 6d 65 73 73 61 67 65 20 3d 20 22 45 72  ar message = "Er
4ac0: 72 6f 72 20 69 6e 20 28 22 20 2b 20 28 75 72 6c  ror in (" + (url
4ad0: 20 7c 7c 20 77 69 6e 64 6f 77 2e 6c 6f 63 61 74   || window.locat
4ae0: 69 6f 6e 29 20 2b 20 22 29 20 6f 6e 20 6c 69 6e  ion) + ") on lin
4af0: 65 20 22 2b 20 6c 69 6e 65 20 2b 22 20 77 69 74  e "+ line +" wit
4b00: 68 20 6d 65 73 73 61 67 65 20 28 22 20 2b 20 6d  h message (" + m
4b10: 73 67 20 2b 20 22 29 22 3b 0d 0a 20 20 20 20 20  sg + ")";..     
4b20: 20 20 20 74 68 69 73 2e 6c 6f 67 28 4c 6f 67 34     this.log(Log4
4b30: 6a 73 2e 4c 65 76 65 6c 2e 46 41 54 41 4c 2c 20  js.Level.FATAL, 
4b40: 6d 65 73 73 61 67 65 2c 20 6e 75 6c 6c 29 3b 09  message, null);.
4b50: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a  ..    },..    ..
4b60: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 53      /**..    * S
4b70: 65 74 20 74 68 65 20 64 61 74 65 20 66 6f 72 6d  et the date form
4b80: 61 74 20 6f 66 20 6c 6f 67 67 65 72 2e 20 46 6f  at of logger. Fo
4b90: 6c 6c 6f 77 69 6e 67 20 73 77 69 74 63 68 65 73  llowing switches
4ba0: 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 3a 0d   are supported:.
4bb0: 0a 20 20 20 20 2a 20 3c 75 6c 3e 0d 0a 20 20 20  .    * <ul>..   
4bc0: 20 2a 20 3c 6c 69 3e 79 79 79 79 20 2d 20 54 68   * <li>yyyy - Th
4bd0: 65 20 79 65 61 72 3c 2f 6c 69 3e 0d 0a 20 20 20  e year</li>..   
4be0: 20 2a 20 3c 6c 69 3e 4d 4d 20 2d 20 74 68 65 20   * <li>MM - the 
4bf0: 6d 6f 6e 74 68 3c 2f 6c 69 3e 0d 0a 20 20 20 20  month</li>..    
4c00: 2a 20 3c 6c 69 3e 64 64 20 2d 20 74 68 65 20 64  * <li>dd - the d
4c10: 61 79 20 6f 66 20 6d 6f 6e 74 68 3c 6c 69 3e 0d  ay of month<li>.
4c20: 0a 20 20 20 20 2a 20 3c 6c 69 3e 68 68 20 2d 20  .    * <li>hh - 
4c30: 74 68 65 20 68 6f 75 72 3c 6c 69 3e 0d 0a 20 20  the hour<li>..  
4c40: 20 20 2a 20 3c 6c 69 3e 6d 6d 20 2d 20 6d 69 6e    * <li>mm - min
4c50: 75 74 65 73 3c 2f 6c 69 3e 0d 0a 20 20 20 20 2a  utes</li>..    *
4c60: 20 3c 6c 69 3e 4f 20 2d 20 74 69 6d 65 7a 6f 6e   <li>O - timezon
4c70: 65 20 6f 66 66 73 65 74 3c 2f 6c 69 3e 0d 0a 20  e offset</li>.. 
4c80: 20 20 20 2a 20 3c 2f 75 6c 3e 0d 0a 20 20 20 20     * </ul>..    
4c90: 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e 67  * @param {String
4ca0: 7d 20 66 6f 72 6d 61 74 20 66 6f 72 6d 61 74 20  } format format 
4cb0: 53 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20 64  String for the d
4cc0: 61 74 65 0d 0a 20 20 20 20 2a 20 40 73 65 65 20  ate..    * @see 
4cd0: 23 67 65 74 54 69 6d 65 73 74 61 6d 70 0d 0a 20  #getTimestamp.. 
4ce0: 20 20 20 2a 2f 0d 0a 20 20 20 20 73 65 74 44 61     */..    setDa
4cf0: 74 65 46 6f 72 6d 61 74 3a 20 66 75 6e 63 74 69  teFormat: functi
4d00: 6f 6e 28 66 6f 72 6d 61 74 29 20 7b 0d 0a 20 20  on(format) {..  
4d10: 20 20 20 20 20 20 74 68 69 73 2e 64 61 74 65 66        this.datef
4d20: 6f 72 6d 61 74 20 3d 20 66 6f 72 6d 61 74 3b 0d  ormat = format;.
4d30: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
4d40: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 47 65     /**..    * Ge
4d50: 6e 65 72 61 74 65 73 20 61 20 74 69 6d 65 73 74  nerates a timest
4d60: 61 6d 70 20 75 73 69 6e 67 20 74 68 65 20 66 6f  amp using the fo
4d70: 72 6d 61 74 20 73 65 74 20 69 6e 20 7b 4c 6f 67  rmat set in {Log
4d80: 34 6a 73 2e 73 65 74 44 61 74 65 46 6f 72 6d 61  4js.setDateForma
4d90: 74 7d 2e 0d 0a 20 20 20 20 2a 20 40 70 61 72 61  t}...    * @para
4da0: 6d 20 7b 44 61 74 65 7d 20 64 61 74 65 20 74 68  m {Date} date th
4db0: 65 20 64 61 74 65 20 74 6f 20 66 6f 72 6d 61 74  e date to format
4dc0: 0d 0a 20 20 20 20 2a 20 40 73 65 65 20 23 73 65  ..    * @see #se
4dd0: 74 44 61 74 65 46 6f 72 6d 61 74 0d 0a 20 20 20  tDateFormat..   
4de0: 20 2a 20 40 72 65 74 75 72 6e 20 41 20 66 6f 72   * @return A for
4df0: 6d 61 74 74 65 64 20 74 69 6d 65 73 74 61 6d 70  matted timestamp
4e00: 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65 6e   with the curren
4e10: 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 2e  t date and time.
4e20: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67 65  ..    */..    ge
4e30: 74 46 6f 72 6d 61 74 74 65 64 54 69 6d 65 73 74  tFormattedTimest
4e40: 61 6d 70 3a 20 66 75 6e 63 74 69 6f 6e 28 64 61  amp: function(da
4e50: 74 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  te) {..        r
4e60: 65 74 75 72 6e 20 74 68 69 73 2e 64 61 74 65 66  eturn this.datef
4e70: 6f 72 6d 61 74 74 65 72 2e 66 6f 72 6d 61 74 44  ormatter.formatD
4e80: 61 74 65 28 64 61 74 65 2c 20 74 68 69 73 2e 64  ate(date, this.d
4e90: 61 74 65 66 6f 72 6d 61 74 29 3b 0d 0a 20 20 20  ateformat);..   
4ea0: 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a   }..};..../**..*
4eb0: 20 41 62 73 74 72 61 63 74 20 62 61 73 65 20 63   Abstract base c
4ec0: 6c 61 73 73 20 66 6f 72 20 6f 74 68 65 72 20 61  lass for other a
4ed0: 70 70 65 6e 64 65 72 73 2e 20 0d 0a 2a 20 49 74  ppenders. ..* It
4ee0: 20 69 73 20 64 6f 69 6e 67 20 6e 6f 74 68 69 6e   is doing nothin
4ef0: 67 2e 0d 0a 2a 0d 0a 2a 20 40 63 6f 6e 73 74 72  g...*..* @constr
4f00: 75 63 74 6f 72 0d 0a 2a 20 40 70 61 72 61 6d 20  uctor..* @param 
4f10: 7b 4c 6f 67 34 6a 73 2e 4c 6f 67 67 65 72 7d 20  {Log4js.Logger} 
4f20: 6c 6f 67 67 65 72 20 6c 6f 67 34 6a 73 20 69 6e  logger log4js in
4f30: 73 74 61 6e 63 65 20 74 68 69 73 20 61 70 70 65  stance this appe
4f40: 6e 64 65 72 20 69 73 20 61 74 74 61 63 68 65 64  nder is attached
4f50: 20 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53   to..* @author S
4f60: 74 65 70 68 61 6e 20 53 74 72 69 74 74 6d 61 74  tephan Strittmat
4f70: 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e  ter..*/..Log4js.
4f80: 41 70 70 65 6e 64 65 72 20 3d 20 66 75 6e 63 74  Appender = funct
4f90: 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 2f 2a  ion () {..    /*
4fa0: 2a 0d 0a 20 20 20 20 2a 20 52 65 66 65 72 65 6e  *..    * Referen
4fb0: 63 65 20 74 6f 20 63 61 6c 6c 69 6e 67 20 6c 6f  ce to calling lo
4fc0: 67 67 65 72 0d 0a 20 20 20 20 2a 20 40 74 79 70  gger..    * @typ
4fd0: 65 20 4c 6f 67 34 6a 73 2e 4c 6f 67 67 65 72 0d  e Log4js.Logger.
4fe0: 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d  .    * @private.
4ff0: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68 69  .    */..    thi
5000: 73 2e 6c 6f 67 67 65 72 20 3d 20 6e 75 6c 6c 3b  s.logger = null;
5010: 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 41  ..};....Log4js.A
5020: 70 70 65 6e 64 65 72 2e 70 72 6f 74 6f 74 79 70  ppender.prototyp
5030: 65 20 3d 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d  e = {..    /** .
5040: 0a 20 20 20 20 2a 20 61 70 70 65 6e 64 73 20 74  .    * appends t
5050: 68 65 20 67 69 76 65 6e 20 6c 6f 67 67 69 6e 67  he given logging
5060: 45 76 65 6e 74 20 61 70 70 65 6e 64 65 72 20 73  Event appender s
5070: 70 65 63 69 66 69 63 0d 0a 20 20 20 20 2a 20 40  pecific..    * @
5080: 70 61 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 6f  param {Log4js.Lo
5090: 67 67 69 6e 67 45 76 65 6e 74 7d 20 6c 6f 67 67  ggingEvent} logg
50a0: 69 6e 67 45 76 65 6e 74 20 6c 6f 67 67 69 6e 67  ingEvent logging
50b0: 45 76 65 6e 74 20 74 6f 20 61 70 70 65 6e 64 0d  Event to append.
50c0: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f 41  .    */..    doA
50d0: 70 70 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e 28  ppend: function(
50e0: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b 0d  loggingEvent) {.
50f0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b  .        return;
5100: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a  ..    },..    /*
5110: 2a 20 0d 0a 20 20 20 20 2a 20 63 6c 65 61 72 73  * ..    * clears
5120: 20 74 68 65 20 41 70 70 65 6e 64 65 72 0d 0a 20   the Appender.. 
5130: 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f 43 6c 65     */..    doCle
5140: 61 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  ar: function() {
5150: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
5160: 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d  ;..    },..    .
5170: 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
5180: 53 65 74 20 74 68 65 20 4c 61 79 6f 75 74 20 66  Set the Layout f
5190: 6f 72 20 74 68 69 73 20 61 70 70 65 6e 64 65 72  or this appender
51a0: 2e 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20  ...    * @param 
51b0: 7b 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 7d 20  {Log4js.Layout} 
51c0: 6c 61 79 6f 75 74 20 4c 61 79 6f 75 74 20 66 6f  layout Layout fo
51d0: 72 20 66 6f 72 6d 61 74 74 69 6e 67 20 6c 6f 67  r formatting log
51e0: 67 69 6e 67 45 76 65 6e 74 0d 0a 20 20 20 20 2a  gingEvent..    *
51f0: 2f 0d 0a 20 20 20 20 73 65 74 4c 61 79 6f 75 74  /..    setLayout
5200: 3a 20 66 75 6e 63 74 69 6f 6e 28 6c 61 79 6f 75  : function(layou
5210: 74 29 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69  t){..        thi
5220: 73 2e 6c 61 79 6f 75 74 20 3d 20 6c 61 79 6f 75  s.layout = layou
5230: 74 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  t;..    },..    
5240: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 53 65 74 20 72  /**..    * Set r
5250: 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20  eference to the 
5260: 6c 6f 67 67 65 72 2e 0d 0a 20 20 20 20 2a 20 40  logger...    * @
5270: 70 61 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 6f  param {Log4js.Lo
5280: 67 67 65 72 7d 20 74 68 65 20 69 6e 76 6f 6b 69  gger} the invoki
5290: 6e 67 20 6c 6f 67 67 65 72 0d 0a 20 20 20 20 2a  ng logger..    *
52a0: 2f 0d 0a 20 20 20 20 73 65 74 4c 6f 67 67 65 72  /..    setLogger
52b0: 3a 20 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 65  : function(logge
52c0: 72 29 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20  r){..        // 
52d0: 61 64 64 20 6c 69 73 74 65 6e 65 72 20 74 6f 20  add listener to 
52e0: 74 68 65 20 6c 6f 67 67 65 72 20 6d 65 74 68 6f  the logger metho
52f0: 64 73 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 67  ds..        logg
5300: 65 72 2e 6f 6e 6c 6f 67 2e 61 64 64 4c 69 73 74  er.onlog.addList
5310: 65 6e 65 72 28 4c 6f 67 34 6a 73 2e 62 69 6e 64  ener(Log4js.bind
5320: 28 74 68 69 73 2e 64 6f 41 70 70 65 6e 64 2c 20  (this.doAppend, 
5330: 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 20 20 20  this));..       
5340: 20 6c 6f 67 67 65 72 2e 6f 6e 63 6c 65 61 72 2e   logger.onclear.
5350: 61 64 64 4c 69 73 74 65 6e 65 72 28 4c 6f 67 34  addListener(Log4
5360: 6a 73 2e 62 69 6e 64 28 74 68 69 73 2e 64 6f 43  js.bind(this.doC
5370: 6c 65 61 72 2c 20 74 68 69 73 29 29 3b 0d 0a 20  lear, this));.. 
5380: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 74 68 69     ..        thi
5390: 73 2e 6c 6f 67 67 65 72 20 3d 20 6c 6f 67 67 65  s.logger = logge
53a0: 72 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d  r;..    }..};...
53b0: 0a 2f 2a 2a 0d 0a 2a 20 49 6e 74 65 72 66 61 63  ./**..* Interfac
53c0: 65 20 66 6f 72 20 4c 61 79 6f 75 74 73 2e 0d 0a  e for Layouts...
53d0: 2a 20 55 73 65 20 74 68 69 73 20 4c 61 79 6f 75  * Use this Layou
53e0: 74 20 61 73 20 22 69 6e 74 65 72 66 61 63 65 22  t as "interface"
53f0: 20 66 6f 72 20 6f 74 68 65 72 20 4c 61 79 6f 75   for other Layou
5400: 74 73 2e 20 49 74 20 69 73 20 64 6f 69 6e 67 20  ts. It is doing 
5410: 6e 6f 74 68 69 6e 67 2e 0d 0a 2a 0d 0a 2a 20 40  nothing...*..* @
5420: 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40  constructor..* @
5430: 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20 53  author Stephan S
5440: 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d  trittmatter..*/.
5450: 0a 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 20 3d  .Log4js.Layout =
5460: 20 66 75 6e 63 74 69 6f 6e 28 29 7b 72 65 74 75   function(){retu
5470: 72 6e 3b 7d 3b 0d 0a 4c 6f 67 34 6a 73 2e 4c 61  rn;};..Log4js.La
5480: 79 6f 75 74 2e 70 72 6f 74 6f 74 79 70 65 20 3d  yout.prototype =
5490: 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20   {..    /** ..  
54a0: 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 20 74 68    * Implement th
54b0: 69 73 20 6d 65 74 68 6f 64 20 74 6f 20 63 72 65  is method to cre
54c0: 61 74 65 20 79 6f 75 72 20 6f 77 6e 20 6c 61 79  ate your own lay
54d0: 6f 75 74 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20  out format...   
54e0: 20 2a 20 40 70 61 72 61 6d 20 7b 4c 6f 67 34 6a   * @param {Log4j
54f0: 73 2e 4c 6f 67 67 69 6e 67 45 76 65 6e 74 7d 20  s.LoggingEvent} 
5500: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 6c 6f 67  loggingEvent log
5510: 67 69 6e 67 45 76 65 6e 74 20 74 6f 20 66 6f 72  gingEvent to for
5520: 6d 61 74 0d 0a 20 20 20 20 2a 20 40 72 65 74 75  mat..    * @retu
5530: 72 6e 20 66 6f 72 6d 61 74 74 65 64 20 53 74 72  rn formatted Str
5540: 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74 79 70 65  ing..    * @type
5550: 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d   String..    */.
5560: 0a 20 20 20 20 66 6f 72 6d 61 74 3a 20 66 75 6e  .    format: fun
5570: 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65  ction(loggingEve
5580: 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  nt) {..        r
5590: 65 74 75 72 6e 20 22 22 3b 0d 0a 20 20 20 20 7d  eturn "";..    }
55a0: 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20  ,..    /** ..   
55b0: 20 2a 20 52 65 74 75 72 6e 73 20 74 68 65 20 63   * Returns the c
55c0: 6f 6e 74 65 6e 74 20 74 79 70 65 20 6f 75 74 70  ontent type outp
55d0: 75 74 20 62 79 20 74 68 69 73 20 6c 61 79 6f 75  ut by this layou
55e0: 74 2e 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75  t. ..    * @retu
55f0: 72 6e 20 54 68 65 20 62 61 73 65 20 63 6c 61 73  rn The base clas
5600: 73 20 72 65 74 75 72 6e 73 20 22 74 65 78 74 2f  s returns "text/
5610: 70 6c 61 69 6e 22 2e 0d 0a 20 20 20 20 2a 20 40  plain"...    * @
5620: 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20  type String..   
5630: 20 2a 2f 0d 0a 20 20 20 20 67 65 74 43 6f 6e 74   */..    getCont
5640: 65 6e 74 54 79 70 65 3a 20 66 75 6e 63 74 69 6f  entType: functio
5650: 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  n() {..        r
5660: 65 74 75 72 6e 20 22 74 65 78 74 2f 70 6c 61 69  eturn "text/plai
5670: 6e 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  n";..    },..   
5680: 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40 72 65   /** ..    * @re
5690: 74 75 72 6e 20 52 65 74 75 72 6e 73 20 74 68 65  turn Returns the
56a0: 20 68 65 61 64 65 72 20 66 6f 72 20 74 68 65 20   header for the 
56b0: 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 20 54  layout format. T
56c0: 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 72 65  he base class re
56d0: 74 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20  turns null...   
56e0: 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e 67 0d   * @type String.
56f0: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67 65 74  .    */..    get
5700: 48 65 61 64 65 72 3a 20 66 75 6e 63 74 69 6f 6e  Header: function
5710: 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65  () {..        re
5720: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
5730: 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20  },..    /** ..  
5740: 20 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75    * @return Retu
5750: 72 6e 73 20 74 68 65 20 66 6f 6f 74 65 72 20 66  rns the footer f
5760: 6f 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f  or the layout fo
5770: 72 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63  rmat. The base c
5780: 6c 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c  lass returns nul
5790: 6c 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  l...    * @type 
57a0: 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a  String..    */..
57b0: 20 20 20 20 67 65 74 46 6f 6f 74 65 72 3a 20 66      getFooter: f
57c0: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
57d0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
57e0: 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d  ;..    },..    .
57f0: 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
5800: 40 72 65 74 75 72 6e 20 53 65 70 61 72 61 74 6f  @return Separato
5810: 72 20 62 65 74 77 65 65 6e 20 65 76 65 6e 74 73  r between events
5820: 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53 74  ..    * @type St
5830: 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  ring..    */..  
5840: 20 20 67 65 74 53 65 70 61 72 61 74 6f 72 3a 20    getSeparator: 
5850: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
5860: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 22 3b        return "";
5870: 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 2f  ..    }..};..../
5880: 2a 2a 0d 0a 2a 20 43 6f 6e 73 6f 6c 65 20 41 70  **..* Console Ap
5890: 70 65 6e 64 65 72 20 77 72 69 74 65 73 20 74 68  pender writes th
58a0: 65 20 6c 6f 67 73 20 74 6f 20 61 20 63 6f 6e 73  e logs to a cons
58b0: 6f 6c 65 2e 20 20 49 66 20 22 69 6e 6c 69 6e 65  ole.  If "inline
58c0: 22 20 69 73 0d 0a 2a 20 73 65 74 20 74 6f 20 22  " is..* set to "
58d0: 66 61 6c 73 65 22 20 74 68 65 20 63 6f 6e 73 6f  false" the conso
58e0: 6c 65 20 6c 61 75 6e 63 68 65 73 20 69 6e 20 61  le launches in a
58f0: 6e 6f 74 68 65 72 20 77 69 6e 64 6f 77 20 6f 74  nother window ot
5900: 68 65 72 77 69 73 65 0d 0a 2a 20 74 68 65 20 77  herwise..* the w
5910: 69 6e 64 6f 77 20 69 73 20 69 6e 6c 69 6e 65 20  indow is inline 
5920: 6f 6e 20 74 68 65 20 70 61 67 65 20 61 6e 64 20  on the page and 
5930: 74 6f 67 67 6c 65 64 20 6f 6e 20 61 6e 64 20 6f  toggled on and o
5940: 66 66 20 77 69 74 68 20 22 41 6c 74 2d 44 22 2e  ff with "Alt-D".
5950: 0d 0a 2a 20 4e 6f 74 65 3a 20 41 74 20 46 69 72  ..* Note: At Fir
5960: 65 46 6f 78 20 26 67 62 3b 20 32 2e 30 20 74 68  eFox &gb; 2.0 th
5970: 65 20 6b 65 79 73 74 72 6f 6b 65 20 69 73 20 6c  e keystroke is l
5980: 69 74 74 6c 65 20 64 69 66 66 65 72 65 6e 74 20  ittle different 
5990: 6e 6f 77 3a 20 22 53 48 49 46 54 2b 41 4c 54 2b  now: "SHIFT+ALT+
59a0: 44 22 2e 0d 0a 2a 0d 0a 2a 20 40 63 6f 6e 73 74  D"...*..* @const
59b0: 72 75 63 74 6f 72 0d 0a 2a 20 40 65 78 74 65 6e  ructor..* @exten
59c0: 64 73 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64  ds Log4js.Append
59d0: 65 72 0d 0a 2a 20 40 70 61 72 61 6d 20 7b 62 6f  er..* @param {bo
59e0: 6f 6c 65 61 6e 7d 20 69 73 49 6e 6c 69 6e 65 20  olean} isInline 
59f0: 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 20 74 68  boolean value th
5a00: 61 74 20 69 6e 64 69 63 61 74 65 73 20 77 68 65  at indicates whe
5a10: 74 68 65 72 20 74 68 65 20 63 6f 6e 73 6f 6c 65  ther the console
5a20: 20 62 65 20 70 6c 61 63 65 64 20 69 6e 6c 69 6e   be placed inlin
5a30: 65 2c 20 64 65 66 61 75 6c 74 20 69 73 20 74 6f  e, default is to
5a40: 20 6c 61 75 6e 63 68 20 69 6e 20 6e 65 77 20 77   launch in new w
5a50: 69 6e 64 6f 77 0d 0a 2a 0d 0a 2a 20 40 61 75 74  indow..*..* @aut
5a60: 68 6f 72 20 43 6f 72 65 79 20 4a 6f 68 6e 73 6f  hor Corey Johnso
5a70: 6e 20 2d 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6e  n - original con
5a80: 73 6f 6c 65 20 63 6f 64 65 20 69 6e 20 4c 75 6d  sole code in Lum
5a90: 62 65 72 6a 61 63 6b 20 28 68 74 74 70 3a 2f 2f  berjack (http://
5aa0: 67 6c 65 65 70 67 6c 6f 70 2e 63 6f 6d 2f 6a 61  gleepglop.com/ja
5ab0: 76 61 73 63 72 69 70 74 73 2f 6c 6f 67 67 65 72  vascripts/logger
5ac0: 2f 29 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53 65  /)..* @author Se
5ad0: 74 68 20 43 68 69 73 61 6d 6f 72 65 20 2d 20 61  th Chisamore - a
5ae0: 64 61 70 74 65 64 20 66 6f 72 20 75 73 65 20 61  dapted for use a
5af0: 73 20 61 20 6c 6f 67 34 6a 73 20 61 70 70 65 6e  s a log4js appen
5b00: 64 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e  der..*/..Log4js.
5b10: 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 20  ConsoleAppender 
5b20: 3d 20 66 75 6e 63 74 69 6f 6e 28 69 73 49 6e 6c  = function(isInl
5b30: 69 6e 65 29 20 7b 0d 0a 20 20 20 20 0d 0a 20 20  ine) {..    ..  
5b40: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 74 79    /**..    * @ty
5b50: 70 65 20 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74  pe Log4js.Layout
5b60: 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65  ..    * @private
5b70: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68  ..    */..    th
5b80: 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e 65 77 20  is.layout = new 
5b90: 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61  Log4js.PatternLa
5ba0: 79 6f 75 74 28 4c 6f 67 34 6a 73 2e 50 61 74 74  yout(Log4js.Patt
5bb0: 65 72 6e 4c 61 79 6f 75 74 2e 54 54 43 43 5f 43  ernLayout.TTCC_C
5bc0: 4f 4e 56 45 52 53 49 4f 4e 5f 50 41 54 54 45 52  ONVERSION_PATTER
5bd0: 4e 29 3b 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20  N);..    /**..  
5be0: 20 20 2a 20 40 74 79 70 65 20 62 6f 6f 6c 65 61    * @type boolea
5bf0: 6e 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74  n..    * @privat
5c00: 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74  e..    */..    t
5c10: 68 69 73 2e 69 6e 6c 69 6e 65 20 3d 20 69 73 49  his.inline = isI
5c20: 6e 6c 69 6e 65 3b 0d 0a 0d 0a 20 20 20 20 2f 2a  nline;....    /*
5c30: 2a 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53  *..    * @type S
5c40: 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 70 72  tring..    * @pr
5c50: 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ivate..    */.. 
5c60: 20 20 20 74 68 69 73 2e 61 63 63 65 73 73 6b 65     this.accesske
5c70: 79 20 3d 20 22 64 22 3b 0d 0a 20 20 20 20 0d 0a  y = "d";..    ..
5c80: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40      /**..    * @
5c90: 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d  private..    */.
5ca0: 0a 20 20 20 20 74 68 69 73 2e 74 61 67 50 61 74  .    this.tagPat
5cb0: 74 65 72 6e 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  tern = null;..  
5cc0: 20 20 0d 0a 20 20 20 20 74 68 69 73 2e 63 6f 6d    ..    this.com
5cd0: 6d 61 6e 64 48 69 73 74 6f 72 79 20 3d 20 5b 5d  mandHistory = []
5ce0: 3b 0d 0a 20 20 20 20 74 68 69 73 2e 63 6f 6d 6d  ;..    this.comm
5cf0: 61 6e 64 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20  andIndex = 0;.. 
5d00: 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20     ..    /**..  
5d10: 20 20 2a 20 74 72 75 65 20 69 66 20 70 6f 70 75    * true if popu
5d20: 70 20 69 73 20 62 6c 6f 63 6b 65 64 2e 0d 0a 20  p is blocked... 
5d30: 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e     */..    this.
5d40: 70 6f 70 75 70 42 6c 6f 63 6b 65 72 20 3d 20 66  popupBlocker = f
5d50: 61 6c 73 65 3b 0d 0a 20 20 20 20 0d 0a 20 20 20  alse;..    ..   
5d60: 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 63 75 72 72   /**..    * curr
5d70: 65 6e 74 20 6f 75 74 70 75 74 20 64 69 76 2d 65  ent output div-e
5d80: 6c 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 2a 2f 0d  lement...    */.
5d90: 0a 20 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74  .    this.output
5da0: 45 6c 65 6d 65 6e 74 20 3d 20 6e 75 6c 6c 3b 0d  Element = null;.
5db0: 0a 20 20 20 20 0d 0a 20 20 20 20 74 68 69 73 2e  .    ..    this.
5dc0: 64 6f 63 52 65 66 65 72 65 6e 63 65 20 3d 20 6e  docReference = n
5dd0: 75 6c 6c 3b 0d 0a 20 20 20 20 74 68 69 73 2e 77  ull;..    this.w
5de0: 69 6e 52 65 66 65 72 65 6e 63 65 20 3d 20 6e 75  inReference = nu
5df0: 6c 6c 3b 09 09 0d 0a 20 20 20 20 20 20 20 20 0d  ll;....        .
5e00: 0a 20 20 20 20 69 66 28 74 68 69 73 2e 69 6e 6c  .    if(this.inl
5e10: 69 6e 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ine) {..        
5e20: 4c 6f 67 34 6a 73 2e 61 74 74 61 63 68 45 76 65  Log4js.attachEve
5e30: 6e 74 28 77 69 6e 64 6f 77 2c 20 27 6c 6f 61 64  nt(window, 'load
5e40: 27 2c 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28 74  ', Log4js.bind(t
5e50: 68 69 73 2e 69 6e 69 74 69 61 6c 69 7a 65 2c 20  his.initialize, 
5e60: 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a  this));..    }..
5e70: 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 43 6f 6e  };....Log4js.Con
5e80: 73 6f 6c 65 41 70 70 65 6e 64 65 72 2e 70 72 6f  soleAppender.pro
5e90: 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a 73 2e  totype = Log4js.
5ea0: 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67 34 6a  extend(new Log4j
5eb0: 73 2e 41 70 70 65 6e 64 65 72 28 29 2c 20 7b 20  s.Appender(), { 
5ec0: 20 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20   ....    /**..  
5ed0: 20 20 2a 20 53 65 74 20 74 68 65 20 61 63 63 65    * Set the acce
5ee0: 73 73 20 6b 65 79 20 74 6f 20 73 68 6f 77 2f 68  ss key to show/h
5ef0: 69 64 65 20 74 68 65 20 69 6e 6c 69 6e 65 20 63  ide the inline c
5f00: 6f 6e 73 6f 6c 65 20 28 64 65 66 61 75 6c 74 20  onsole (default 
5f10: 26 71 75 6f 74 65 3b 64 26 71 75 6f 74 65 3b 29  &quote;d&quote;)
5f20: 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6b  ..    * @param k
5f30: 65 79 20 61 63 63 65 73 73 20 6b 65 79 20 74 6f  ey access key to
5f40: 20 73 68 6f 77 2f 68 69 64 65 20 74 68 65 20 69   show/hide the i
5f50: 6e 6c 69 6e 65 20 63 6f 6e 73 6f 6c 65 0d 0a 20  nline console.. 
5f60: 20 20 20 2a 2f 09 0d 0a 20 20 20 20 73 65 74 41     */...    setA
5f70: 63 63 65 73 73 4b 65 79 20 3a 20 66 75 6e 63 74  ccessKey : funct
5f80: 69 6f 6e 28 6b 65 79 29 20 7b 0d 0a 20 20 20 20  ion(key) {..    
5f90: 20 20 20 20 74 68 69 73 2e 61 63 63 65 73 73 6b      this.accessk
5fa0: 65 79 20 3d 20 6b 65 79 3b 0d 0a 20 20 20 20 7d  ey = key;..    }
5fb0: 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a  ,..    ..    /**
5fc0: 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74 65  ..    * @private
5fd0: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 69 6e  ..    */..    in
5fe0: 69 74 69 61 6c 69 7a 65 20 3a 20 66 75 6e 63 74  itialize : funct
5ff0: 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ion() {..       
6000: 20 0d 0a 20 20 20 20 20 20 20 20 69 66 28 21 74   ..        if(!t
6010: 68 69 73 2e 69 6e 6c 69 6e 65 29 20 7b 0d 0a 20  his.inline) {.. 
6020: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 64             var d
6030: 6f 63 20 3d 20 6e 75 6c 6c 3b 09 0d 0a 20 20 20  oc = null;...   
6040: 20 20 20 20 20 20 20 20 20 76 61 72 20 77 69 6e           var win
6050: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
6060: 20 20 20 20 20 20 77 69 6e 64 6f 77 2e 74 6f 70        window.top
6070: 2e 63 6f 6e 73 6f 6c 65 57 69 6e 64 6f 77 20 3d  .consoleWindow =
6080: 20 77 69 6e 64 6f 77 2e 6f 70 65 6e 28 22 22 2c   window.open("",
6090: 20 74 68 69 73 2e 6c 6f 67 67 65 72 2e 63 61 74   this.logger.cat
60a0: 65 67 6f 72 79 2c 20 0d 0a 20 20 20 20 20 20 20  egory, ..       
60b0: 20 20 20 20 20 20 20 20 20 22 6c 65 66 74 3d 30           "left=0
60c0: 2c 74 6f 70 3d 30 2c 77 69 64 74 68 3d 37 30 30  ,top=0,width=700
60d0: 2c 68 65 69 67 68 74 3d 37 30 30 2c 73 63 72 6f  ,height=700,scro
60e0: 6c 6c 62 61 72 73 3d 6e 6f 2c 73 74 61 74 75 73  llbars=no,status
60f0: 3d 6e 6f 2c 72 65 73 69 7a 61 62 6c 65 3d 79 65  =no,resizable=ye
6100: 73 3b 74 6f 6f 6c 62 61 72 3d 6e 6f 22 29 3b 0d  s;toolbar=no");.
6110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e  .            win
6120: 64 6f 77 2e 74 6f 70 2e 63 6f 6e 73 6f 6c 65 57  dow.top.consoleW
6130: 69 6e 64 6f 77 2e 6f 70 65 6e 65 72 20 3d 20 73  indow.opener = s
6140: 65 6c 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  elf;..          
6150: 20 20 77 69 6e 20 3d 20 77 69 6e 64 6f 77 2e 74    win = window.t
6160: 6f 70 2e 63 6f 6e 73 6f 6c 65 57 69 6e 64 6f 77  op.consoleWindow
6170: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6190: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20     ..           
61a0: 20 69 66 20 28 21 77 69 6e 29 20 7b 20 0d 0a 20   if (!win) { .. 
61b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
61c0: 68 69 73 2e 70 6f 70 75 70 42 6c 6f 63 6b 65 72  his.popupBlocker
61d0: 3d 74 72 75 65 3b 20 0d 0a 20 20 20 20 20 20 20  =true; ..       
61e0: 20 20 20 20 20 20 20 20 20 61 6c 65 72 74 28 22           alert("
61f0: 50 6f 70 75 70 20 77 69 6e 64 6f 77 20 6d 61 6e  Popup window man
6200: 61 67 65 72 20 62 6c 6f 63 6b 69 6e 67 20 74 68  ager blocking th
6210: 65 20 4c 6f 67 34 6a 73 20 70 6f 70 75 70 20 77  e Log4js popup w
6220: 69 6e 64 6f 77 20 74 6f 20 62 65 64 69 73 70 6c  indow to bedispl
6230: 61 79 65 64 2e 5c 6e 5c 6e 22 20 0d 0a 20 20 20  ayed.\n\n" ..   
6240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6250: 20 2b 20 22 50 6c 65 61 73 65 20 64 69 73 61 62   + "Please disab
6260: 6c 65 64 20 74 68 69 73 20 74 6f 20 70 72 6f 70  led this to prop
6270: 65 72 6c 79 20 73 65 65 20 6c 6f 67 67 65 64 20  erly see logged 
6280: 65 76 65 6e 74 73 2e 22 29 3b 20 20 0d 0a 20 20  events.");  ..  
6290: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
62a0: 20 7b 09 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   {.....         
62b0: 20 20 20 20 20 20 20 64 6f 63 20 3d 20 77 69 6e         doc = win
62c0: 2e 64 6f 63 75 6d 65 6e 74 3b 0d 0a 20 20 20 20  .document;..    
62d0: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 2e              doc.
62e0: 6f 70 65 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20  open();..       
62f0: 20 20 20 20 20 20 20 20 20 64 6f 63 2e 77 72 69           doc.wri
6300: 74 65 28 22 3c 21 44 4f 43 54 59 50 45 20 68 74  te("<!DOCTYPE ht
6310: 6d 6c 20 50 55 42 4c 49 43 20 2d 2f 2f 57 33 43  ml PUBLIC -//W3C
6320: 2f 2f 44 54 44 20 58 48 54 4d 4c 20 31 2e 30 20  //DTD XHTML 1.0 
6330: 54 72 61 6e 73 69 74 69 6f 6e 61 6c 2f 2f 45 4e  Transitional//EN
6340: 20 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   ");..          
6350: 20 20 20 20 20 20 64 6f 63 2e 77 72 69 74 65 28        doc.write(
6360: 22 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33  "  http://www.w3
6370: 2e 6f 72 67 2f 54 52 2f 78 68 74 6d 6c 31 2f 44  .org/TR/xhtml1/D
6380: 54 44 2f 78 68 74 6d 6c 31 2d 74 72 61 6e 73 69  TD/xhtml1-transi
6390: 74 69 6f 6e 61 6c 2e 64 74 64 3e 5c 6e 5c 6e 22  tional.dtd>\n\n"
63a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
63b0: 20 20 20 20 64 6f 63 2e 77 72 69 74 65 28 22 3c      doc.write("<
63c0: 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c 74 69 74 6c  html><head><titl
63d0: 65 3e 4c 6f 67 34 6a 73 20 2d 20 22 20 2b 20 74  e>Log4js - " + t
63e0: 68 69 73 2e 6c 6f 67 67 65 72 2e 63 61 74 65 67  his.logger.categ
63f0: 6f 72 79 20 2b 20 22 3c 2f 74 69 74 6c 65 3e 5c  ory + "</title>\
6400: 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  n");..          
6410: 20 20 20 20 20 20 64 6f 63 2e 77 72 69 74 65 28        doc.write(
6420: 22 3c 2f 68 65 61 64 3e 3c 62 6f 64 79 20 73 74  "</head><body st
6430: 79 6c 65 3d 5c 22 62 61 63 6b 67 72 6f 75 6e 64  yle=\"background
6440: 2d 63 6f 6c 6f 72 3a 64 61 72 6b 67 72 61 79 5c  -color:darkgray\
6450: 22 3e 3c 2f 62 6f 64 79 3e 5c 6e 22 29 3b 0d 0a  "></body>\n");..
6460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6470: 77 69 6e 2e 62 6c 75 72 28 29 3b 0d 0a 20 20 20  win.blur();..   
6480: 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e               win
6490: 2e 66 6f 63 75 73 28 29 3b 0d 0a 20 20 20 20 20  .focus();..     
64a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
64b0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
64c0: 20 20 20 20 74 68 69 73 2e 64 6f 63 52 65 66 65      this.docRefe
64d0: 72 65 6e 63 65 20 3d 20 64 6f 63 3b 0d 0a 20 20  rence = doc;..  
64e0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 77            this.w
64f0: 69 6e 52 65 66 65 72 65 6e 63 65 20 3d 20 77 69  inReference = wi
6500: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c  n;..        } el
6510: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
6520: 20 20 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65    this.docRefere
6530: 6e 63 65 20 3d 20 64 6f 63 75 6d 65 6e 74 3b 0d  nce = document;.
6540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
6550: 73 2e 77 69 6e 52 65 66 65 72 65 6e 63 65 20 3d  s.winReference =
6560: 20 77 69 6e 64 6f 77 3b 09 09 09 0d 0a 20 20 20   window;.....   
6570: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
6580: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
6590: 20 20 74 68 69 73 2e 6f 75 74 70 75 74 43 6f 75    this.outputCou
65a0: 6e 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20  nt = 0;..       
65b0: 20 74 68 69 73 2e 74 61 67 50 61 74 74 65 72 6e   this.tagPattern
65c0: 20 3d 20 22 2e 2a 22 3b 0d 0a 20 20 20 20 20 20   = ".*";..      
65d0: 20 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 49    ..        // I
65e0: 20 68 61 74 65 20 77 72 69 74 69 6e 67 20 6a 61   hate writing ja
65f0: 76 61 73 63 72 69 70 74 20 69 6e 20 48 54 4d 4c  vascript in HTML
6600: 2e 2e 2e 20 62 75 74 20 77 68 61 74 27 73 20 61  ... but what's a
6610: 20 62 65 74 74 65 72 20 61 6c 74 65 72 6e 61 74   better alternat
6620: 69 76 65 0d 0a 20 20 20 20 20 20 20 20 74 68 69  ive..        thi
6630: 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 20 3d 20 74  s.logElement = t
6640: 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65  his.docReference
6650: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27  .createElement('
6660: 64 69 76 27 29 3b 0d 0a 20 20 20 20 20 20 20 20  div');..        
6670: 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63  this.docReferenc
6680: 65 2e 62 6f 64 79 2e 61 70 70 65 6e 64 43 68 69  e.body.appendChi
6690: 6c 64 28 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65  ld(this.logEleme
66a0: 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68  nt);..        th
66b0: 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e 73 74  is.logElement.st
66c0: 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 27 6e  yle.display = 'n
66d0: 6f 6e 65 27 3b 0d 0a 20 20 20 20 20 20 20 20 0d  one';..        .
66e0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f  .        this.lo
66f0: 67 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 70  gElement.style.p
6700: 6f 73 69 74 69 6f 6e 20 3d 20 22 61 62 73 6f 6c  osition = "absol
6710: 75 74 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 74  ute";..        t
6720: 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e 73  his.logElement.s
6730: 74 79 6c 65 2e 6c 65 66 74 20 3d 20 27 30 70 78  tyle.left = '0px
6740: 27 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73  ';..        this
6750: 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e 73 74 79 6c  .logElement.styl
6760: 65 2e 77 69 64 74 68 20 3d 20 27 31 30 30 25 27  e.width = '100%'
6770: 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 20 20 20  ;..    ..       
6780: 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74   this.logElement
6790: 2e 73 74 79 6c 65 2e 74 65 78 74 41 6c 69 67 6e  .style.textAlign
67a0: 20 3d 20 22 6c 65 66 74 22 3b 0d 0a 20 20 20 20   = "left";..    
67b0: 20 20 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d      this.logElem
67c0: 65 6e 74 2e 73 74 79 6c 65 2e 66 6f 6e 74 46 61  ent.style.fontFa
67d0: 6d 69 6c 79 20 3d 20 22 6c 75 63 69 64 61 20 63  mily = "lucida c
67e0: 6f 6e 73 6f 6c 65 22 3b 0d 0a 20 20 20 20 20 20  onsole";..      
67f0: 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e    this.logElemen
6800: 74 2e 73 74 79 6c 65 2e 66 6f 6e 74 53 69 7a 65  t.style.fontSize
6810: 20 3d 20 22 31 30 30 25 22 3b 0d 0a 20 20 20 20   = "100%";..    
6820: 20 20 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d      this.logElem
6830: 65 6e 74 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72  ent.style.backgr
6840: 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 27 64 61 72  oundColor = 'dar
6850: 6b 67 72 61 79 27 3b 20 20 20 20 20 20 0d 0a 20  kgray';      .. 
6860: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 45         this.logE
6870: 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 6f 70 61  lement.style.opa
6880: 63 69 74 79 20 3d 20 30 2e 39 3b 0d 0a 20 20 20  city = 0.9;..   
6890: 20 20 20 20 20 74 68 69 73 2e 6c 6f 67 45 6c 65       this.logEle
68a0: 6d 65 6e 74 2e 73 74 79 6c 65 2e 7a 49 6e 64 65  ment.style.zInde
68b0: 78 20 3d 20 32 30 30 30 3b 20 0d 0a 20 20 20 20  x = 2000; ..    
68c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 64 64  ..        // Add
68d0: 20 74 6f 6f 6c 62 61 72 45 6c 65 6d 65 6e 74 0d   toolbarElement.
68e0: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 6f  .        this.to
68f0: 6f 6c 62 61 72 45 6c 65 6d 65 6e 74 20 3d 20 74  olbarElement = t
6900: 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65  his.docReference
6910: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27  .createElement('
6920: 64 69 76 27 29 3b 0d 0a 20 20 20 20 20 20 20 20  div');..        
6930: 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e  this.logElement.
6940: 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73  appendChild(this
6950: 2e 74 6f 6f 6c 62 61 72 45 6c 65 6d 65 6e 74 29  .toolbarElement)
6960: 3b 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20  ;     ..        
6970: 74 68 69 73 2e 74 6f 6f 6c 62 61 72 45 6c 65 6d  this.toolbarElem
6980: 65 6e 74 2e 73 74 79 6c 65 2e 70 61 64 64 69 6e  ent.style.paddin
6990: 67 20 3d 20 22 30 20 30 20 30 20 32 70 78 22 3b  g = "0 0 0 2px";
69a0: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20  ..    ..        
69b0: 2f 2f 20 41 64 64 20 62 75 74 74 6f 6e 73 20 20  // Add buttons  
69c0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
69d0: 74 68 69 73 2e 62 75 74 74 6f 6e 73 43 6f 6e 74  this.buttonsCont
69e0: 61 69 6e 65 72 45 6c 65 6d 65 6e 74 20 3d 20 74  ainerElement = t
69f0: 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65  his.docReference
6a00: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27  .createElement('
6a10: 73 70 61 6e 27 29 3b 0d 0a 20 20 20 20 20 20 20  span');..       
6a20: 20 74 68 69 73 2e 74 6f 6f 6c 62 61 72 45 6c 65   this.toolbarEle
6a30: 6d 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64  ment.appendChild
6a40: 28 74 68 69 73 2e 62 75 74 74 6f 6e 73 43 6f 6e  (this.buttonsCon
6a50: 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 29 3b 20  tainerElement); 
6a60: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20  ..    ..        
6a70: 69 66 28 74 68 69 73 2e 69 6e 6c 69 6e 65 29 20  if(this.inline) 
6a80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76  {..            v
6a90: 61 72 20 63 6c 6f 73 65 42 75 74 74 6f 6e 20 3d  ar closeButton =
6aa0: 20 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e   this.docReferen
6ab0: 63 65 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74  ce.createElement
6ac0: 28 27 62 75 74 74 6f 6e 27 29 3b 0d 0a 20 20 20  ('button');..   
6ad0: 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 42 75           closeBu
6ae0: 74 74 6f 6e 2e 73 74 79 6c 65 2e 63 73 73 46 6c  tton.style.cssFl
6af0: 6f 61 74 20 3d 20 22 72 69 67 68 74 22 3b 0d 0a  oat = "right";..
6b00: 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73              clos
6b10: 65 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 73 74  eButton.style.st
6b20: 79 6c 65 46 6c 6f 61 74 20 3d 20 22 72 69 67 68  yleFloat = "righ
6b30: 74 22 3b 20 2f 2f 20 49 45 20 64 6f 6d 20 62 75  t"; // IE dom bu
6b40: 67 2e 2e 2e 64 6f 65 73 6e 27 74 20 75 6e 64 65  g...doesn't unde
6b50: 72 73 74 61 6e 64 20 63 73 73 46 6c 6f 61 74 0d  rstand cssFloat.
6b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f  .            clo
6b70: 73 65 42 75 74 74 6f 6e 2e 73 74 79 6c 65 2e 63  seButton.style.c
6b80: 6f 6c 6f 72 20 3d 20 22 62 6c 61 63 6b 22 3b 0d  olor = "black";.
6b90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f  .            clo
6ba0: 73 65 42 75 74 74 6f 6e 2e 69 6e 6e 65 72 48 54  seButton.innerHT
6bb0: 4d 4c 20 3d 20 22 63 6c 6f 73 65 22 3b 0d 0a 20  ML = "close";.. 
6bc0: 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65             close
6bd0: 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20 3d  Button.onclick =
6be0: 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28 74 68 69   Log4js.bind(thi
6bf0: 73 2e 74 6f 67 67 6c 65 2c 20 74 68 69 73 29 3b  s.toggle, this);
6c00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
6c10: 69 73 2e 62 75 74 74 6f 6e 73 43 6f 6e 74 61 69  is.buttonsContai
6c20: 6e 65 72 45 6c 65 6d 65 6e 74 2e 61 70 70 65 6e  nerElement.appen
6c30: 64 43 68 69 6c 64 28 63 6c 6f 73 65 42 75 74 74  dChild(closeButt
6c40: 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  on);..        }.
6c50: 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20  .        ..     
6c60: 20 20 20 76 61 72 20 63 6c 65 61 72 42 75 74 74     var clearButt
6c70: 6f 6e 20 3d 20 74 68 69 73 2e 64 6f 63 52 65 66  on = this.docRef
6c80: 65 72 65 6e 63 65 2e 63 72 65 61 74 65 45 6c 65  erence.createEle
6c90: 6d 65 6e 74 28 27 62 75 74 74 6f 6e 27 29 3b 0d  ment('button');.
6ca0: 0a 20 20 20 20 20 20 20 20 63 6c 65 61 72 42 75  .        clearBu
6cb0: 74 74 6f 6e 2e 73 74 79 6c 65 2e 63 73 73 46 6c  tton.style.cssFl
6cc0: 6f 61 74 20 3d 20 22 72 69 67 68 74 22 3b 0d 0a  oat = "right";..
6cd0: 20 20 20 20 20 20 20 20 63 6c 65 61 72 42 75 74          clearBut
6ce0: 74 6f 6e 2e 73 74 79 6c 65 2e 73 74 79 6c 65 46  ton.style.styleF
6cf0: 6c 6f 61 74 20 3d 20 22 72 69 67 68 74 22 3b 20  loat = "right"; 
6d00: 2f 2f 20 49 45 20 64 6f 6d 20 62 75 67 2e 2e 2e  // IE dom bug...
6d10: 64 6f 65 73 6e 27 74 20 75 6e 64 65 72 73 74 61  doesn't understa
6d20: 6e 64 20 63 73 73 46 6c 6f 61 74 0d 0a 20 20 20  nd cssFloat..   
6d30: 20 20 20 20 20 63 6c 65 61 72 42 75 74 74 6f 6e       clearButton
6d40: 2e 73 74 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22  .style.color = "
6d50: 62 6c 61 63 6b 22 3b 0d 0a 20 20 20 20 20 20 20  black";..       
6d60: 20 63 6c 65 61 72 42 75 74 74 6f 6e 2e 69 6e 6e   clearButton.inn
6d70: 65 72 48 54 4d 4c 20 3d 20 22 63 6c 65 61 72 22  erHTML = "clear"
6d80: 3b 0d 0a 20 20 20 20 20 20 20 20 63 6c 65 61 72  ;..        clear
6d90: 42 75 74 74 6f 6e 2e 6f 6e 63 6c 69 63 6b 20 3d  Button.onclick =
6da0: 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28 74 68 69   Log4js.bind(thi
6db0: 73 2e 6c 6f 67 67 65 72 2e 63 6c 65 61 72 2c 20  s.logger.clear, 
6dc0: 74 68 69 73 2e 6c 6f 67 67 65 72 29 3b 0d 0a 20  this.logger);.. 
6dd0: 20 20 20 20 20 20 20 74 68 69 73 2e 62 75 74 74         this.butt
6de0: 6f 6e 73 43 6f 6e 74 61 69 6e 65 72 45 6c 65 6d  onsContainerElem
6df0: 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ent.appendChild(
6e00: 63 6c 65 61 72 42 75 74 74 6f 6e 29 3b 0d 0a 20  clearButton);.. 
6e10: 20 20 20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f     ....        /
6e20: 2f 41 64 64 20 43 61 74 65 67 6f 72 79 4e 61 6d  /Add CategoryNam
6e30: 65 20 61 6e 64 20 20 4c 65 76 65 6c 20 46 69 6c  e and  Level Fil
6e40: 74 65 72 0d 0a 20 20 20 20 20 20 20 20 74 68 69  ter..        thi
6e50: 73 2e 74 61 67 46 69 6c 74 65 72 43 6f 6e 74 61  s.tagFilterConta
6e60: 69 6e 65 72 45 6c 65 6d 65 6e 74 20 3d 20 74 68  inerElement = th
6e70: 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65 2e  is.docReference.
6e80: 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27 73  createElement('s
6e90: 70 61 6e 27 29 3b 0d 0a 20 20 20 20 20 20 20 20  pan');..        
6ea0: 74 68 69 73 2e 74 6f 6f 6c 62 61 72 45 6c 65 6d  this.toolbarElem
6eb0: 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ent.appendChild(
6ec0: 74 68 69 73 2e 74 61 67 46 69 6c 74 65 72 43 6f  this.tagFilterCo
6ed0: 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 29 3b  ntainerElement);
6ee0: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 74  ..        this.t
6ef0: 61 67 46 69 6c 74 65 72 43 6f 6e 74 61 69 6e 65  agFilterContaine
6f00: 72 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 63  rElement.style.c
6f10: 73 73 46 6c 6f 61 74 20 3d 20 27 6c 65 66 74 27  ssFloat = 'left'
6f20: 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ;..        ..   
6f30: 20 20 20 20 20 74 68 69 73 2e 74 61 67 46 69 6c       this.tagFil
6f40: 74 65 72 43 6f 6e 74 61 69 6e 65 72 45 6c 65 6d  terContainerElem
6f50: 65 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28  ent.appendChild(
6f60: 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63  this.docReferenc
6f70: 65 2e 63 72 65 61 74 65 54 65 78 74 4e 6f 64 65  e.createTextNode
6f80: 28 22 4c 6f 67 34 6a 73 20 2d 20 22 20 2b 20 74  ("Log4js - " + t
6f90: 68 69 73 2e 6c 6f 67 67 65 72 2e 63 61 74 65 67  his.logger.categ
6fa0: 6f 72 79 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ory));..        
6fb0: 74 68 69 73 2e 74 61 67 46 69 6c 74 65 72 43 6f  this.tagFilterCo
6fc0: 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 2e 61  ntainerElement.a
6fd0: 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e  ppendChild(this.
6fe0: 64 6f 63 52 65 66 65 72 65 6e 63 65 2e 63 72 65  docReference.cre
6ff0: 61 74 65 54 65 78 74 4e 6f 64 65 28 22 20 7c 20  ateTextNode(" | 
7000: 4c 65 76 65 6c 20 46 69 6c 74 65 72 3a 20 22 29  Level Filter: ")
7010: 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20  );..        ..  
7020: 20 20 20 20 20 20 74 68 69 73 2e 74 61 67 46 69        this.tagFi
7030: 6c 74 65 72 45 6c 65 6d 65 6e 74 20 3d 20 74 68  lterElement = th
7040: 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65 2e  is.docReference.
7050: 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27 69  createElement('i
7060: 6e 70 75 74 27 29 3b 0d 0a 20 20 20 20 20 20 20  nput');..       
7070: 20 74 68 69 73 2e 74 61 67 46 69 6c 74 65 72 43   this.tagFilterC
7080: 6f 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 2e  ontainerElement.
7090: 61 70 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73  appendChild(this
70a0: 2e 74 61 67 46 69 6c 74 65 72 45 6c 65 6d 65 6e  .tagFilterElemen
70b0: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69  t);..        thi
70c0: 73 2e 74 61 67 46 69 6c 74 65 72 45 6c 65 6d 65  s.tagFilterEleme
70d0: 6e 74 2e 73 74 79 6c 65 2e 77 69 64 74 68 20 3d  nt.style.width =
70e0: 20 27 32 30 30 70 78 27 3b 20 20 20 20 20 20 20   '200px';       
70f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20               .. 
7100: 20 20 20 20 20 20 20 74 68 69 73 2e 74 61 67 46         this.tagF
7110: 69 6c 74 65 72 45 6c 65 6d 65 6e 74 2e 76 61 6c  ilterElement.val
7120: 75 65 20 3d 20 74 68 69 73 2e 74 61 67 50 61 74  ue = this.tagPat
7130: 74 65 72 6e 3b 20 20 20 20 0d 0a 20 20 20 20 20  tern;    ..     
7140: 20 20 20 74 68 69 73 2e 74 61 67 46 69 6c 74 65     this.tagFilte
7150: 72 45 6c 65 6d 65 6e 74 2e 73 65 74 41 74 74 72  rElement.setAttr
7160: 69 62 75 74 65 28 27 61 75 74 6f 63 6f 6d 70 6c  ibute('autocompl
7170: 65 74 65 27 2c 20 27 6f 66 66 27 29 3b 20 2f 2f  ete', 'off'); //
7180: 20 53 6f 20 46 69 72 65 66 6f 78 20 64 6f 65 73   So Firefox does
7190: 6e 27 74 20 66 6c 69 70 20 6f 75 74 0d 0a 20 20  n't flip out..  
71a0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
71b0: 4c 6f 67 34 6a 73 2e 61 74 74 61 63 68 45 76 65  Log4js.attachEve
71c0: 6e 74 28 74 68 69 73 2e 74 61 67 46 69 6c 74 65  nt(this.tagFilte
71d0: 72 45 6c 65 6d 65 6e 74 2c 20 27 6b 65 79 75 70  rElement, 'keyup
71e0: 27 2c 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28 74  ', Log4js.bind(t
71f0: 68 69 73 2e 75 70 64 61 74 65 54 61 67 73 2c 20  his.updateTags, 
7200: 74 68 69 73 29 29 3b 0d 0a 20 20 20 20 20 20 20  this));..       
7210: 20 4c 6f 67 34 6a 73 2e 61 74 74 61 63 68 45 76   Log4js.attachEv
7220: 65 6e 74 28 74 68 69 73 2e 74 61 67 46 69 6c 74  ent(this.tagFilt
7230: 65 72 45 6c 65 6d 65 6e 74 2c 20 27 63 6c 69 63  erElement, 'clic
7240: 6b 27 2c 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28  k', Log4js.bind(
7250: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 74 68 69   function() {thi
7260: 73 2e 74 61 67 46 69 6c 74 65 72 45 6c 65 6d 65  s.tagFilterEleme
7270: 6e 74 2e 73 65 6c 65 63 74 28 29 3b 7d 2c 20 74  nt.select();}, t
7280: 68 69 73 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  his));..        
7290: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 64 64  ..        // Add
72a0: 20 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74 0d 0a   outputElement..
72b0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74          this.out
72c0: 70 75 74 45 6c 65 6d 65 6e 74 20 3d 20 74 68 69  putElement = thi
72d0: 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65 2e 63  s.docReference.c
72e0: 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27 64 69  reateElement('di
72f0: 76 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68  v');..        th
7300: 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74 2e 61 70  is.logElement.ap
7310: 70 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 6f  pendChild(this.o
7320: 75 74 70 75 74 45 6c 65 6d 65 6e 74 29 3b 20 20  utputElement);  
7330: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f  ..        this.o
7340: 75 74 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74 79  utputElement.sty
7350: 6c 65 2e 6f 76 65 72 66 6c 6f 77 20 3d 20 22 61  le.overflow = "a
7360: 75 74 6f 22 3b 20 20 20 20 20 20 20 20 20 20 20  uto";           
7370: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 74 68 69     ..        thi
7380: 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74 2e  s.outputElement.
7390: 73 74 79 6c 65 2e 63 6c 65 61 72 20 3d 20 22 62  style.clear = "b
73a0: 6f 74 68 22 3b 0d 0a 20 20 20 20 20 20 20 20 74  oth";..        t
73b0: 68 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e  his.outputElemen
73c0: 74 2e 73 74 79 6c 65 2e 68 65 69 67 68 74 20 3d  t.style.height =
73d0: 20 28 74 68 69 73 2e 69 6e 6c 69 6e 65 29 20 3f   (this.inline) ?
73e0: 20 28 22 32 30 30 70 78 22 29 3a 28 22 36 35 30   ("200px"):("650
73f0: 70 78 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 74  px");..        t
7400: 68 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e  his.outputElemen
7410: 74 2e 73 74 79 6c 65 2e 77 69 64 74 68 20 3d 20  t.style.width = 
7420: 22 31 30 30 25 22 3b 0d 0a 20 20 20 20 20 20 20  "100%";..       
7430: 20 74 68 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d   this.outputElem
7440: 65 6e 74 2e 73 74 79 6c 65 2e 62 61 63 6b 67 72  ent.style.backgr
7450: 6f 75 6e 64 43 6f 6c 6f 72 20 3d 20 27 62 6c 61  oundColor = 'bla
7460: 63 6b 27 3b 20 0d 0a 20 20 20 20 20 20 20 20 20  ck'; ..         
7470: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
7480: 20 74 68 69 73 2e 69 6e 70 75 74 43 6f 6e 74 61   this.inputConta
7490: 69 6e 65 72 45 6c 65 6d 65 6e 74 20 3d 20 74 68  inerElement = th
74a0: 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65 2e  is.docReference.
74b0: 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27 64  createElement('d
74c0: 69 76 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 74  iv');..        t
74d0: 68 69 73 2e 69 6e 70 75 74 43 6f 6e 74 61 69 6e  his.inputContain
74e0: 65 72 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e  erElement.style.
74f0: 77 69 64 74 68 20 3d 20 22 31 30 30 25 22 3b 0d  width = "100%";.
7500: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f  .        this.lo
7510: 67 45 6c 65 6d 65 6e 74 2e 61 70 70 65 6e 64 43  gElement.appendC
7520: 68 69 6c 64 28 74 68 69 73 2e 69 6e 70 75 74 43  hild(this.inputC
7530: 6f 6e 74 61 69 6e 65 72 45 6c 65 6d 65 6e 74 29  ontainerElement)
7540: 3b 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20  ;      ..       
7550: 20 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e   ..        this.
7560: 69 6e 70 75 74 45 6c 65 6d 65 6e 74 20 3d 20 74  inputElement = t
7570: 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65  his.docReference
7580: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 27  .createElement('
7590: 69 6e 70 75 74 27 29 3b 0d 0a 20 20 20 20 20 20  input');..      
75a0: 20 20 74 68 69 73 2e 69 6e 70 75 74 43 6f 6e 74    this.inputCont
75b0: 61 69 6e 65 72 45 6c 65 6d 65 6e 74 2e 61 70 70  ainerElement.app
75c0: 65 6e 64 43 68 69 6c 64 28 74 68 69 73 2e 69 6e  endChild(this.in
75d0: 70 75 74 45 6c 65 6d 65 6e 74 29 3b 20 20 0d 0a  putElement);  ..
75e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70          this.inp
75f0: 75 74 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e  utElement.style.
7600: 77 69 64 74 68 20 3d 20 27 31 30 30 25 27 3b 0d  width = '100%';.
7610: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e  .        this.in
7620: 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65  putElement.style
7630: 2e 62 6f 72 64 65 72 57 69 64 74 68 20 3d 20 27  .borderWidth = '
7640: 30 70 78 27 3b 20 2f 2f 20 49 6e 70 75 74 73 20  0px'; // Inputs 
7650: 77 69 74 68 20 31 30 30 25 20 77 69 64 74 68 20  with 100% width 
7660: 61 6c 77 61 79 73 20 73 65 65 6d 20 74 6f 20 62  always seem to b
7670: 65 20 74 6f 6f 20 6c 61 72 67 65 20 28 49 20 48  e too large (I H
7680: 41 54 45 20 54 48 45 4d 29 20 74 68 65 79 20 6f  ATE THEM) they o
7690: 6e 6c 79 20 77 6f 72 6b 20 69 66 20 74 68 65 20  nly work if the 
76a0: 62 6f 72 64 65 72 2c 20 6d 61 72 67 69 6e 20 61  border, margin a
76b0: 6e 64 20 70 61 64 64 69 6e 67 20 61 72 65 20 30  nd padding are 0
76c0: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 69  ..        this.i
76d0: 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74 79 6c  nputElement.styl
76e0: 65 2e 6d 61 72 67 69 6e 20 3d 20 27 30 70 78 27  e.margin = '0px'
76f0: 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ;..        this.
7700: 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 73 74 79  inputElement.sty
7710: 6c 65 2e 70 61 64 64 69 6e 67 20 3d 20 27 30 70  le.padding = '0p
7720: 78 27 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69  x';..        thi
7730: 73 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 76  s.inputElement.v
7740: 61 6c 75 65 20 3d 20 27 54 79 70 65 20 63 6f 6d  alue = 'Type com
7750: 6d 61 6e 64 20 68 65 72 65 27 3b 20 0d 0a 20 20  mand here'; ..  
7760: 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74        this.input
7770: 45 6c 65 6d 65 6e 74 2e 73 65 74 41 74 74 72 69  Element.setAttri
7780: 62 75 74 65 28 27 61 75 74 6f 63 6f 6d 70 6c 65  bute('autocomple
7790: 74 65 27 2c 20 27 6f 66 66 27 29 3b 20 2f 2f 20  te', 'off'); // 
77a0: 53 6f 20 46 69 72 65 66 6f 78 20 64 6f 65 73 6e  So Firefox doesn
77b0: 27 74 20 66 6c 69 70 20 6f 75 74 0d 0a 20 20 20  't flip out..   
77c0: 20 0d 0a 20 20 20 20 20 20 20 20 4c 6f 67 34 6a   ..        Log4j
77d0: 73 2e 61 74 74 61 63 68 45 76 65 6e 74 28 74 68  s.attachEvent(th
77e0: 69 73 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2c  is.inputElement,
77f0: 20 27 6b 65 79 75 70 27 2c 20 4c 6f 67 34 6a 73   'keyup', Log4js
7800: 2e 62 69 6e 64 28 74 68 69 73 2e 68 61 6e 64 6c  .bind(this.handl
7810: 65 49 6e 70 75 74 2c 20 74 68 69 73 29 29 3b 0d  eInput, this));.
7820: 0a 20 20 20 20 20 20 20 20 4c 6f 67 34 6a 73 2e  .        Log4js.
7830: 61 74 74 61 63 68 45 76 65 6e 74 28 74 68 69 73  attachEvent(this
7840: 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2c 20 27  .inputElement, '
7850: 63 6c 69 63 6b 27 2c 20 4c 6f 67 34 6a 73 2e 62  click', Log4js.b
7860: 69 6e 64 28 20 66 75 6e 63 74 69 6f 6e 28 29 20  ind( function() 
7870: 7b 74 68 69 73 2e 69 6e 70 75 74 45 6c 65 6d 65  {this.inputEleme
7880: 6e 74 2e 73 65 6c 65 63 74 28 29 3b 7d 2c 20 74  nt.select();}, t
7890: 68 69 73 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  his));..        
78a0: 0d 0a 20 20 20 20 20 20 20 20 69 66 28 74 68 69  ..        if(thi
78b0: 73 2e 69 6e 6c 69 6e 65 29 7b 0d 0a 20 20 20 20  s.inline){..    
78c0: 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77 2e 73          window.s
78d0: 65 74 49 6e 74 65 72 76 61 6c 28 4c 6f 67 34 6a  etInterval(Log4j
78e0: 73 2e 62 69 6e 64 28 74 68 69 73 2e 72 65 70 6f  s.bind(this.repo
78f0: 73 69 74 69 6f 6e 57 69 6e 64 6f 77 2c 20 74 68  sitionWindow, th
7900: 69 73 29 2c 20 35 30 30 29 3b 0d 0a 20 20 20 20  is), 500);..    
7910: 20 20 20 20 20 20 20 20 74 68 69 73 2e 72 65 70          this.rep
7920: 6f 73 69 74 69 6f 6e 57 69 6e 64 6f 77 28 29 3b  ositionWindow();
7930: 09 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
7940: 2f 20 41 6c 6c 6f 77 20 61 63 65 73 73 20 6b 65  / Allow acess ke
7950: 79 20 6c 69 6e 6b 20 20 20 20 20 20 20 20 20 20  y link          
7960: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61  ..            va
7970: 72 20 61 63 63 65 73 73 45 6c 65 6d 65 6e 74 20  r accessElement 
7980: 3d 20 74 68 69 73 2e 64 6f 63 52 65 66 65 72 65  = this.docRefere
7990: 6e 63 65 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e  nce.createElemen
79a0: 74 28 27 62 75 74 74 6f 6e 27 29 3b 0d 0a 20 20  t('button');..  
79b0: 20 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73            access
79c0: 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 70 6f  Element.style.po
79d0: 73 69 74 69 6f 6e 20 3d 20 22 61 62 73 6f 6c 75  sition = "absolu
79e0: 74 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  te";..          
79f0: 20 20 61 63 63 65 73 73 45 6c 65 6d 65 6e 74 2e    accessElement.
7a00: 73 74 79 6c 65 2e 74 6f 70 20 3d 20 22 2d 31 30  style.top = "-10
7a10: 30 70 78 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  0px";..         
7a20: 20 20 20 61 63 63 65 73 73 45 6c 65 6d 65 6e 74     accessElement
7a30: 2e 61 63 63 65 73 73 4b 65 79 20 3d 20 74 68 69  .accessKey = thi
7a40: 73 2e 61 63 63 65 73 73 6b 65 79 3b 0d 0a 20 20  s.accesskey;..  
7a50: 20 20 20 20 20 20 20 20 20 20 61 63 63 65 73 73            access
7a60: 45 6c 65 6d 65 6e 74 2e 6f 6e 63 6c 69 63 6b 20  Element.onclick 
7a70: 3d 20 4c 6f 67 34 6a 73 2e 62 69 6e 64 28 74 68  = Log4js.bind(th
7a80: 69 73 2e 74 6f 67 67 6c 65 2c 20 74 68 69 73 29  is.toggle, this)
7a90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
7aa0: 68 69 73 2e 64 6f 63 52 65 66 65 72 65 6e 63 65  his.docReference
7ab0: 2e 62 6f 64 79 2e 61 70 70 65 6e 64 43 68 69 6c  .body.appendChil
7ac0: 64 28 61 63 63 65 73 73 45 6c 65 6d 65 6e 74 29  d(accessElement)
7ad0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73  ;..        } els
7ae0: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e {..           
7af0: 20 74 68 69 73 2e 73 68 6f 77 28 29 3b 0d 0a 20   this.show();.. 
7b00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c         }..    },
7b10: 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a  ..    /**..    *
7b20: 20 73 68 6f 77 73 2f 68 69 64 65 20 61 6e 20 65   shows/hide an e
7b30: 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 2a 20 40 70  lement..    * @p
7b40: 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 20 40 72  rivate..    * @r
7b50: 65 74 75 72 6e 20 74 72 75 65 20 69 66 20 73 68  eturn true if sh
7b60: 6f 77 6e 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  own..    */..   
7b70: 20 74 6f 67 67 6c 65 20 3a 20 66 75 6e 63 74 69   toggle : functi
7b80: 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  on() {..        
7b90: 69 66 20 28 74 68 69 73 2e 6c 6f 67 45 6c 65 6d  if (this.logElem
7ba0: 65 6e 74 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61  ent.style.displa
7bb0: 79 20 3d 3d 20 27 6e 6f 6e 65 27 29 20 7b 0d 0a  y == 'none') {..
7bc0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
7bd0: 2e 73 68 6f 77 28 29 3b 0d 0a 20 20 20 20 20 20  .show();..      
7be0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
7bf0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c  e;..        } el
7c00: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
7c10: 20 20 74 68 69 73 2e 68 69 64 65 28 29 3b 0d 0a    this.hide();..
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
7c30: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
7c40: 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 20 0d 0a 20     }..    }, .. 
7c50: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 70     /**..    * @p
7c60: 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a  rivate..    */..
7c70: 20 20 20 20 73 68 6f 77 20 3a 20 66 75 6e 63 74      show : funct
7c80: 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ion() {..       
7c90: 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74   this.logElement
7ca0: 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d  .style.display =
7cb0: 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20 74 68   '';..        th
7cc0: 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74  is.outputElement
7cd0: 2e 73 63 72 6f 6c 6c 54 6f 70 20 3d 20 74 68 69  .scrollTop = thi
7ce0: 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74 2e  s.outputElement.
7cf0: 73 63 72 6f 6c 6c 48 65 69 67 68 74 3b 20 2f 2f  scrollHeight; //
7d00: 20 53 63 72 6f 6c 6c 20 74 6f 20 62 6f 74 74 6f   Scroll to botto
7d10: 6d 20 77 68 65 6e 20 74 6f 67 67 6c 65 64 0d 0a  m when toggled..
7d20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 70          this.inp
7d30: 75 74 45 6c 65 6d 65 6e 74 2e 73 65 6c 65 63 74  utElement.select
7d40: 28 29 3b 0d 0a 20 20 20 20 7d 2c 20 0d 0a 20 20  ();..    }, ..  
7d50: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 70 72    /**..    * @pr
7d60: 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 09 0d 0a  ivate..    */...
7d70: 20 20 20 20 68 69 64 65 20 3a 20 66 75 6e 63 74      hide : funct
7d80: 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20  ion() {..       
7d90: 20 74 68 69 73 2e 6c 6f 67 45 6c 65 6d 65 6e 74   this.logElement
7da0: 2e 73 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d  .style.display =
7db0: 20 27 6e 6f 6e 65 27 3b 0d 0a 20 20 20 20 7d 2c   'none';..    },
7dc0: 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20    ..    /**..   
7dd0: 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 20 20   * @private..   
7de0: 20 2a 20 40 70 61 72 61 6d 20 6d 65 73 73 61 67   * @param messag
7df0: 65 0d 0a 20 20 20 20 2a 20 40 73 74 79 6c 65 0d  e..    * @style.
7e00: 0a 20 20 20 20 2a 2f 09 0d 0a 20 20 20 20 6f 75  .    */...    ou
7e10: 74 70 75 74 20 3a 20 66 75 6e 63 74 69 6f 6e 28  tput : function(
7e20: 6d 65 73 73 61 67 65 2c 20 73 74 79 6c 65 29 20  message, style) 
7e30: 7b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20  {....        // 
7e40: 49 66 20 77 65 20 61 72 65 20 61 74 20 74 68 65  If we are at the
7e50: 20 62 6f 74 74 6f 6d 20 6f 66 20 74 68 65 20 77   bottom of the w
7e60: 69 6e 64 6f 77 2c 20 74 68 65 6e 20 6b 65 65 70  indow, then keep
7e70: 20 73 63 72 6f 6c 6c 69 6e 67 20 77 69 74 68 20   scrolling with 
7e80: 74 68 65 20 6f 75 74 70 75 74 09 09 09 0d 0a 20  the output..... 
7e90: 20 20 20 20 20 20 20 76 61 72 20 73 68 6f 75 6c         var shoul
7ea0: 64 53 63 72 6f 6c 6c 20 3d 20 28 74 68 69 73 2e  dScroll = (this.
7eb0: 6f 75 74 70 75 74 45 6c 65 6d 65 6e 74 2e 73 63  outputElement.sc
7ec0: 72 6f 6c 6c 54 6f 70 20 2b 20 28 32 20 2a 20 74  rollTop + (2 * t
7ed0: 68 69 73 2e 6f 75 74 70 75 74 45 6c 65 6d 65 6e  his.outputElemen
7ee0: 74 2e 63 6c 69 65 6e 74 48 65 69 67 68 74 29 29  t.clientHeight))
7ef0: 20 3e 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 45   >= this.outputE
7f00: 6c 65 6d 65 6e 74 2e 73 63 72 6f 6c 6c 48 65 69  lement.scrollHei
7f10: 67 68 74 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a  ght;..        ..
7f20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74          this.out
7f30: 70 75 74 43 6f 75 6e 74 2b 2b 3b 0d 0a 20 20 20  putCount++;..   
7f40: 20 20 20 20 20 73 74 79 6c 65 20 3d 20 28 73 74       style = (st
7f50: 79 6c 65 20 3f 20 73 74 79 6c 65 20 2b 3d 20 27  yle ? style += '
7f60: 3b 27 20 3a 20 27 27 29 3b 09 20 20 09 0d 0a 20  ;' : '');.  ... 
7f70: 20 20 20 20 20 20 20 73 74 79 6c 65 20 2b 3d 20         style += 
7f80: 27 70 61 64 64 69 6e 67 3a 31 70 78 3b 6d 61 72  'padding:1px;mar
7f90: 67 69 6e 3a 30 20 30 20 35 70 78 20 30 27 3b 09  gin:0 0 5px 0';.
7fa0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 0d       ..        .
7fb0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
7fc0: 73 2e 6f 75 74 70 75 74 43 6f 75 6e 74 20 25 20  s.outputCount % 
7fd0: 32 20 3d 3d 3d 20 30 29 20 7b 0d 0a 20 20 20 20  2 === 0) {..    
7fe0: 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 2b 3d          style +=
7ff0: 20 22 3b 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f   ";background-co
8000: 6c 6f 72 3a 23 31 30 31 30 31 30 22 3b 0d 0a 20  lor:#101010";.. 
8010: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8020: 20 20 0d 0a 20 20 20 20 20 20 20 20 6d 65 73 73    ..        mess
8030: 61 67 65 20 3d 20 6d 65 73 73 61 67 65 20 7c 7c  age = message ||
8040: 20 22 75 6e 64 65 66 69 6e 65 64 22 3b 0d 0a 20   "undefined";.. 
8050: 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 3d         message =
8060: 20 6d 65 73 73 61 67 65 2e 74 6f 53 74 72 69 6e   message.toStrin
8070: 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a  g();..        ..
8080: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74          this.out
8090: 70 75 74 45 6c 65 6d 65 6e 74 2e 69 6e 6e 65 72  putElement.inner
80a0: 48 54 4d 4c 20 2b 3d 20 22 3c 70 72 65 20 73 74  HTML += "<pre st
80b0: 79 6c 65 3d 27 22 20 2b 20 73 74 79 6c 65 20 2b  yle='" + style +
80c0: 20 22 27 3e 22 20 2b 20 6d 65 73 73 61 67 65 20   "'>" + message 
80d0: 2b 20 22 3c 2f 70 72 65 3e 22 3b 0d 0a 20 20 20  + "</pre>";..   
80e0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 69       ..        i
80f0: 66 20 28 73 68 6f 75 6c 64 53 63 72 6f 6c 6c 29  f (shouldScroll)
8100: 20 7b 09 09 09 09 0d 0a 20 20 20 20 20 20 20 20   {......        
8110: 20 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74 45      this.outputE
8120: 6c 65 6d 65 6e 74 2e 73 63 72 6f 6c 6c 54 6f 70  lement.scrollTop
8130: 20 3d 20 74 68 69 73 2e 6f 75 74 70 75 74 45 6c   = this.outputEl
8140: 65 6d 65 6e 74 2e 73 63 72 6f 6c 6c 48 65 69 67  ement.scrollHeig
8150: 68 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ht;..        }..
8160: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20      },..    ..  
8170: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 70 72    /**..    * @pr
8180: 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ivate..    */.. 
8190: 20 20 20 75 70 64 61 74 65 54 61 67 73 20 3a 20     updateTags : 
81a0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
81b0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
81c0: 76 61 72 20 70 61 74 74 65 72 6e 20 3d 20 74 68  var pattern = th
81d0: 69 73 2e 74 61 67 46 69 6c 74 65 72 45 6c 65 6d  is.tagFilterElem
81e0: 65 6e 74 2e 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ent.value;..    
81f0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68  ..        if (th
8200: 69 73 2e 74 61 67 50 61 74 74 65 72 6e 20 3d 3d  is.tagPattern ==
8210: 20 70 61 74 74 65 72 6e 29 20 7b 0d 0a 20 20 20   pattern) {..   
8220: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
8230: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
8240: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 74       ..        t
8250: 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry {..          
8260: 20 20 6e 65 77 20 52 65 67 45 78 70 28 70 61 74    new RegExp(pat
8270: 74 65 72 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20  tern);..        
8280: 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d 0a 20  } catch (e) {.. 
8290: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
82a0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  n;..        }.. 
82b0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
82c0: 20 74 68 69 73 2e 74 61 67 50 61 74 74 65 72 6e   this.tagPattern
82d0: 20 3d 20 70 61 74 74 65 72 6e 3b 0d 0a 0d 0a 20   = pattern;.... 
82e0: 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75 74 70         this.outp
82f0: 75 74 45 6c 65 6d 65 6e 74 2e 69 6e 6e 65 72 48  utElement.innerH
8300: 54 4d 4c 20 3d 20 22 22 3b 0d 0a 20 20 20 20 20  TML = "";..     
8310: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20     ..        // 
8320: 47 6f 20 74 68 72 6f 75 67 68 20 65 61 63 68 20  Go through each 
8330: 6c 6f 67 20 65 6e 74 72 79 20 61 67 61 69 6e 0d  log entry again.
8340: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75  .        this.ou
8350: 74 70 75 74 43 6f 75 6e 74 20 3d 20 30 3b 0d 0a  tputCount = 0;..
8360: 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72          for (var
8370: 20 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73   i = 0; i < this
8380: 2e 6c 6f 67 67 65 72 2e 6c 6f 67 67 69 6e 67 45  .logger.loggingE
8390: 76 65 6e 74 73 2e 6c 65 6e 67 74 68 3b 20 69 2b  vents.length; i+
83a0: 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  +) {..          
83b0: 20 20 74 68 69 73 2e 64 6f 41 70 70 65 6e 64 28    this.doAppend(
83c0: 74 68 69 73 2e 6c 6f 67 67 65 72 2e 6c 6f 67 67  this.logger.logg
83d0: 69 6e 67 45 76 65 6e 74 73 5b 69 5d 29 3b 0d 0a  ingEvents[i]);..
83e0: 20 20 20 20 20 20 20 20 7d 20 20 0d 0a 20 20 20          }  ..   
83f0: 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a   },....    /**..
8400: 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a      * @private..
8410: 20 20 20 20 2a 2f 09 0d 0a 20 20 20 20 72 65 70      */...    rep
8420: 6f 73 69 74 69 6f 6e 57 69 6e 64 6f 77 20 3a 20  ositionWindow : 
8430: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
8440: 20 20 20 20 20 20 76 61 72 20 6f 66 66 73 65 74        var offset
8450: 20 3d 20 77 69 6e 64 6f 77 2e 70 61 67 65 59 4f   = window.pageYO
8460: 66 66 73 65 74 20 7c 7c 20 74 68 69 73 2e 64 6f  ffset || this.do
8470: 63 52 65 66 65 72 65 6e 63 65 2e 64 6f 63 75 6d  cReference.docum
8480: 65 6e 74 45 6c 65 6d 65 6e 74 2e 73 63 72 6f 6c  entElement.scrol
8490: 6c 54 6f 70 20 7c 7c 20 74 68 69 73 2e 64 6f 63  lTop || this.doc
84a0: 52 65 66 65 72 65 6e 63 65 2e 62 6f 64 79 2e 73  Reference.body.s
84b0: 63 72 6f 6c 6c 54 6f 70 3b 0d 0a 20 20 20 20 20  crollTop;..     
84c0: 20 20 20 76 61 72 20 70 61 67 65 48 65 69 67 68     var pageHeigh
84d0: 74 20 3d 20 73 65 6c 66 2e 69 6e 6e 65 72 48 65  t = self.innerHe
84e0: 69 67 68 74 20 7c 7c 20 74 68 69 73 2e 64 6f 63  ight || this.doc
84f0: 52 65 66 65 72 65 6e 63 65 2e 64 6f 63 75 6d 65  Reference.docume
8500: 6e 74 45 6c 65 6d 65 6e 74 2e 63 6c 69 65 6e 74  ntElement.client
8510: 48 65 69 67 68 74 20 7c 7c 20 74 68 69 73 2e 64  Height || this.d
8520: 6f 63 52 65 66 65 72 65 6e 63 65 2e 62 6f 64 79  ocReference.body
8530: 2e 63 6c 69 65 6e 74 48 65 69 67 68 74 3b 0d 0a  .clientHeight;..
8540: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67          this.log
8550: 45 6c 65 6d 65 6e 74 2e 73 74 79 6c 65 2e 74 6f  Element.style.to
8560: 70 20 3d 20 28 6f 66 66 73 65 74 20 2b 20 70 61  p = (offset + pa
8570: 67 65 48 65 69 67 68 74 20 2d 20 74 68 69 73 2e  geHeight - this.
8580: 6c 6f 67 45 6c 65 6d 65 6e 74 2e 6f 66 66 73 65  logElement.offse
8590: 74 48 65 69 67 68 74 29 20 2b 20 22 70 78 22 3b  tHeight) + "px";
85a0: 0d 0a 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20  ..    },....    
85b0: 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 70 61 72 61  /**..    * @para
85c0: 6d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 65  m loggingEvent e
85d0: 76 65 6e 74 20 74 6f 20 62 65 20 6c 6f 67 67 65  vent to be logge
85e0: 64 0d 0a 20 20 20 20 2a 20 40 73 65 65 20 4c 6f  d..    * @see Lo
85f0: 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 23 64 6f  g4js.Appender#do
8600: 41 70 70 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a  Append..    */..
8610: 20 20 20 20 64 6f 41 70 70 65 6e 64 20 3a 20 66      doAppend : f
8620: 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45  unction(loggingE
8630: 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20  vent) {..       
8640: 20 0d 0a 20 20 20 20 20 20 20 20 69 66 28 74 68   ..        if(th
8650: 69 73 2e 70 6f 70 75 70 42 6c 6f 63 6b 65 72 29  is.popupBlocker)
8660: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8670: 2f 2f 70 6f 70 75 70 20 62 6c 6f 63 6b 65 64 2c  //popup blocked,
8680: 20 77 65 20 72 65 74 75 72 6e 20 69 6e 20 74 68   we return in th
8690: 69 73 20 63 61 73 65 0d 0a 20 20 20 20 20 20 20  is case..       
86a0: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20 20       return;..  
86b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
86c0: 20 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28   ..        if ((
86d0: 21 74 68 69 73 2e 69 6e 6c 69 6e 65 29 20 26 26  !this.inline) &&
86e0: 20 28 21 74 68 69 73 2e 77 69 6e 52 65 66 65 72   (!this.winRefer
86f0: 65 6e 63 65 20 7c 7c 20 74 68 69 73 2e 77 69 6e  ence || this.win
8700: 52 65 66 65 72 65 6e 63 65 2e 63 6c 6f 73 65 64  Reference.closed
8710: 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  )) {..          
8720: 20 20 74 68 69 73 2e 69 6e 69 74 69 61 6c 69 7a    this.initializ
8730: 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e();..        }.
8740: 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20  .        ..     
8750: 20 20 20 69 66 20 28 74 68 69 73 2e 74 61 67 50     if (this.tagP
8760: 61 74 74 65 72 6e 20 21 3d 3d 20 6e 75 6c 6c 20  attern !== null 
8770: 26 26 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20  && ..           
8780: 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65   loggingEvent.le
8790: 76 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73  vel.toString().s
87a0: 65 61 72 63 68 28 6e 65 77 20 52 65 67 45 78 70  earch(new RegExp
87b0: 28 74 68 69 73 2e 74 61 67 50 61 74 74 65 72 6e  (this.tagPattern
87c0: 2c 20 27 69 67 6d 27 29 29 20 3d 3d 20 2d 31 29  , 'igm')) == -1)
87d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
87e0: 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20  return;..       
87f0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20   }..        ..  
8800: 20 20 20 20 20 20 76 61 72 20 73 74 79 6c 65 20        var style 
8810: 3d 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20 0d  = '';..        .
8820: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 67  .        if (log
8830: 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e  gingEvent.level.
8840: 74 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63  toString().searc
8850: 68 28 2f 45 52 52 4f 52 2f 29 20 21 3d 20 2d 31  h(/ERROR/) != -1
8860: 29 20 7b 20 0d 0a 20 20 20 20 20 20 20 20 20 20  ) { ..          
8870: 20 20 73 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f    style += 'colo
8880: 72 3a 72 65 64 27 3b 0d 0a 20 20 20 20 20 20 20  r:red';..       
8890: 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 6f 67 67   } else if (logg
88a0: 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74  ingEvent.level.t
88b0: 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63 68  oString().search
88c0: 28 2f 46 41 54 41 4c 2f 29 20 21 3d 20 2d 31 29  (/FATAL/) != -1)
88d0: 20 7b 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20   { ..           
88e0: 20 73 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f 72   style += 'color
88f0: 3a 72 65 64 27 3b 0d 0a 20 20 20 20 20 20 20 20  :red';..        
8900: 7d 20 65 6c 73 65 20 69 66 20 28 6c 6f 67 67 69  } else if (loggi
8910: 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f  ngEvent.level.to
8920: 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63 68 28  String().search(
8930: 2f 57 41 52 4e 2f 29 20 21 3d 20 2d 31 29 20 7b  /WARN/) != -1) {
8940: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73   ..            s
8950: 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f 72 3a 6f  tyle += 'color:o
8960: 72 61 6e 67 65 27 3b 0d 0a 20 20 20 20 20 20 20  range';..       
8970: 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 6f 67 67   } else if (logg
8980: 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74  ingEvent.level.t
8990: 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63 68  oString().search
89a0: 28 2f 44 45 42 55 47 2f 29 20 21 3d 20 2d 31 29  (/DEBUG/) != -1)
89b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
89c0: 73 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f 72 3a  style += 'color:
89d0: 67 72 65 65 6e 27 3b 0d 0a 20 20 20 20 20 20 20  green';..       
89e0: 20 7d 20 65 6c 73 65 20 69 66 20 28 6c 6f 67 67   } else if (logg
89f0: 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74  ingEvent.level.t
8a00: 6f 53 74 72 69 6e 67 28 29 2e 73 65 61 72 63 68  oString().search
8a10: 28 2f 49 4e 46 4f 2f 29 20 21 3d 20 2d 31 29 20  (/INFO/) != -1) 
8a20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  {..            s
8a30: 74 79 6c 65 20 2b 3d 20 27 63 6f 6c 6f 72 3a 77  tyle += 'color:w
8a40: 68 69 74 65 27 3b 0d 0a 20 20 20 20 20 20 20 20  hite';..        
8a50: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
8a60: 20 20 20 20 20 20 73 74 79 6c 65 20 2b 3d 20 27        style += '
8a70: 63 6f 6c 6f 72 3a 79 65 6c 6c 6f 77 27 3b 0d 0a  color:yellow';..
8a80: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 0d          }..    .
8a90: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 75  .        this.ou
8aa0: 74 70 75 74 28 74 68 69 73 2e 6c 61 79 6f 75 74  tput(this.layout
8ab0: 2e 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67 45  .format(loggingE
8ac0: 76 65 6e 74 29 2c 20 73 74 79 6c 65 29 3b 09 0d  vent), style);..
8ad0: 0a 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 2f  .    },....    /
8ae0: 2a 2a 0d 0a 20 20 20 20 2a 20 40 73 65 65 20 4c  **..    * @see L
8af0: 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 23 64  og4js.Appender#d
8b00: 6f 43 6c 65 61 72 0d 0a 20 20 20 20 2a 2f 0d 0a  oClear..    */..
8b10: 20 20 20 20 64 6f 43 6c 65 61 72 20 3a 20 66 75      doClear : fu
8b20: 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
8b30: 20 20 20 20 74 68 69 73 2e 6f 75 74 70 75 74 45      this.outputE
8b40: 6c 65 6d 65 6e 74 2e 69 6e 6e 65 72 48 54 4d 4c  lement.innerHTML
8b50: 20 3d 20 22 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a   = "";..    },..
8b60: 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40      /**..    * @
8b70: 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 20 40  private..    * @
8b80: 70 61 72 61 6d 20 65 0d 0a 20 20 20 20 2a 2f 0d  param e..    */.
8b90: 0a 20 20 20 20 68 61 6e 64 6c 65 49 6e 70 75 74  .    handleInput
8ba0: 20 3a 20 66 75 6e 63 74 69 6f 6e 28 65 29 20 7b   : function(e) {
8bb0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 2e  ..        if (e.
8bc0: 6b 65 79 43 6f 64 65 20 3d 3d 20 31 33 20 29 20  keyCode == 13 ) 
8bd0: 7b 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20  {      ..       
8be0: 20 20 20 20 20 76 61 72 20 63 6f 6d 6d 61 6e 64       var command
8bf0: 20 3d 20 74 68 69 73 2e 69 6e 70 75 74 45 6c 65   = this.inputEle
8c00: 6d 65 6e 74 2e 76 61 6c 75 65 3b 0d 0a 20 20 20  ment.value;..   
8c10: 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20           ..     
8c20: 20 20 20 20 20 20 20 73 77 69 74 63 68 28 63 6f         switch(co
8c30: 6d 6d 61 6e 64 29 20 7b 0d 0a 20 20 20 20 20 20  mmand) {..      
8c40: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
8c50: 63 6c 65 61 72 22 3a 0d 0a 20 20 20 20 20 20 20  clear":..       
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
8c70: 73 2e 6c 6f 67 67 65 72 2e 63 6c 65 61 72 28 29  s.logger.clear()
8c80: 3b 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;  ..           
8c90: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
8ca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8cb0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20       ..         
8cc0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20         default: 
8cd0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
8ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72               var
8cf0: 20 63 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 20 3d   consoleOutput =
8d00: 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   "";..          
8d10: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
8d20: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 20              try 
8d30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
8d40: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 6f             conso
8d50: 6c 65 4f 75 74 70 75 74 20 3d 20 65 76 61 6c 28  leOutput = eval(
8d60: 74 68 69 73 2e 69 6e 70 75 74 45 6c 65 6d 65 6e  this.inputElemen
8d70: 74 2e 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t.value);..     
8d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8d90: 20 63 61 74 63 68 20 28 65 29 20 7b 20 20 0d 0a   catch (e) {  ..
8da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8db0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67          this.log
8dc0: 67 65 72 2e 65 72 72 6f 72 28 22 50 72 6f 62 6c  ger.error("Probl
8dd0: 65 6d 20 70 61 72 73 69 6e 67 20 69 6e 70 75 74  em parsing input
8de0: 20 3c 22 20 2b 20 63 6f 6d 6d 61 6e 64 20 2b 20   <" + command + 
8df0: 22 3e 22 20 2b 20 65 2e 6d 65 73 73 61 67 65 29  ">" + e.message)
8e00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8e10: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
8e20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8e30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e50: 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20    ..            
8e60: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f 67          this.log
8e70: 67 65 72 2e 74 72 61 63 65 28 63 6f 6e 73 6f 6c  ger.trace(consol
8e80: 65 4f 75 74 70 75 74 29 3b 0d 0a 20 20 20 20 20  eOutput);..     
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
8ea0: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
8eb0: 20 20 20 7d 20 20 20 20 20 20 20 20 0d 0a 20 20     }        ..  
8ec0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
8ed0: 20 20 20 20 69 66 20 28 74 68 69 73 2e 69 6e 70      if (this.inp
8ee0: 75 74 45 6c 65 6d 65 6e 74 2e 76 61 6c 75 65 20  utElement.value 
8ef0: 21 3d 3d 20 22 22 20 26 26 20 74 68 69 73 2e 69  !== "" && this.i
8f00: 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 76 61 6c 75  nputElement.valu
8f10: 65 20 21 3d 3d 20 74 68 69 73 2e 63 6f 6d 6d 61  e !== this.comma
8f20: 6e 64 48 69 73 74 6f 72 79 5b 30 5d 29 20 7b 0d  ndHistory[0]) {.
8f30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8f40: 20 74 68 69 73 2e 63 6f 6d 6d 61 6e 64 48 69 73   this.commandHis
8f50: 74 6f 72 79 2e 75 6e 73 68 69 66 74 28 74 68 69  tory.unshift(thi
8f60: 73 2e 69 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 76  s.inputElement.v
8f70: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
8f80: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d      }..        .
8f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
8fa0: 73 2e 63 6f 6d 6d 61 6e 64 49 6e 64 65 78 20 3d  s.commandIndex =
8fb0: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
8fc0: 20 74 68 69 73 2e 69 6e 70 75 74 45 6c 65 6d 65   this.inputEleme
8fd0: 6e 74 2e 76 61 6c 75 65 20 3d 20 22 22 3b 20 20  nt.value = "";  
8fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9010: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 7d 20 65     ..        } e
9020: 6c 73 65 20 69 66 20 28 65 2e 6b 65 79 43 6f 64  lse if (e.keyCod
9030: 65 20 3d 3d 20 33 38 20 26 26 20 74 68 69 73 2e  e == 38 && this.
9040: 63 6f 6d 6d 61 6e 64 48 69 73 74 6f 72 79 2e 6c  commandHistory.l
9050: 65 6e 67 74 68 20 3e 20 30 29 20 7b 0d 0a 20 20  ength > 0) {..  
9060: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69            this.i
9070: 6e 70 75 74 45 6c 65 6d 65 6e 74 2e 76 61 6c 75  nputElement.valu
9080: 65 20 3d 20 74 68 69 73 2e 63 6f 6d 6d 61 6e 64  e = this.command
9090: 48 69 73 74 6f 72 79 5b 74 68 69 73 2e 63 6f 6d  History[this.com
90a0: 6d 61 6e 64 49 6e 64 65 78 5d 3b 0d 0a 0d 0a 20  mandIndex];.... 
90b0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
90c0: 68 69 73 2e 63 6f 6d 6d 61 6e 64 49 6e 64 65 78  his.commandIndex
90d0: 20 3c 20 74 68 69 73 2e 63 6f 6d 6d 61 6e 64 48   < this.commandH
90e0: 69 73 74 6f 72 79 2e 6c 65 6e 67 74 68 20 2d 20  istory.length - 
90f0: 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  1) {..          
9100: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6d 6d 61        this.comma
9110: 6e 64 49 6e 64 65 78 20 2b 3d 20 31 3b 0d 0a 20  ndIndex += 1;.. 
9120: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9130: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
9140: 28 65 2e 6b 65 79 43 6f 64 65 20 3d 3d 20 34 30  (e.keyCode == 40
9150: 20 26 26 20 74 68 69 73 2e 63 6f 6d 6d 61 6e 64   && this.command
9160: 48 69 73 74 6f 72 79 2e 6c 65 6e 67 74 68 20 3e  History.length >
9170: 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20   0) {..         
9180: 20 20 20 69 66 20 28 74 68 69 73 2e 63 6f 6d 6d     if (this.comm
9190: 61 6e 64 49 6e 64 65 78 20 3e 20 30 29 20 7b 20  andIndex > 0) { 
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91c0: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20       ..         
91d0: 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6d 6d         this.comm
91e0: 61 6e 64 49 6e 64 65 78 20 2d 3d 20 31 3b 0d 0a  andIndex -= 1;..
91f0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 20 20              }   
9200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9210: 20 20 20 20 0d 0a 0d 0a 20 20 20 20 20 20 20 20      ....        
9220: 20 20 20 20 74 68 69 73 2e 69 6e 70 75 74 45 6c      this.inputEl
9230: 65 6d 65 6e 74 2e 76 61 6c 75 65 20 3d 20 74 68  ement.value = th
9240: 69 73 2e 63 6f 6d 6d 61 6e 64 48 69 73 74 6f 72  is.commandHistor
9250: 79 5b 74 68 69 73 2e 63 6f 6d 6d 61 6e 64 49 6e  y[this.commandIn
9260: 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d  dex];..        }
9270: 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20   else {..       
9280: 20 20 20 20 20 74 68 69 73 2e 63 6f 6d 6d 61 6e       this.comman
9290: 64 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20  dIndex = 0;..   
92a0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d 0a       }..    },..
92b0: 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a      ..    /** ..
92c0: 20 20 20 20 2a 20 74 6f 53 74 72 69 6e 67 0d 0a      * toString..
92d0: 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 6f 53 74      */..    toSt
92e0: 72 69 6e 67 3a 20 66 75 6e 63 74 69 6f 6e 28 29  ring: function()
92f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
9300: 72 6e 20 22 4c 6f 67 34 6a 73 2e 43 6f 6e 73 6f  rn "Log4js.Conso
9310: 6c 65 41 70 70 65 6e 64 65 72 5b 69 6e 6c 69 6e  leAppender[inlin
9320: 65 3d 22 20 2b 20 74 68 69 73 2e 69 6e 6c 69 6e  e=" + this.inlin
9330: 65 20 2b 20 22 5d 22 3b 20 0d 0a 20 20 20 20 7d  e + "]"; ..    }
9340: 0d 0a 7d 29 3b 20 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a  ..}); ..../**..*
9350: 20 4d 65 74 61 74 61 67 20 41 70 70 65 6e 64 65   Metatag Appende
9360: 72 20 77 72 69 74 69 6e 67 20 74 68 65 20 6c 6f  r writing the lo
9370: 67 73 20 74 6f 20 6d 65 74 61 20 74 61 67 73 0d  gs to meta tags.
9380: 0a 2a 0d 0a 2a 20 40 65 78 74 65 6e 64 73 20 4c  .*..* @extends L
9390: 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 0d 0a  og4js.Appender..
93a0: 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a  * @constructor..
93b0: 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67 65 72 20  * @param logger 
93c0: 6c 6f 67 34 6a 73 20 69 6e 73 74 61 6e 63 65 20  log4js instance 
93d0: 74 68 69 73 20 61 70 70 65 6e 64 65 72 20 69 73  this appender is
93e0: 20 61 74 74 61 63 68 65 64 20 74 6f 0d 0a 2a 20   attached to..* 
93f0: 40 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20  @author Stephan 
9400: 53 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f  Strittmatter..*/
9410: 0d 0a 4c 6f 67 34 6a 73 2e 4d 65 74 61 74 61 67  ..Log4js.Metatag
9420: 41 70 70 65 6e 64 65 72 20 3d 20 66 75 6e 63 74  Appender = funct
9430: 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 74 68 69  ion() {..    thi
9440: 73 2e 63 75 72 72 65 6e 74 4c 69 6e 65 20 3d 20  s.currentLine = 
9450: 30 3b 0d 0a 7d 3b 0d 0a 4c 6f 67 34 6a 73 2e 4d  0;..};..Log4js.M
9460: 65 74 61 74 61 67 41 70 70 65 6e 64 65 72 2e 70  etatagAppender.p
9470: 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a  rototype = Log4j
9480: 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67  s.extend(new Log
9490: 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c 20  4js.Appender(), 
94a0: 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20  {  ..    /**..  
94b0: 20 20 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67 69    * @param loggi
94c0: 6e 67 45 76 65 6e 74 20 65 76 65 6e 74 20 74 6f  ngEvent event to
94d0: 20 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20   be logged..    
94e0: 2a 20 40 73 65 65 20 4c 6f 67 34 6a 73 2e 41 70  * @see Log4js.Ap
94f0: 70 65 6e 64 65 72 23 64 6f 41 70 70 65 6e 64 0d  pender#doAppend.
9500: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f 41  .    */..    doA
9510: 70 70 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e 28  ppend: function(
9520: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b 0d  loggingEvent) {.
9530: 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e 6f 77  .        var now
9540: 20 3d 20 6e 65 77 20 44 61 74 65 28 29 3b 0d 0a   = new Date();..
9550: 20 20 20 20 20 20 20 20 76 61 72 20 6c 69 6e 65          var line
9560: 73 20 3d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74  s = loggingEvent
9570: 2e 6d 65 73 73 61 67 65 2e 73 70 6c 69 74 28 22  .message.split("
9580: 5c 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 76  \n");..        v
9590: 61 72 20 68 65 61 64 54 61 67 20 3d 20 64 6f 63  ar headTag = doc
95a0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
95b0: 73 42 79 54 61 67 4e 61 6d 65 28 22 68 65 61 64  sByTagName("head
95c0: 22 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ")[0];....      
95d0: 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 31    for (var i = 1
95e0: 3b 20 69 20 3c 3d 20 6c 69 6e 65 73 2e 6c 65 6e  ; i <= lines.len
95f0: 67 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a 20 20 20  gth; i++) {..   
9600: 20 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c           var val
9610: 75 65 20 3d 20 6c 69 6e 65 73 5b 69 20 2d 20 31  ue = lines[i - 1
9620: 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
9630: 69 66 20 28 69 20 3d 3d 20 31 29 20 7b 0d 0a 20  if (i == 1) {.. 
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
9650: 61 6c 75 65 20 3d 20 6c 6f 67 67 69 6e 67 45 76  alue = loggingEv
9660: 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53 74 72 69  ent.level.toStri
9670: 6e 67 28 29 20 2b 20 22 3a 20 22 20 2b 20 76 61  ng() + ": " + va
9680: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
9690: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
96a0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
96b0: 65 20 3d 20 22 3e 20 22 20 2b 20 76 61 6c 75 65  e = "> " + value
96c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
96d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
96e0: 76 61 72 20 6d 65 74 61 54 61 67 20 3d 20 64 6f  var metaTag = do
96f0: 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65  cument.createEle
9700: 6d 65 6e 74 28 22 6d 65 74 61 22 29 3b 0d 0a 20  ment("meta");.. 
9710: 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 61 54             metaT
9720: 61 67 2e 73 65 74 41 74 74 72 69 62 75 74 65 28  ag.setAttribute(
9730: 22 6e 61 6d 65 22 2c 20 22 58 2d 6c 6f 67 34 6a  "name", "X-log4j
9740: 73 3a 22 20 2b 20 74 68 69 73 2e 63 75 72 72 65  s:" + this.curre
9750: 6e 74 4c 69 6e 65 29 3b 0d 0a 20 20 20 20 20 20  ntLine);..      
9760: 20 20 20 20 20 20 6d 65 74 61 54 61 67 2e 73 65        metaTag.se
9770: 74 41 74 74 72 69 62 75 74 65 28 22 63 6f 6e 74  tAttribute("cont
9780: 65 6e 74 22 2c 20 76 61 6c 75 65 29 3b 0d 0a 20  ent", value);.. 
9790: 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 54             headT
97a0: 61 67 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 6d  ag.appendChild(m
97b0: 65 74 61 54 61 67 29 3b 0d 0a 20 20 20 20 20 20  etaTag);..      
97c0: 20 20 20 20 20 20 74 68 69 73 2e 63 75 72 72 65        this.curre
97d0: 6e 74 4c 69 6e 65 20 2b 3d 20 31 3b 0d 0a 20 20  ntLine += 1;..  
97e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d        }..    },.
97f0: 0a 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20  ...    /** ..   
9800: 20 2a 20 74 6f 53 74 72 69 6e 67 0d 0a 20 20 20   * toString..   
9810: 20 2a 2f 0d 0a 20 20 20 20 74 6f 53 74 72 69 6e   */..    toStrin
9820: 67 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d  g: function() {.
9830: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
9840: 22 4c 6f 67 34 6a 73 2e 4d 65 74 61 74 61 67 41  "Log4js.MetatagA
9850: 70 70 65 6e 64 65 72 22 3b 20 0d 0a 20 20 20 20  ppender"; ..    
9860: 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a  }..});..../**..*
9870: 20 41 4a 41 58 20 41 70 70 65 6e 64 65 72 20 73   AJAX Appender s
9880: 65 6e 64 69 6e 67 20 7b 40 6c 69 6e 6b 20 4c 6f  ending {@link Lo
9890: 67 34 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65 6e  g4js.LoggingEven
98a0: 74 7d 73 20 61 73 79 6e 63 68 72 6f 6e 20 76 69  t}s asynchron vi
98b0: 61 20 0d 0a 2a 20 3c 63 6f 64 65 3e 58 4d 4c 48  a ..* <code>XMLH
98c0: 74 74 70 52 65 71 75 65 73 74 3c 2f 63 6f 64 65  ttpRequest</code
98d0: 3e 20 74 6f 20 73 65 72 76 65 72 2e 3c 62 72 20  > to server.<br 
98e0: 2f 3e 0d 0a 2a 20 54 68 65 20 7b 40 6c 69 6e 6b  />..* The {@link
98f0: 20 4c 6f 67 34 6a 73 2e 4c 6f 67 67 69 6e 67 45   Log4js.LoggingE
9900: 76 65 6e 74 7d 20 69 73 20 50 4f 53 54 65 64 20  vent} is POSTed 
9910: 61 73 20 72 65 73 70 6f 6e 73 65 20 63 6f 6e 74  as response cont
9920: 65 6e 74 20 61 6e 64 20 69 73 20 0d 0a 2a 20 66  ent and is ..* f
9930: 6f 72 6d 61 74 74 65 64 20 62 79 20 74 68 65 20  ormatted by the 
9940: 61 63 63 6f 63 69 61 74 65 64 20 6c 61 79 6f 75  accociated layou
9950: 74 2e 20 44 65 66 61 75 6c 74 20 6c 61 79 6f 75  t. Default layou
9960: 74 20 69 73 20 7b 40 6c 69 6e 6b 20 4c 6f 67 34  t is {@link Log4
9970: 6a 73 2e 58 4d 4c 4c 61 79 6f 75 74 7d 2e 20 0d  js.XMLLayout}. .
9980: 0a 2a 20 54 68 65 20 3c 63 6f 64 65 3e 74 68 72  .* The <code>thr
9990: 65 73 68 6f 6c 64 3c 2f 63 6f 64 65 3e 20 64 65  eshold</code> de
99a0: 66 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20 6c  fines when the l
99b0: 6f 67 73 20 0d 0a 2a 20 73 68 6f 75 6c 64 20 62  ogs ..* should b
99c0: 65 20 73 65 6e 64 20 74 6f 20 74 68 65 20 73 65  e send to the se
99d0: 72 76 65 72 2e 20 42 79 20 64 65 66 61 75 6c 74  rver. By default
99e0: 20 65 76 65 72 79 20 65 76 65 6e 74 20 69 73 20   every event is 
99f0: 73 65 6e 74 20 6f 6e 20 69 74 73 0d 0a 2a 20 6f  sent on its..* o
9a00: 77 6e 20 28 74 68 72 65 73 68 6f 6c 64 3d 31 29  wn (threshold=1)
9a10: 2e 20 49 66 20 69 74 20 69 73 20 73 65 74 20 74  . If it is set t
9a20: 6f 20 31 30 2c 20 74 68 65 6e 20 74 68 65 20 65  o 10, then the e
9a30: 76 65 6e 74 73 20 61 72 65 20 73 65 6e 64 20 69  vents are send i
9a40: 6e 20 67 72 6f 75 70 73 20 6f 66 0d 0a 2a 20 31  n groups of..* 1
9a50: 30 20 65 76 65 6e 74 73 2e 0d 0a 2a 0d 0a 2a 20  0 events...*..* 
9a60: 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e  @extends Log4js.
9a70: 41 70 70 65 6e 64 65 72 20 0d 0a 2a 20 40 63 6f  Appender ..* @co
9a80: 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40 70 61  nstructor..* @pa
9a90: 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 6f 67 67  ram {Log4js.Logg
9aa0: 65 72 7d 20 6c 6f 67 67 65 72 20 6c 6f 67 34 6a  er} logger log4j
9ab0: 73 20 69 6e 73 74 61 6e 63 65 20 74 68 69 73 20  s instance this 
9ac0: 61 70 70 65 6e 64 65 72 20 69 73 20 61 74 74 61  appender is atta
9ad0: 63 68 65 64 20 74 6f 0d 0a 2a 20 40 70 61 72 61  ched to..* @para
9ae0: 6d 20 7b 53 74 72 69 6e 67 7d 20 6c 6f 67 67 69  m {String} loggi
9af0: 6e 67 55 72 6c 20 75 72 6c 20 77 68 65 72 65 20  ngUrl url where 
9b00: 61 70 70 65 6e 64 65 72 20 77 69 6c 6c 20 70 6f  appender will po
9b10: 73 74 20 6c 6f 67 20 6d 65 73 73 61 67 65 73 20  st log messages 
9b20: 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53 74  to..* @author St
9b30: 65 70 68 61 6e 20 53 74 72 69 74 74 6d 61 74 74  ephan Strittmatt
9b40: 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 41  er..*/..Log4js.A
9b50: 6a 61 78 41 70 70 65 6e 64 65 72 20 3d 20 66 75  jaxAppender = fu
9b60: 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 55 72  nction(loggingUr
9b70: 6c 29 20 7b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d  l) {....    /**.
9b80: 0a 20 20 20 20 2a 20 69 73 20 73 74 69 6c 6c 20  .    * is still 
9b90: 65 73 6e 64 69 6e 67 20 64 61 74 61 20 74 6f 20  esnding data to 
9ba0: 73 65 72 76 65 72 0d 0a 20 20 20 20 2a 20 40 74  server..    * @t
9bb0: 79 70 65 20 62 6f 6f 6c 65 61 6e 0d 0a 20 20 20  ype boolean..   
9bc0: 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 20 20   * @private..   
9bd0: 20 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 69 73   */..    this.is
9be0: 49 6e 50 72 6f 67 72 65 73 73 20 3d 20 66 61 6c  InProgress = fal
9bf0: 73 65 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f  se;..    ..    /
9c00: 2a 2a 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20  **..    * @type 
9c10: 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 70  String..    * @p
9c20: 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a  rivate..    */..
9c30: 20 20 20 20 74 68 69 73 2e 6c 6f 67 67 69 6e 67      this.logging
9c40: 55 72 6c 20 3d 20 6c 6f 67 67 69 6e 67 55 72 6c  Url = loggingUrl
9c50: 20 7c 7c 20 22 6c 6f 67 67 69 6e 67 2e 6c 6f 67   || "logging.log
9c60: 34 6a 73 22 3b 0d 0a 20 20 20 20 0d 0a 20 20 20  4js";..    ..   
9c70: 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 40 74 79 70   /**..    * @typ
9c80: 65 20 49 6e 74 65 67 65 72 0d 0a 20 20 20 20 2a  e Integer..    *
9c90: 20 40 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a   @private..    *
9ca0: 2f 0d 0a 20 20 20 20 74 68 69 73 2e 74 68 72 65  /..    this.thre
9cb0: 73 68 6f 6c 64 20 3d 20 31 3b 0d 0a 20 20 20 20  shold = 1;..    
9cc0: 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a  ..    /**..    *
9cd0: 20 74 69 6d 65 6f 75 74 20 77 68 65 6e 20 72 65   timeout when re
9ce0: 71 75 65 73 74 20 69 73 20 61 62 6f 72 74 65 64  quest is aborted
9cf0: 2e 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74  ...    * @privat
9d00: 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74  e..    */..    t
9d10: 68 69 73 2e 74 69 6d 65 6f 75 74 20 3d 20 32 30  his.timeout = 20
9d20: 30 30 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f  00;..    ..    /
9d30: 2a 2a 0d 0a 20 20 20 20 2a 20 4c 69 73 74 20 6f  **..    * List o
9d40: 66 20 4c 6f 67 67 69 6e 67 45 76 65 6e 74 73 20  f LoggingEvents 
9d50: 77 68 69 63 68 20 73 68 6f 75 6c 64 20 62 65 20  which should be 
9d60: 73 65 6e 64 20 61 66 74 65 72 20 74 68 72 65 73  send after thres
9d70: 68 6f 6c 64 20 69 73 20 72 65 61 63 68 65 64 2e  hold is reached.
9d80: 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 4d 61  ..    * @type Ma
9d90: 70 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61 74  p..    * @privat
9da0: 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74  e..    */..    t
9db0: 68 69 73 2e 6c 6f 67 67 69 6e 67 45 76 65 6e 74  his.loggingEvent
9dc0: 4d 61 70 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73  Map = new Log4js
9dd0: 2e 46 69 66 6f 42 75 66 66 65 72 28 29 3b 0d 0a  .FifoBuffer();..
9de0: 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a  ..    /**..    *
9df0: 20 40 74 79 70 65 20 4c 6f 67 34 6a 73 2e 4c 61   @type Log4js.La
9e00: 79 6f 75 74 0d 0a 20 20 20 20 2a 20 40 70 72 69  yout..    * @pri
9e10: 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  vate..    */..  
9e20: 20 20 74 68 69 73 2e 6c 61 79 6f 75 74 20 3d 20    this.layout = 
9e30: 6e 65 77 20 4c 6f 67 34 6a 73 2e 58 4d 4c 4c 61  new Log4js.XMLLa
9e40: 79 6f 75 74 28 29 3b 0d 0a 20 20 20 20 2f 2a 2a  yout();..    /**
9e50: 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 58 4d  ..    * @type XM
9e60: 4c 48 74 74 70 52 65 71 75 65 73 74 0d 0a 20 20  LHttpRequest..  
9e70: 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 20    * @private..  
9e80: 20 20 2a 2f 09 0d 0a 20 20 20 20 74 68 69 73 2e    */...    this.
9e90: 68 74 74 70 52 65 71 75 65 73 74 20 3d 20 6e 75  httpRequest = nu
9ea0: 6c 6c 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a  ll;..};....Log4j
9eb0: 73 2e 41 6a 61 78 41 70 70 65 6e 64 65 72 2e 70  s.AjaxAppender.p
9ec0: 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a  rototype = Log4j
9ed0: 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67  s.extend(new Log
9ee0: 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c 20  4js.Appender(), 
9ef0: 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20  {  ..    /**..  
9f00: 20 20 2a 20 73 65 6e 64 73 20 74 68 65 20 6c 6f    * sends the lo
9f10: 67 73 20 74 6f 20 74 68 65 20 73 65 72 76 65 72  gs to the server
9f20: 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6c  ..    * @param l
9f30: 6f 67 67 69 6e 67 45 76 65 6e 74 20 65 76 65 6e  oggingEvent even
9f40: 74 20 74 6f 20 62 65 20 6c 6f 67 67 65 64 0d 0a  t to be logged..
9f50: 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a      * @see Log4j
9f60: 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70 70  s.Appender#doApp
9f70: 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  end..    */..   
9f80: 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63 74   doAppend: funct
9f90: 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74  ion(loggingEvent
9fa0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67  ) {..        log
9fb0: 34 6a 73 4c 6f 67 67 65 72 2e 74 72 61 63 65 28  4jsLogger.trace(
9fc0: 22 3e 20 41 6a 61 78 41 70 70 65 6e 64 65 72 2e  "> AjaxAppender.
9fd0: 61 70 70 65 6e 64 22 29 3b 0d 0a 20 20 20 20 0d  append");..    .
9fe0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69  .        if (thi
9ff0: 73 2e 6c 6f 67 67 69 6e 67 45 76 65 6e 74 4d 61  s.loggingEventMa
a000: 70 2e 6c 65 6e 67 74 68 28 29 20 3c 3d 20 74 68  p.length() <= th
a010: 69 73 2e 74 68 72 65 73 68 6f 6c 64 20 7c 7c 20  is.threshold || 
a020: 74 68 69 73 2e 69 73 49 6e 50 72 6f 67 72 65 73  this.isInProgres
a030: 73 20 3d 3d 3d 20 74 72 75 65 29 20 7b 0d 0a 20  s === true) {.. 
a040: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
a050: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 4d 61 70 2e  loggingEventMap.
a060: 70 75 73 68 28 6c 6f 67 67 69 6e 67 45 76 65 6e  push(loggingEven
a070: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
a080: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
a090: 20 20 69 66 28 74 68 69 73 2e 6c 6f 67 67 69 6e    if(this.loggin
a0a0: 67 45 76 65 6e 74 4d 61 70 2e 6c 65 6e 67 74 68  gEventMap.length
a0b0: 28 29 20 3e 3d 20 74 68 69 73 2e 74 68 72 65 73  () >= this.thres
a0c0: 68 6f 6c 64 20 26 26 20 74 68 69 73 2e 69 73 49  hold && this.isI
a0d0: 6e 50 72 6f 67 72 65 73 73 20 3d 3d 3d 20 66 61  nProgress === fa
a0e0: 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  lse) {..        
a0f0: 20 20 20 20 2f 2f 69 66 20 74 68 72 65 73 68 6f      //if thresho
a100: 6c 64 20 69 73 20 72 65 61 63 68 65 64 20 73 65  ld is reached se
a110: 6e 64 20 74 68 65 20 65 76 65 6e 74 73 20 61 6e  nd the events an
a120: 64 20 72 65 73 65 74 20 63 75 72 72 65 6e 74 20  d reset current 
a130: 74 68 72 65 73 68 6f 6c 64 0d 0a 20 20 20 20 20  threshold..     
a140: 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 6e 64         this.send
a150: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ();..        }..
a160: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
a170: 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 74    log4jsLogger.t
a180: 72 61 63 65 28 22 3c 20 41 6a 61 78 41 70 70 65  race("< AjaxAppe
a190: 6e 64 65 72 2e 61 70 70 65 6e 64 22 29 3b 0d 0a  nder.append");..
a1a0: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20      },..    ..  
a1b0: 20 20 2f 2a 2a 20 40 73 65 65 20 41 70 70 65 6e    /** @see Appen
a1c0: 64 65 72 23 64 6f 43 6c 65 61 72 20 2a 2f 0d 0a  der#doClear */..
a1d0: 20 20 20 20 64 6f 43 6c 65 61 72 3a 20 66 75 6e      doClear: fun
a1e0: 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20  ction() {..     
a1f0: 20 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e     log4jsLogger.
a200: 74 72 61 63 65 28 22 3e 20 41 6a 61 78 41 70 70  trace("> AjaxApp
a210: 65 6e 64 65 72 2e 64 6f 43 6c 65 61 72 22 20 29  ender.doClear" )
a220: 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 28 74 68  ;..        if(th
a230: 69 73 2e 6c 6f 67 67 69 6e 67 45 76 65 6e 74 4d  is.loggingEventM
a240: 61 70 2e 6c 65 6e 67 74 68 28 29 20 3e 20 30 29  ap.length() > 0)
a250: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a260: 74 68 69 73 2e 73 65 6e 64 28 29 3b 0d 0a 20 20  this.send();..  
a270: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
a280: 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 74 72   log4jsLogger.tr
a290: 61 63 65 28 22 3c 20 41 6a 61 78 41 70 70 65 6e  ace("< AjaxAppen
a2a0: 64 65 72 2e 64 6f 43 6c 65 61 72 22 20 29 3b 0d  der.doClear" );.
a2b0: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
a2c0: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 53 65     /**..    * Se
a2d0: 74 20 74 68 65 20 74 68 72 65 73 68 6f 6c 64 20  t the threshold 
a2e0: 77 68 65 6e 20 6c 6f 67 73 20 68 61 76 65 20 74  when logs have t
a2f0: 6f 20 62 65 20 73 65 6e 64 2e 20 44 65 66 61 75  o be send. Defau
a300: 6c 74 20 74 68 72 65 73 68 6f 6c 64 20 69 73 20  lt threshold is 
a310: 31 2e 0d 0a 20 20 20 20 2a 20 40 70 72 61 72 61  1...    * @prara
a320: 6d 20 7b 69 6e 74 7d 20 74 68 72 65 73 68 6f 6c  m {int} threshol
a330: 64 20 6e 65 77 20 74 68 72 65 73 68 6f 6c 64 0d  d new threshold.
a340: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 73 65 74  .    */..    set
a350: 54 68 72 65 73 68 6f 6c 64 3a 20 66 75 6e 63 74  Threshold: funct
a360: 69 6f 6e 28 74 68 72 65 73 68 6f 6c 64 29 20 7b  ion(threshold) {
a370: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73  ..        log4js
a380: 4c 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3e 20  Logger.trace("> 
a390: 41 6a 61 78 41 70 70 65 6e 64 65 72 2e 73 65 74  AjaxAppender.set
a3a0: 54 68 72 65 73 68 6f 6c 64 3a 20 22 20 2b 20 74  Threshold: " + t
a3b0: 68 72 65 73 68 6f 6c 64 20 29 3b 0d 0a 20 20 20  hreshold );..   
a3c0: 20 20 20 20 20 74 68 69 73 2e 74 68 72 65 73 68       this.thresh
a3d0: 6f 6c 64 20 3d 20 74 68 72 65 73 68 6f 6c 64 3b  old = threshold;
a3e0: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73  ..        log4js
a3f0: 4c 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3c 20  Logger.trace("< 
a400: 41 6a 61 78 41 70 70 65 6e 64 65 72 2e 73 65 74  AjaxAppender.set
a410: 54 68 72 65 73 68 6f 6c 64 22 20 29 3b 0d 0a 20  Threshold" );.. 
a420: 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20     },..    ..   
a430: 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 53 65 74 20   /**..    * Set 
a440: 74 68 65 20 74 69 6d 65 6f 75 74 20 69 6e 20 6d  the timeout in m
a450: 69 6c 6c 69 20 73 65 63 6f 6e 64 73 20 75 6e 74  illi seconds unt
a460: 69 6c 20 73 65 6e 64 69 6e 67 20 72 65 71 75 65  il sending reque
a470: 73 74 20 69 73 20 61 62 6f 72 74 65 64 2e 0d 0a  st is aborted...
a480: 20 20 20 20 2a 20 44 65 66 61 75 6c 74 20 69 73      * Default is
a490: 20 32 30 30 30 20 6d 73 2e 0d 0a 20 20 20 20 2a   2000 ms...    *
a4a0: 20 40 70 61 72 61 6d 20 7b 69 6e 74 7d 20 6d 69   @param {int} mi
a4b0: 6c 6c 69 73 65 63 6f 6e 64 73 20 74 68 65 20 6e  lliseconds the n
a4c0: 65 77 20 74 69 6d 65 6f 75 74 0d 0a 20 20 20 20  ew timeout..    
a4d0: 2a 2f 0d 0a 20 20 20 20 73 65 74 54 69 6d 65 6f  */..    setTimeo
a4e0: 75 74 3a 20 66 75 6e 63 74 69 6f 6e 28 6d 69 6c  ut: function(mil
a4f0: 6c 69 73 65 63 6f 6e 64 73 29 20 7b 0d 0a 20 20  liseconds) {..  
a500: 20 20 20 20 20 20 74 68 69 73 2e 74 69 6d 65 6f        this.timeo
a510: 75 74 20 3d 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  ut = millisecond
a520: 73 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  s;..    },..    
a530: 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a  ..    /**..    *
a540: 20 73 65 6e 64 20 74 68 65 20 72 65 71 75 65 73   send the reques
a550: 74 2e 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  t...    */..    
a560: 73 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e 28 29  send: function()
a570: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 28 74   {..        if(t
a580: 68 69 73 2e 6c 6f 67 67 69 6e 67 45 76 65 6e 74  his.loggingEvent
a590: 4d 61 70 2e 6c 65 6e 67 74 68 28 29 20 3e 30 29  Map.length() >0)
a5a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a5b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
a5c0: 67 34 6a 73 4c 6f 67 67 65 72 2e 74 72 61 63 65  g4jsLogger.trace
a5d0: 28 22 3e 20 41 6a 61 78 41 70 70 65 6e 64 65 72  ("> AjaxAppender
a5e0: 2e 73 65 6e 64 22 29 3b 0d 0a 20 20 20 20 20 20  .send");..      
a5f0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
a600: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20      ..          
a610: 20 20 74 68 69 73 2e 69 73 49 6e 50 72 6f 67 72    this.isInProgr
a620: 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ess = true;..   
a630: 20 20 20 20 20 20 20 20 20 76 61 72 20 61 20 3d           var a =
a640: 20 5b 5d 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20   [];..    ..    
a650: 20 20 20 20 20 20 20 20 66 6f 72 28 76 61 72 20          for(var 
a660: 69 20 3d 20 30 3b 20 69 20 3c 20 74 68 69 73 2e  i = 0; i < this.
a670: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 4d 61 70 2e  loggingEventMap.
a680: 6c 65 6e 67 74 68 28 29 20 26 26 20 69 20 3c 20  length() && i < 
a690: 74 68 69 73 2e 74 68 72 65 73 68 6f 6c 64 3b 20  this.threshold; 
a6a0: 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  i++) {..        
a6b0: 20 20 20 20 20 20 20 20 61 2e 70 75 73 68 28 74          a.push(t
a6c0: 68 69 73 2e 6c 61 79 6f 75 74 2e 66 6f 72 6d 61  his.layout.forma
a6d0: 74 28 74 68 69 73 2e 6c 6f 67 67 69 6e 67 45 76  t(this.loggingEv
a6e0: 65 6e 74 4d 61 70 2e 70 75 6c 6c 28 29 29 29 3b  entMap.pull()));
a6f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ..            } 
a700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a710: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
a720: 20 20 20 20 76 61 72 20 63 6f 6e 74 65 6e 74 20      var content 
a730: 3d 20 74 68 69 73 2e 6c 61 79 6f 75 74 2e 67 65  = this.layout.ge
a740: 74 48 65 61 64 65 72 28 29 3b 09 0d 0a 20 20 20  tHeader();...   
a750: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e 74           content
a760: 20 2b 3d 20 61 2e 6a 6f 69 6e 28 74 68 69 73 2e   += a.join(this.
a770: 6c 61 79 6f 75 74 2e 67 65 74 53 65 70 61 72 61  layout.getSepara
a780: 74 6f 72 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  tor());..       
a790: 20 20 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20       content += 
a7a0: 74 68 69 73 2e 6c 61 79 6f 75 74 2e 67 65 74 46  this.layout.getF
a7b0: 6f 6f 74 65 72 28 29 3b 0d 0a 20 20 20 20 20 20  ooter();..      
a7c0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
a7d0: 20 20 20 20 76 61 72 20 61 70 70 65 6e 64 65 72      var appender
a7e0: 20 3d 20 74 68 69 73 3b 0d 0a 20 20 20 20 20 20   = this;..      
a7f0: 20 20 20 20 20 20 69 66 28 74 68 69 73 2e 68 74        if(this.ht
a800: 74 70 52 65 71 75 65 73 74 20 3d 3d 3d 20 6e 75  tpRequest === nu
a810: 6c 6c 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll){..          
a820: 20 20 20 20 20 20 74 68 69 73 2e 68 74 74 70 52        this.httpR
a830: 65 71 75 65 73 74 20 3d 20 74 68 69 73 2e 67 65  equest = this.ge
a840: 74 58 6d 6c 48 74 74 70 52 65 71 75 65 73 74 28  tXmlHttpRequest(
a850: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a860: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  }..            t
a870: 68 69 73 2e 68 74 74 70 52 65 71 75 65 73 74 2e  his.httpRequest.
a880: 6f 6e 72 65 61 64 79 73 74 61 74 65 63 68 61 6e  onreadystatechan
a890: 67 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20  ge = function() 
a8a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a8b0: 20 20 20 61 70 70 65 6e 64 65 72 2e 6f 6e 52 65     appender.onRe
a8c0: 61 64 79 53 74 61 74 65 43 68 61 6e 67 65 64 2e  adyStateChanged.
a8d0: 63 61 6c 6c 28 61 70 70 65 6e 64 65 72 29 3b 0d  call(appender);.
a8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0d  .            };.
a8f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20  .            .. 
a900: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
a910: 68 74 74 70 52 65 71 75 65 73 74 2e 6f 70 65 6e  httpRequest.open
a920: 28 22 50 4f 53 54 22 2c 20 74 68 69 73 2e 6c 6f  ("POST", this.lo
a930: 67 67 69 6e 67 55 72 6c 2c 20 74 72 75 65 29 3b  ggingUrl, true);
a940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
a950: 20 73 65 74 20 74 68 65 20 72 65 71 75 65 73 74   set the request
a960: 20 68 65 61 64 65 72 73 2e 0d 0a 20 20 20 20 20   headers...     
a970: 20 20 20 20 20 20 20 2f 2f 74 68 69 73 2e 68 74         //this.ht
a980: 74 70 52 65 71 75 65 73 74 2e 73 65 74 52 65 71  tpRequest.setReq
a990: 75 65 73 74 48 65 61 64 65 72 28 22 43 6f 6e 74  uestHeader("Cont
a9a0: 65 6e 74 2d 74 79 70 65 22 2c 20 22 61 70 70 6c  ent-type", "appl
a9b0: 69 63 61 74 69 6f 6e 2f 78 2d 77 77 77 2d 66 6f  ication/x-www-fo
a9c0: 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 22 29 3b  rm-urlencoded");
a9d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
a9e0: 69 73 2e 68 74 74 70 52 65 71 75 65 73 74 2e 73  is.httpRequest.s
a9f0: 65 74 52 65 71 75 65 73 74 48 65 61 64 65 72 28  etRequestHeader(
aa00: 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 22 2c 20  "Content-type", 
aa10: 74 68 69 73 2e 6c 61 79 6f 75 74 2e 67 65 74 43  this.layout.getC
aa20: 6f 6e 74 65 6e 74 54 79 70 65 28 29 29 3b 0d 0a  ontentType());..
aa30: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 52 45              //RE
aa40: 46 45 52 45 52 20 77 69 6c 6c 20 62 65 20 74 68  FERER will be th
aa50: 65 20 74 6f 70 2d 6c 65 76 65 6c 0d 0a 20 20 20  e top-level..   
aa60: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 52 49 20           // URI 
aa70: 77 68 69 63 68 20 6d 61 79 20 64 69 66 66 65 72  which may differ
aa80: 20 66 72 6f 6d 20 74 68 65 20 6c 6f 63 61 74 69   from the locati
aa90: 6f 6e 20 6f 66 20 74 68 65 20 65 72 72 6f 72 20  on of the error 
aaa0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
aab0: 2f 2f 20 69 74 20 6f 63 63 75 72 73 20 69 6e 20  // it occurs in 
aac0: 61 6e 20 69 6e 63 6c 75 64 65 64 20 2e 6a 73 20  an included .js 
aad0: 66 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  file..          
aae0: 20 20 74 68 69 73 2e 68 74 74 70 52 65 71 75 65    this.httpReque
aaf0: 73 74 2e 73 65 74 52 65 71 75 65 73 74 48 65 61  st.setRequestHea
ab00: 64 65 72 28 22 52 45 46 45 52 45 52 22 2c 20 6c  der("REFERER", l
ab10: 6f 63 61 74 69 6f 6e 2e 68 72 65 66 29 3b 0d 0a  ocation.href);..
ab20: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
ab30: 2e 68 74 74 70 52 65 71 75 65 73 74 2e 73 65 74  .httpRequest.set
ab40: 52 65 71 75 65 73 74 48 65 61 64 65 72 28 22 43  RequestHeader("C
ab50: 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 22 2c 20  ontent-length", 
ab60: 63 6f 6e 74 65 6e 74 2e 6c 65 6e 67 74 68 29 3b  content.length);
ab70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
ab80: 69 73 2e 68 74 74 70 52 65 71 75 65 73 74 2e 73  is.httpRequest.s
ab90: 65 74 52 65 71 75 65 73 74 48 65 61 64 65 72 28  etRequestHeader(
aba0: 22 43 6f 6e 6e 65 63 74 69 6f 6e 22 2c 20 22 63  "Connection", "c
abb0: 6c 6f 73 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  lose");..       
abc0: 20 20 20 20 20 74 68 69 73 2e 68 74 74 70 52 65       this.httpRe
abd0: 71 75 65 73 74 2e 73 65 6e 64 28 20 63 6f 6e 74  quest.send( cont
abe0: 65 6e 74 20 29 3b 0d 0a 20 20 20 20 20 20 20 20  ent );..        
abf0: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20      ..          
ac00: 20 20 61 70 70 65 6e 64 65 72 20 3d 20 74 68 69    appender = thi
ac10: 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s;..            
ac20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
ac30: 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y {..           
ac40: 20 20 20 20 20 77 69 6e 64 6f 77 2e 73 65 74 54       window.setT
ac50: 69 6d 65 6f 75 74 28 66 75 6e 63 74 69 6f 6e 28  imeout(function(
ac60: 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ){..            
ac70: 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c 6f          log4jsLo
ac80: 67 67 65 72 2e 74 72 61 63 65 28 22 3e 20 41 6a  gger.trace("> Aj
ac90: 61 78 41 70 70 65 6e 64 65 72 2e 74 69 6d 65 6f  axAppender.timeo
aca0: 75 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ut");..         
acb0: 20 20 20 20 20 20 20 20 20 20 20 61 70 70 65 6e             appen
acc0: 64 65 72 2e 68 74 74 70 52 65 71 75 65 73 74 2e  der.httpRequest.
acd0: 6f 6e 72 65 61 64 79 73 74 61 74 65 63 68 61 6e  onreadystatechan
ace0: 67 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 7b  ge = function(){
acf0: 72 65 74 75 72 6e 3b 7d 3b 0d 0a 20 20 20 20 20  return;};..     
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
ad10: 70 70 65 6e 64 65 72 2e 68 74 74 70 52 65 71 75  ppender.httpRequ
ad20: 65 73 74 2e 61 62 6f 72 74 28 29 3b 0d 0a 20 20  est.abort();..  
ad30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad40: 20 20 2f 2f 74 68 69 73 2e 68 74 74 70 52 65 71    //this.httpReq
ad50: 75 65 73 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  uest = null;..  
ad60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad70: 20 20 61 70 70 65 6e 64 65 72 2e 69 73 49 6e 50    appender.isInP
ad80: 72 6f 67 72 65 73 73 20 3d 20 66 61 6c 73 65 3b  rogress = false;
ad90: 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20  ..        ..    
ada0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
adb0: 69 66 28 61 70 70 65 6e 64 65 72 2e 6c 6f 67 67  if(appender.logg
adc0: 69 6e 67 45 76 65 6e 74 4d 61 70 2e 6c 65 6e 67  ingEventMap.leng
add0: 74 68 28 29 20 3e 20 30 29 20 7b 0d 0a 20 20 20  th() > 0) {..   
ade0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
adf0: 20 20 20 20 20 61 70 70 65 6e 64 65 72 2e 73 65       appender.se
ae00: 6e 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  nd();..         
ae10: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
ae20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae30: 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 74    log4jsLogger.t
ae40: 72 61 63 65 28 22 3c 20 41 6a 61 78 41 70 70 65  race("< AjaxAppe
ae50: 6e 64 65 72 2e 74 69 6d 65 6f 75 74 22 29 3b 0d  nder.timeout");.
ae60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ae70: 20 7d 2c 20 74 68 69 73 2e 74 69 6d 65 6f 75 74   }, this.timeout
ae80: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ae90: 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d 0a 20  } catch (e) {.. 
aea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
aeb0: 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 66 61 74 61  og4jsLogger.fata
aec0: 6c 28 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  l(e);..         
aed0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
aee0: 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 74    log4jsLogger.t
aef0: 72 61 63 65 28 22 3e 20 41 6a 61 78 41 70 70 65  race("> AjaxAppe
af00: 6e 64 65 72 2e 73 65 6e 64 22 29 3b 0d 0a 20 20  nder.send");..  
af10: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d        }..    },.
af20: 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a  .    ..    /**..
af30: 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a      * @private..
af40: 20 20 20 20 2a 2f 0d 0a 20 20 20 20 6f 6e 52 65      */..    onRe
af50: 61 64 79 53 74 61 74 65 43 68 61 6e 67 65 64 3a  adyStateChanged:
af60: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
af70: 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c 6f 67         log4jsLog
af80: 67 65 72 2e 74 72 61 63 65 28 22 3e 20 41 6a 61  ger.trace("> Aja
af90: 78 41 70 70 65 6e 64 65 72 2e 6f 6e 52 65 61 64  xAppender.onRead
afa0: 79 53 74 61 74 65 43 68 61 6e 67 65 64 22 29 3b  yStateChanged");
afb0: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 72 65  ..        var re
afc0: 71 20 3d 20 74 68 69 73 2e 68 74 74 70 52 65 71  q = this.httpReq
afd0: 75 65 73 74 3b 0d 0a 20 20 20 20 20 20 20 20 69  uest;..        i
afe0: 66 20 28 74 68 69 73 2e 68 74 74 70 52 65 71 75  f (this.httpRequ
aff0: 65 73 74 2e 72 65 61 64 79 53 74 61 74 65 20 21  est.readyState !
b000: 3d 20 34 29 20 7b 20 0d 0a 20 20 20 20 20 20 20  = 4) { ..       
b010: 20 20 20 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65       log4jsLogge
b020: 72 2e 74 72 61 63 65 28 22 3c 20 41 6a 61 78 41  r.trace("< AjaxA
b030: 70 70 65 6e 64 65 72 2e 6f 6e 52 65 61 64 79 53  ppender.onReadyS
b040: 74 61 74 65 43 68 61 6e 67 65 64 3a 20 72 65 61  tateChanged: rea
b050: 64 79 53 74 61 74 65 20 22 20 2b 20 72 65 71 2e  dyState " + req.
b060: 72 65 61 64 79 53 74 61 74 65 20 2b 20 22 20 21  readyState + " !
b070: 3d 20 34 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  = 4");..        
b080: 20 20 20 20 72 65 74 75 72 6e 3b 20 0d 0a 20 20      return; ..  
b090: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
b0a0: 20 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 73   ..        var s
b0b0: 75 63 63 65 73 73 20 3d 20 28 28 74 79 70 65 6f  uccess = ((typeo
b0c0: 66 20 72 65 71 2e 73 74 61 74 75 73 20 3d 3d 3d  f req.status ===
b0d0: 20 22 75 6e 64 65 66 69 6e 65 64 22 29 20 7c 7c   "undefined") ||
b0e0: 20 72 65 71 2e 73 74 61 74 75 73 20 3d 3d 3d 20   req.status === 
b0f0: 30 20 7c 7c 20 28 72 65 71 2e 73 74 61 74 75 73  0 || (req.status
b100: 20 3e 3d 20 32 30 30 20 26 26 20 72 65 71 2e 73   >= 200 && req.s
b110: 74 61 74 75 73 20 3c 20 33 30 30 29 29 3b 0d 0a  tatus < 300));..
b120: 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
b130: 20 20 69 66 20 28 73 75 63 63 65 73 73 29 20 7b    if (success) {
b140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
b150: 67 34 6a 73 4c 6f 67 67 65 72 2e 74 72 61 63 65  g4jsLogger.trace
b160: 28 22 20 20 41 6a 61 78 41 70 70 65 6e 64 65 72  ("  AjaxAppender
b170: 2e 6f 6e 52 65 61 64 79 53 74 61 74 65 43 68 61  .onReadyStateCha
b180: 6e 67 65 64 3a 20 73 75 63 63 65 73 73 22 29 3b  nged: success");
b190: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b1a0: 2f 2f 72 65 61 64 79 20 73 65 6e 64 69 6e 67 20  //ready sending 
b1b0: 64 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  data..          
b1c0: 20 20 74 68 69 73 2e 69 73 49 6e 50 72 6f 67 72    this.isInProgr
b1d0: 65 73 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a  ess = false;....
b1e0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
b1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61  ..            va
b200: 72 20 6d 73 67 20 3d 20 22 20 20 41 6a 61 78 41  r msg = "  AjaxA
b210: 70 70 65 6e 64 65 72 2e 6f 6e 52 65 61 64 79 53  ppender.onReadyS
b220: 74 61 74 65 43 68 61 6e 67 65 64 3a 20 58 4d 4c  tateChanged: XML
b230: 48 74 74 70 52 65 71 75 65 73 74 20 72 65 71 75  HttpRequest requ
b240: 65 73 74 20 74 6f 20 55 52 4c 20 22 20 2b 20 74  est to URL " + t
b250: 68 69 73 2e 6c 6f 67 67 69 6e 67 55 72 6c 20 2b  his.loggingUrl +
b260: 20 22 20 72 65 74 75 72 6e 65 64 20 73 74 61 74   " returned stat
b270: 75 73 20 63 6f 64 65 20 22 20 2b 20 74 68 69 73  us code " + this
b280: 2e 68 74 74 70 52 65 71 75 65 73 74 2e 73 74 61  .httpRequest.sta
b290: 74 75 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  tus;..          
b2a0: 20 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 65    log4jsLogger.e
b2b0: 72 72 6f 72 28 6d 73 67 29 3b 0d 0a 20 20 20 20  rror(msg);..    
b2c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d      }..        .
b2d0: 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c  .        log4jsL
b2e0: 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3c 20 41  ogger.trace("< A
b2f0: 6a 61 78 41 70 70 65 6e 64 65 72 2e 6f 6e 52 65  jaxAppender.onRe
b300: 61 64 79 53 74 61 74 65 43 68 61 6e 67 65 64 3a  adyStateChanged:
b310: 20 72 65 61 64 79 53 74 61 74 65 20 3d 3d 20 34   readyState == 4
b320: 22 29 3b 09 09 0d 0a 20 20 20 20 7d 2c 0d 0a 20  ");....    },.. 
b330: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 47 65     /**..    * Ge
b340: 74 20 74 68 65 20 58 4d 4c 48 74 74 70 52 65 71  t the XMLHttpReq
b350: 75 65 73 74 20 6f 62 6a 65 63 74 20 69 6e 64 65  uest object inde
b360: 70 65 6e 64 65 6e 74 20 6f 66 20 62 72 6f 77 73  pendent of brows
b370: 65 72 2e 0d 0a 20 20 20 20 2a 20 40 70 72 69 76  er...    * @priv
b380: 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  ate..    */..   
b390: 20 67 65 74 58 6d 6c 48 74 74 70 52 65 71 75 65   getXmlHttpReque
b3a0: 73 74 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  st: function() {
b3b0: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73  ..        log4js
b3c0: 4c 6f 67 67 65 72 2e 74 72 61 63 65 28 22 3e 20  Logger.trace("> 
b3d0: 41 6a 61 78 41 70 70 65 6e 64 65 72 2e 67 65 74  AjaxAppender.get
b3e0: 58 6d 6c 48 74 74 70 52 65 71 75 65 73 74 22 29  XmlHttpRequest")
b3f0: 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ;..        ..   
b400: 20 20 20 20 20 76 61 72 20 68 74 74 70 52 65 71       var httpReq
b410: 75 65 73 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  uest = false;...
b420: 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b 09 09  .        try {..
b430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
b440: 20 28 77 69 6e 64 6f 77 73 2e 58 4d 4c 48 74 74   (windows.XMLHtt
b450: 70 52 65 71 75 65 73 74 29 20 7b 20 2f 2f 20 4d  pRequest) { // M
b460: 6f 7a 69 6c 6c 61 2c 20 53 61 66 61 72 69 2c 20  ozilla, Safari, 
b470: 49 45 37 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  IE7.....        
b480: 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70              http
b490: 52 65 71 75 65 73 74 20 3d 20 6e 65 77 20 58 4d  Request = new XM
b4a0: 4c 48 74 74 70 52 65 71 75 65 73 74 28 29 3b 0d  LHttpRequest();.
b4b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b4c0: 20 69 66 20 28 68 74 74 70 52 65 71 75 65 73 74   if (httpRequest
b4d0: 2e 6f 76 65 72 72 69 64 65 4d 69 6d 65 54 79 70  .overrideMimeTyp
b4e0: 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  e) {..          
b4f0: 20 20 20 20 20 20 20 20 20 20 68 74 74 70 52 65            httpRe
b500: 71 75 65 73 74 2e 6f 76 65 72 72 69 64 65 4d 69  quest.overrideMi
b510: 6d 65 54 79 70 65 28 74 68 69 73 2e 6c 61 79 6f  meType(this.layo
b520: 75 74 2e 67 65 74 43 6f 6e 74 65 6e 74 54 79 70  ut.getContentTyp
b530: 65 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  e());..         
b540: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b550: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20        } else if 
b560: 28 77 69 6e 64 6f 77 73 2e 63 61 70 74 69 6f 6e  (windows.caption
b570: 29 20 7b 20 2f 2f 20 49 45 0d 0a 20 20 20 20 20  ) { // IE..     
b580: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 20 7b             try {
b590: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b5a0: 20 20 20 20 20 20 68 74 74 70 52 65 71 75 65 73        httpReques
b5b0: 74 20 3d 20 6e 65 77 20 41 63 74 69 76 65 58 4f  t = new ActiveXO
b5c0: 62 6a 65 63 74 28 22 4d 73 78 6d 6c 32 2e 58 4d  bject("Msxml2.XM
b5d0: 4c 48 54 54 50 22 29 3b 0d 0a 20 20 20 20 20 20  LHTTP");..      
b5e0: 20 20 20 20 20 20 20 20 20 20 7d 20 63 61 74 63            } catc
b5f0: 68 20 28 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  h (e) {..       
b600: 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74               htt
b610: 70 52 65 71 75 65 73 74 20 3d 20 6e 65 77 20 41  pRequest = new A
b620: 63 74 69 76 65 58 4f 62 6a 65 63 74 28 22 4d 69  ctiveXObject("Mi
b630: 63 72 6f 73 6f 66 74 2e 58 4d 4c 48 54 54 50 22  crosoft.XMLHTTP"
b640: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
b650: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
b660: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20     }..        } 
b670: 63 61 74 63 68 20 28 65 29 20 7b 0d 0a 20 20 20  catch (e) {..   
b680: 20 20 20 20 20 20 20 20 20 68 74 74 70 52 65 71           httpReq
b690: 75 65 73 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  uest = false;.. 
b6a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b6b0: 20 20 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28    ..        if (
b6c0: 21 68 74 74 70 52 65 71 75 65 73 74 29 20 7b 0d  !httpRequest) {.
b6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67  .            log
b6e0: 34 6a 73 4c 6f 67 67 65 72 2e 66 61 74 61 6c 28  4jsLogger.fatal(
b6f0: 22 55 6e 66 6f 72 74 75 6e 61 74 65 6c 6c 79 20  "Unfortunatelly 
b700: 79 6f 75 72 20 62 72 6f 77 73 65 72 20 64 6f 65  your browser doe
b710: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 41 6a  s not support Aj
b720: 61 78 41 70 70 65 6e 64 65 72 20 66 6f 72 20 6c  axAppender for l
b730: 6f 67 34 6a 73 21 22 29 3b 0d 0a 20 20 20 20 20  og4js!");..     
b740: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a     }..        ..
b750: 20 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c 6f          log4jsLo
b760: 67 67 65 72 2e 74 72 61 63 65 28 22 3c 20 41 6a  gger.trace("< Aj
b770: 61 78 41 70 70 65 6e 64 65 72 2e 67 65 74 58 6d  axAppender.getXm
b780: 6c 48 74 74 70 52 65 71 75 65 73 74 22 29 3b 0d  lHttpRequest");.
b790: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
b7a0: 68 74 74 70 52 65 71 75 65 73 74 3b 0d 0a 20 20  httpRequest;..  
b7b0: 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20 20    },..    ..    
b7c0: 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 74 6f 53 74  /** ..    * toSt
b7d0: 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  ring..    */..  
b7e0: 20 20 74 6f 53 74 72 69 6e 67 3a 20 66 75 6e 63    toString: func
b7f0: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20  tion() {..      
b800: 20 20 72 65 74 75 72 6e 20 22 4c 6f 67 34 6a 73    return "Log4js
b810: 2e 41 6a 61 78 41 70 70 65 6e 64 65 72 5b 6c 6f  .AjaxAppender[lo
b820: 67 67 69 6e 67 55 72 6c 3d 22 20 2b 20 74 68 69  ggingUrl=" + thi
b830: 73 2e 6c 6f 67 67 69 6e 67 55 72 6c 20 2b 20 22  s.loggingUrl + "
b840: 2c 20 74 68 72 65 73 68 6f 6c 64 3d 22 20 2b 20  , threshold=" + 
b850: 74 68 69 73 2e 74 68 72 65 73 68 6f 6c 64 20 2b  this.threshold +
b860: 20 22 5d 22 3b 20 0d 0a 20 20 20 20 7d 0d 0a 7d   "]"; ..    }..}
b870: 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 46 69 6c  );..../**..* Fil
b880: 65 20 41 70 70 65 6e 64 65 72 20 77 72 69 74 69  e Appender writi
b890: 6e 67 20 74 68 65 20 6c 6f 67 73 20 74 6f 20 61  ng the logs to a
b8a0: 20 74 65 78 74 20 66 69 6c 65 2e 0d 0a 2a 20 50   text file...* P
b8b0: 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20 4f 6e 6c  LEASE NOTE - Onl
b8c0: 79 20 77 6f 72 6b 73 20 69 6e 20 49 45 20 61 6e  y works in IE an
b8d0: 64 20 4d 6f 7a 69 6c 6c 61 20 0d 0a 2a 20 75 73  d Mozilla ..* us
b8e0: 65 20 41 63 74 69 76 65 58 20 74 6f 20 77 72 69  e ActiveX to wri
b8f0: 74 65 20 66 69 6c 65 20 6f 6e 20 49 45 0d 0a 2a  te file on IE..*
b900: 20 75 73 65 20 58 50 43 6f 6d 20 63 6f 6d 70 6f   use XPCom compo
b910: 6e 65 6e 74 73 20 20 74 6f 20 77 72 69 74 65 20  nents  to write 
b920: 66 69 6c 65 20 6f 6e 20 4d 6f 7a 69 6c 6c 61 0d  file on Mozilla.
b930: 0a 2a 20 0d 0a 2a 20 40 65 78 74 65 6e 64 73 20  .* ..* @extends 
b940: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 20  Log4js.Appender 
b950: 0d 0a 2a 20 40 63 6f 6e 73 74 72 75 63 74 6f 72  ..* @constructor
b960: 0d 0a 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67 65  ..* @param logge
b970: 72 20 6c 6f 67 34 6a 73 20 69 6e 73 74 61 6e 63  r log4js instanc
b980: 65 20 74 68 69 73 20 61 70 70 65 6e 64 65 72 20  e this appender 
b990: 69 73 20 61 74 74 61 63 68 65 64 20 74 6f 0d 0a  is attached to..
b9a0: 2a 20 40 70 61 72 61 6d 20 66 69 6c 65 20 66 69  * @param file fi
b9b0: 6c 65 20 6c 6f 67 20 6d 65 73 73 61 67 65 73 20  le log messages 
b9c0: 77 69 6c 6c 20 62 65 20 77 72 69 74 74 65 6e 20  will be written 
b9d0: 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53 65  to..* @author Se
b9e0: 74 68 20 43 68 69 73 61 6d 6f 72 65 0d 0a 2a 20  th Chisamore..* 
b9f0: 40 61 75 74 68 6f 72 20 4e 69 63 6f 6c 61 73 20  @author Nicolas 
ba00: 4a 75 73 74 69 6e 20 6e 6a 75 73 74 69 6e 40 69  Justin njustin@i
ba10: 64 65 61 6c 78 2e 63 6f 6d 0d 0a 2a 20 40 61 75  dealx.com..* @au
ba20: 74 68 6f 72 20 47 72 65 67 6f 72 79 20 4b 6f 6b  thor Gregory Kok
ba30: 61 6e 6f 73 6b 79 20 67 6b 6f 6b 61 6e 6f 73 6b  anosky gkokanosk
ba40: 79 40 69 64 65 61 6c 78 2e 63 6f 6d 0d 0a 2a 2f  y@idealx.com..*/
ba50: 0d 0a 4c 6f 67 34 6a 73 2e 46 69 6c 65 41 70 70  ..Log4js.FileApp
ba60: 65 6e 64 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e  ender = function
ba70: 28 66 69 6c 65 29 20 7b 0d 0a 0d 0a 20 20 20 20  (file) {....    
ba80: 74 68 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e 65  this.layout = ne
ba90: 77 20 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c  w Log4js.SimpleL
baa0: 61 79 6f 75 74 28 29 3b 0d 0a 20 20 20 20 74 68  ayout();..    th
bab0: 69 73 2e 69 73 49 45 20 3d 20 27 75 6e 64 65 66  is.isIE = 'undef
bac0: 69 6e 65 64 27 3b 0d 0a 20 20 20 20 0d 0a 20 20  ined';..    ..  
bad0: 20 20 74 68 69 73 2e 66 69 6c 65 20 3d 20 66 69    this.file = fi
bae0: 6c 65 20 7c 7c 20 22 6c 6f 67 34 6a 73 2e 6c 6f  le || "log4js.lo
baf0: 67 22 3b 09 0d 0a 20 20 20 20 0d 0a 20 20 20 20  g";...    ..    
bb00: 74 72 79 7b 0d 0a 20 20 20 20 20 20 20 20 74 68  try{..        th
bb10: 69 73 2e 66 73 6f 20 3d 20 6e 65 77 20 41 63 74  is.fso = new Act
bb20: 69 76 65 58 4f 62 6a 65 63 74 28 22 53 63 72 69  iveXObject("Scri
bb30: 70 74 69 6e 67 2e 46 69 6c 65 53 79 73 74 65 6d  pting.FileSystem
bb40: 4f 62 6a 65 63 74 22 29 3b 0d 0a 20 20 20 20 20  Object");..     
bb50: 20 20 20 74 68 69 73 2e 69 73 49 45 20 3d 20 74     this.isIE = t
bb60: 72 75 65 3b 0d 0a 20 20 20 20 7d 20 63 61 74 63  rue;..    } catc
bb70: 68 28 65 29 7b 0d 0a 20 20 20 20 20 20 20 20 74  h(e){..        t
bb80: 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry {..          
bb90: 20 20 6e 65 74 73 63 61 70 65 2e 73 65 63 75 72    netscape.secur
bba0: 69 74 79 2e 50 72 69 76 69 6c 65 67 65 4d 61 6e  ity.PrivilegeMan
bbb0: 61 67 65 72 2e 65 6e 61 62 6c 65 50 72 69 76 69  ager.enablePrivi
bbc0: 6c 65 67 65 28 22 55 6e 69 76 65 72 73 61 6c 58  lege("UniversalX
bbd0: 50 43 6f 6e 6e 65 63 74 22 29 3b 0d 0a 20 20 20  PConnect");..   
bbe0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 73           this.fs
bbf0: 6f 20 3d 20 20 43 6f 6d 70 6f 6e 65 6e 74 73 2e  o =  Components.
bc00: 63 6c 61 73 73 65 73 5b 22 40 6d 6f 7a 69 6c 6c  classes["@mozill
bc10: 61 2e 6f 72 67 2f 66 69 6c 65 2f 6c 6f 63 61 6c  a.org/file/local
bc20: 3b 31 22 5d 2e 63 72 65 61 74 65 49 6e 73 74 61  ;1"].createInsta
bc30: 6e 63 65 28 43 6f 6d 70 6f 6e 65 6e 74 73 2e 69  nce(Components.i
bc40: 6e 74 65 72 66 61 63 65 73 2e 6e 73 49 4c 6f 63  nterfaces.nsILoc
bc50: 61 6c 46 69 6c 65 29 3b 0d 0a 20 20 20 20 20 20  alFile);..      
bc60: 20 20 20 20 20 20 74 68 69 73 2e 69 73 49 45 20        this.isIE 
bc70: 3d 20 66 61 6c 73 65 3b 20 2f 2f 6d 6f 7a 69 6c  = false; //mozil
bc80: 6c 61 20 26 20 63 6f 0d 0a 20 20 20 20 20 20 20  la & co..       
bc90: 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d 0a   } catch (e) {..
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 34              log4
bcb0: 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 65  jsLogger.error(e
bcc0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
bcd0: 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34     }..};....Log4
bce0: 6a 73 2e 46 69 6c 65 41 70 70 65 6e 64 65 72 2e  js.FileAppender.
bcf0: 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34  prototype = Log4
bd00: 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f  js.extend(new Lo
bd10: 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c  g4js.Appender(),
bd20: 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20   {  ..    /**.. 
bd30: 20 20 20 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67     * @param logg
bd40: 69 6e 67 45 76 65 6e 74 20 65 76 65 6e 74 20 74  ingEvent event t
bd50: 6f 20 62 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20  o be logged..   
bd60: 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a 73 2e 41   * @see Log4js.A
bd70: 70 70 65 6e 64 65 72 23 64 6f 41 70 70 65 6e 64  ppender#doAppend
bd80: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f  ..    */..    do
bd90: 41 70 70 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e  Append: function
bda0: 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b  (loggingEvent) {
bdb0: 0d 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d  ..        try {.
bdc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
bdd0: 20 66 69 6c 65 48 61 6e 64 6c 65 20 3d 20 6e 75   fileHandle = nu
bde0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
bdf0: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69   ..            i
be00: 66 28 20 74 68 69 73 2e 69 73 49 45 20 3d 3d 3d  f( this.isIE ===
be10: 20 27 75 6e 64 65 66 69 6e 65 64 27 29 20 7b 0d   'undefined') {.
be20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
be30: 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 65 72   log4jsLogger.er
be40: 72 6f 72 28 22 55 6e 73 75 70 70 6f 72 74 65 64  ror("Unsupported
be50: 20 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ")..           
be60: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
be70: 65 6c 73 65 20 69 66 28 20 74 68 69 73 2e 69 73  else if( this.is
be80: 49 45 20 29 7b 0d 0a 20 20 20 20 20 20 20 20 20  IE ){..         
be90: 20 20 20 20 20 20 20 2f 2f 20 74 72 79 20 6f 70         // try op
bea0: 65 6e 69 6e 67 20 65 78 69 73 74 69 6e 67 20 66  ening existing f
beb0: 69 6c 65 2c 20 63 72 65 61 74 65 20 69 66 20 6e  ile, create if n
bec0: 65 65 64 65 64 0d 0a 20 20 20 20 20 20 20 20 20  eeded..         
bed0: 20 20 20 20 20 20 20 66 69 6c 65 48 61 6e 64 6c         fileHandl
bee0: 65 20 3d 20 74 68 69 73 2e 66 73 6f 2e 4f 70 65  e = this.fso.Ope
bef0: 6e 54 65 78 74 46 69 6c 65 28 74 68 69 73 2e 66  nTextFile(this.f
bf00: 69 6c 65 2c 20 38 2c 20 74 72 75 65 29 3b 20 20  ile, 8, true);  
bf10: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
bf20: 20 20 20 20 20 20 20 20 2f 2f 20 77 72 69 74 65          // write
bf30: 20 6f 75 74 20 6f 75 72 20 64 61 74 61 0d 0a 20   out our data.. 
bf40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
bf50: 69 6c 65 48 61 6e 64 6c 65 2e 57 72 69 74 65 4c  ileHandle.WriteL
bf60: 69 6e 65 28 74 68 69 73 2e 6c 61 79 6f 75 74 2e  ine(this.layout.
bf70: 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67 45 76  format(loggingEv
bf80: 65 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ent));..        
bf90: 20 20 20 20 20 20 20 20 66 69 6c 65 48 61 6e 64          fileHand
bfa0: 6c 65 2e 63 6c 6f 73 65 28 29 3b 20 20 20 0d 0a  le.close();   ..
bfb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
bfc0: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
bfd0: 20 20 20 20 20 20 6e 65 74 73 63 61 70 65 2e 73        netscape.s
bfe0: 65 63 75 72 69 74 79 2e 50 72 69 76 69 6c 65 67  ecurity.Privileg
bff0: 65 4d 61 6e 61 67 65 72 2e 65 6e 61 62 6c 65 50  eManager.enableP
c000: 72 69 76 69 6c 65 67 65 28 22 55 6e 69 76 65 72  rivilege("Univer
c010: 73 61 6c 58 50 43 6f 6e 6e 65 63 74 22 29 3b 0d  salXPConnect");.
c020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c030: 20 74 68 69 73 2e 66 73 6f 2e 69 6e 69 74 57 69   this.fso.initWi
c040: 74 68 50 61 74 68 28 74 68 69 73 2e 66 69 6c 65  thPath(this.file
c050: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c060: 20 20 20 20 69 66 28 21 74 68 69 73 2e 66 73 6f      if(!this.fso
c070: 2e 65 78 69 73 74 73 28 29 29 20 7b 0d 0a 20 20  .exists()) {..  
c080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c090: 20 20 2f 2f 63 72 65 61 74 65 20 66 69 6c 65 20    //create file 
c0a0: 69 66 20 6e 65 65 64 65 64 0d 0a 20 20 20 20 20  if needed..     
c0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
c0c0: 68 69 73 2e 66 73 6f 2e 63 72 65 61 74 65 28 30  his.fso.create(0
c0d0: 78 30 30 2c 20 30 36 30 30 29 3b 0d 0a 20 20 20  x00, 0600);..   
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
c0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c100: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c110: 20 20 66 69 6c 65 48 61 6e 64 6c 65 20 3d 20 43    fileHandle = C
c120: 6f 6d 70 6f 6e 65 6e 74 73 2e 63 6c 61 73 73 65  omponents.classe
c130: 73 5b 22 40 6d 6f 7a 69 6c 6c 61 2e 6f 72 67 2f  s["@mozilla.org/
c140: 6e 65 74 77 6f 72 6b 2f 66 69 6c 65 2d 6f 75 74  network/file-out
c150: 70 75 74 2d 73 74 72 65 61 6d 3b 31 22 5d 2e 63  put-stream;1"].c
c160: 72 65 61 74 65 49 6e 73 74 61 6e 63 65 28 43 6f  reateInstance(Co
c170: 6d 70 6f 6e 65 6e 74 73 2e 69 6e 74 65 72 66 61  mponents.interfa
c180: 63 65 73 2e 6e 73 49 46 69 6c 65 4f 75 74 70 75  ces.nsIFileOutpu
c190: 74 53 74 72 65 61 6d 29 3b 0d 0a 20 20 20 20 20  tStream);..     
c1a0: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 48             fileH
c1b0: 61 6e 64 6c 65 2e 69 6e 69 74 28 20 74 68 69 73  andle.init( this
c1c0: 2e 66 73 6f 2c 20 30 78 30 34 20 7c 20 30 78 30  .fso, 0x04 | 0x0
c1d0: 38 20 7c 20 30 78 31 30 2c 20 30 36 34 2c 20 30  8 | 0x10, 064, 0
c1e0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c1f0: 20 20 20 20 76 61 72 20 6c 69 6e 65 20 3d 20 74      var line = t
c200: 68 69 73 2e 6c 61 79 6f 75 74 2e 66 6f 72 6d 61  his.layout.forma
c210: 74 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 3b  t(loggingEvent);
c220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c230: 20 20 66 69 6c 65 48 61 6e 64 6c 65 2e 77 72 69    fileHandle.wri
c240: 74 65 28 6c 69 6e 65 2c 20 6c 69 6e 65 2e 6c 65  te(line, line.le
c250: 6e 67 74 68 29 3b 20 2f 2f 77 72 69 74 65 20 64  ngth); //write d
c260: 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
c270: 20 20 20 20 20 66 69 6c 65 48 61 6e 64 6c 65 2e       fileHandle.
c280: 63 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  close();..      
c290: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
c2a0: 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d 0a   } catch (e) {..
c2b0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 34              log4
c2c0: 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 65  jsLogger.error(e
c2d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
c2e0: 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 0d 0a 20     },..    /*.. 
c2f0: 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a 73     * @see Log4js
c300: 2e 41 70 70 65 6e 64 65 72 23 64 6f 43 6c 65 61  .Appender#doClea
c310: 72 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64  r..    */..    d
c320: 6f 43 6c 65 61 72 3a 20 66 75 6e 63 74 69 6f 6e  oClear: function
c330: 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 72  () {..        tr
c340: 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y {..           
c350: 20 69 66 28 20 74 68 69 73 2e 69 73 49 45 20 29   if( this.isIE )
c360: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c370: 20 20 20 76 61 72 20 66 69 6c 65 48 61 6e 64 6c     var fileHandl
c380: 65 20 3d 20 74 68 69 73 2e 66 73 6f 2e 47 65 74  e = this.fso.Get
c390: 46 69 6c 65 28 74 68 69 73 2e 66 69 6c 65 29 3b  File(this.file);
c3a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c3b0: 20 20 66 69 6c 65 48 61 6e 64 6c 65 2e 44 65 6c    fileHandle.Del
c3c0: 65 74 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ete();..        
c3d0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
c3f0: 74 73 63 61 70 65 2e 73 65 63 75 72 69 74 79 2e  tscape.security.
c400: 50 72 69 76 69 6c 65 67 65 4d 61 6e 61 67 65 72  PrivilegeManager
c410: 2e 65 6e 61 62 6c 65 50 72 69 76 69 6c 65 67 65  .enablePrivilege
c420: 28 22 55 6e 69 76 65 72 73 61 6c 58 50 43 6f 6e  ("UniversalXPCon
c430: 6e 65 63 74 22 29 3b 0d 0a 20 20 20 20 20 20 20  nect");..       
c440: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 73           this.fs
c450: 6f 2e 69 6e 69 74 57 69 74 68 50 61 74 68 28 74  o.initWithPath(t
c460: 68 69 73 2e 66 69 6c 65 29 3b 0d 0a 20 20 20 20  his.file);..    
c470: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 74              if(t
c480: 68 69 73 2e 66 73 6f 2e 65 78 69 73 74 73 28 29  his.fso.exists()
c490: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
c4a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 66 73           this.fs
c4b0: 6f 2e 72 65 6d 6f 76 65 28 66 61 6c 73 65 29 3b  o.remove(false);
c4c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c4d0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
c4e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20 63 61   }..        } ca
c4f0: 74 63 68 20 28 65 29 20 7b 0d 0a 20 20 20 20 20  tch (e) {..     
c500: 20 20 20 20 20 20 20 6c 6f 67 34 6a 73 4c 6f 67         log4jsLog
c510: 67 65 72 2e 65 72 72 6f 72 28 65 29 3b 0d 0a 20  ger.error(e);.. 
c520: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c         }..    },
c530: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 20  ..    ..    /** 
c540: 0d 0a 20 20 20 20 2a 20 74 6f 53 74 72 69 6e 67  ..    * toString
c550: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 6f  ..    */..    to
c560: 53 74 72 69 6e 67 3a 20 66 75 6e 63 74 69 6f 6e  String: function
c570: 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65  () {..        re
c580: 74 75 72 6e 20 22 4c 6f 67 34 6a 73 2e 46 69 6c  turn "Log4js.Fil
c590: 65 41 70 70 65 6e 64 65 72 5b 66 69 6c 65 3d 22  eAppender[file="
c5a0: 20 2b 20 74 68 69 73 2e 66 69 6c 65 20 2b 20 22   + this.file + "
c5b0: 5d 22 3b 20 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b  ]"; ..    }..});
c5c0: 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 57 69 6e 64 6f  ..../**..* Windo
c5d0: 77 73 20 45 76 65 6e 74 20 41 70 70 65 6e 64 65  ws Event Appende
c5e0: 72 20 77 72 69 74 65 73 20 74 68 65 20 6c 6f 67  r writes the log
c5f0: 73 20 74 6f 20 74 68 65 20 57 69 6e 64 6f 77 73  s to the Windows
c600: 20 45 76 65 6e 74 20 6c 6f 67 2e 0d 0a 2a 20 50   Event log...* P
c610: 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20 4f 6e 6c  LEASE NOTE - Onl
c620: 79 20 77 6f 72 6b 73 20 69 6e 20 49 45 2e 2e 75  y works in IE..u
c630: 73 65 73 20 41 63 74 69 76 65 58 20 74 6f 20 77  ses ActiveX to w
c640: 72 69 74 65 20 74 6f 20 57 69 6e 64 6f 77 73 20  rite to Windows 
c650: 45 76 65 6e 74 20 6c 6f 67 0d 0a 2a 0d 0a 2a 20  Event log..*..* 
c660: 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e  @extends Log4js.
c670: 41 70 70 65 6e 64 65 72 20 0d 0a 2a 20 40 63 6f  Appender ..* @co
c680: 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40 70 61  nstructor..* @pa
c690: 72 61 6d 20 6c 6f 67 67 65 72 20 6c 6f 67 34 6a  ram logger log4j
c6a0: 73 20 69 6e 73 74 61 6e 63 65 20 74 68 69 73 20  s instance this 
c6b0: 61 70 70 65 6e 64 65 72 20 69 73 20 61 74 74 61  appender is atta
c6c0: 63 68 65 64 20 74 6f 0d 0a 2a 20 40 61 75 74 68  ched to..* @auth
c6d0: 6f 72 20 53 65 74 68 20 43 68 69 73 61 6d 6f 72  or Seth Chisamor
c6e0: 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 57 69  e..*/..Log4js.Wi
c6f0: 6e 64 6f 77 73 45 76 65 6e 74 41 70 70 65 6e 64  ndowsEventAppend
c700: 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20  er = function() 
c710: 7b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 74 68 69  {..    ..    thi
c720: 73 2e 6c 61 79 6f 75 74 20 3d 20 6e 65 77 20 4c  s.layout = new L
c730: 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c 61 79 6f  og4js.SimpleLayo
c740: 75 74 28 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 20  ut();..    ..   
c750: 20 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20   try {..        
c760: 74 68 69 73 2e 73 68 65 6c 6c 20 3d 20 6e 65 77  this.shell = new
c770: 20 41 63 74 69 76 65 58 4f 62 6a 65 63 74 28 22   ActiveXObject("
c780: 57 53 63 72 69 70 74 2e 53 68 65 6c 6c 22 29 3b  WScript.Shell");
c790: 0d 0a 20 20 20 20 7d 20 63 61 74 63 68 28 65 29  ..    } catch(e)
c7a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34   {..        log4
c7b0: 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 65  jsLogger.error(e
c7c0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d  );..    }..};...
c7d0: 0a 4c 6f 67 34 6a 73 2e 57 69 6e 64 6f 77 73 45  .Log4js.WindowsE
c7e0: 76 65 6e 74 41 70 70 65 6e 64 65 72 2e 70 72 6f  ventAppender.pro
c7f0: 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a 73 2e  totype = Log4js.
c800: 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67 34 6a  extend(new Log4j
c810: 73 2e 41 70 70 65 6e 64 65 72 28 29 2c 20 7b 20  s.Appender(), { 
c820: 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20   ..    /**..    
c830: 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67 69 6e 67  * @param logging
c840: 45 76 65 6e 74 20 65 76 65 6e 74 20 74 6f 20 62  Event event to b
c850: 65 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20 2a 20  e logged..    * 
c860: 40 73 65 65 20 4c 6f 67 34 6a 73 2e 41 70 70 65  @see Log4js.Appe
c870: 6e 64 65 72 23 64 6f 41 70 70 65 6e 64 0d 0a 20  nder#doAppend.. 
c880: 20 20 20 2a 2f 0d 0a 20 20 20 20 64 6f 41 70 70     */..    doApp
c890: 65 6e 64 3a 20 66 75 6e 63 74 69 6f 6e 28 6c 6f  end: function(lo
c8a0: 67 67 69 6e 67 45 76 65 6e 74 29 20 7b 0d 0a 20  ggingEvent) {.. 
c8b0: 20 20 20 20 20 20 20 76 61 72 20 77 69 6e 4c 65         var winLe
c8c0: 76 65 6c 20 3d 20 34 3b 0d 0a 20 20 20 20 20 20  vel = 4;..      
c8d0: 20 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4d    ..        // M
c8e0: 61 70 20 6c 6f 67 20 6c 65 76 65 6c 20 74 6f 20  ap log level to 
c8f0: 77 69 6e 64 6f 77 73 20 65 76 65 6e 74 20 6c 6f  windows event lo
c900: 67 20 6c 65 76 65 6c 2e 0d 0a 20 20 20 20 20 20  g level...      
c910: 20 20 2f 2f 20 57 69 6e 64 6f 77 73 20 65 76 65    // Windows eve
c920: 6e 74 73 3a 20 2d 20 53 55 43 43 45 53 53 3a 20  nts: - SUCCESS: 
c930: 30 2c 20 45 52 52 4f 52 3a 20 31 2c 20 57 41 52  0, ERROR: 1, WAR
c940: 4e 49 4e 47 3a 20 32 2c 20 49 4e 46 4f 52 4d 41  NING: 2, INFORMA
c950: 54 49 4f 4e 3a 20 34 2c 20 41 55 44 49 54 5f 53  TION: 4, AUDIT_S
c960: 55 43 43 45 53 53 3a 20 38 2c 20 41 55 44 49 54  UCCESS: 8, AUDIT
c970: 5f 46 41 49 4c 55 52 45 3a 20 31 36 0d 0a 20 20  _FAILURE: 16..  
c980: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6c 6f        switch (lo
c990: 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c  ggingEvent.level
c9a0: 29 20 7b 09 0d 0a 20 20 20 20 20 20 20 20 20 20  ) {...          
c9b0: 20 20 63 61 73 65 20 4c 6f 67 34 6a 73 2e 4c 65    case Log4js.Le
c9c0: 76 65 6c 2e 46 41 54 41 4c 3a 0d 0a 20 20 20 20  vel.FATAL:..    
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 4c              winL
c9e0: 65 76 65 6c 20 3d 20 31 3b 0d 0a 20 20 20 20 20  evel = 1;..     
c9f0: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
ca00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
ca10: 61 73 65 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  ase Log4js.Level
ca20: 2e 45 52 52 4f 52 3a 0d 0a 20 20 20 20 20 20 20  .ERROR:..       
ca30: 20 20 20 20 20 20 20 20 20 77 69 6e 4c 65 76 65           winLeve
ca40: 6c 20 3d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20  l = 1;..        
ca50: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
ca60: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
ca70: 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 2e 57 41   Log4js.Level.WA
ca80: 52 4e 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  RN:..           
ca90: 20 20 20 20 20 77 69 6e 4c 65 76 65 6c 20 3d 20       winLevel = 
caa0: 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2;..            
cab0: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
cac0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
cad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cae0: 20 20 77 69 6e 4c 65 76 65 6c 20 3d 20 34 3b 0d    winLevel = 4;.
caf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb00: 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20   break;..       
cb10: 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20   }..        ..  
cb20: 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20        try {..   
cb30: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 68           this.sh
cb40: 65 6c 6c 2e 4c 6f 67 45 76 65 6e 74 28 77 69 6e  ell.LogEvent(win
cb50: 4c 65 76 65 6c 2c 20 74 68 69 73 2e 6c 65 76 65  Level, this.leve
cb60: 6c 2e 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67  l.format(logging
cb70: 45 76 65 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20  Event));..      
cb80: 20 20 7d 20 63 61 74 63 68 28 65 29 20 7b 0d 0a    } catch(e) {..
cb90: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 34              log4
cba0: 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 65  jsLogger.error(e
cbb0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
cbc0: 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20     },..    ..   
cbd0: 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 74 6f 53   /** ..    * toS
cbe0: 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20  tring..    */.. 
cbf0: 20 20 20 74 6f 53 74 72 69 6e 67 3a 20 66 75 6e     toString: fun
cc00: 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20  ction() {..     
cc10: 20 20 20 72 65 74 75 72 6e 20 22 4c 6f 67 34 6a     return "Log4j
cc20: 73 2e 57 69 6e 64 6f 77 73 45 76 65 6e 74 41 70  s.WindowsEventAp
cc30: 70 65 6e 64 65 72 22 3b 20 0d 0a 20 20 20 20 7d  pender"; ..    }
cc40: 20 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a   ..});..../**..*
cc50: 20 4a 53 20 41 6c 65 72 74 20 41 70 70 65 6e 64   JS Alert Append
cc60: 65 72 20 77 72 69 74 65 73 20 74 68 65 20 6c 6f  er writes the lo
cc70: 67 73 20 74 6f 20 74 68 65 20 4a 61 76 61 53 63  gs to the JavaSc
cc80: 72 69 70 74 20 61 6c 65 72 74 20 64 69 61 6c 6f  ript alert dialo
cc90: 67 20 62 6f 78 0d 0a 2a 20 40 63 6f 6e 73 74 72  g box..* @constr
cca0: 75 63 74 6f 72 0d 0a 2a 20 40 65 78 74 65 6e 64  uctor..* @extend
ccb0: 73 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65  s Log4js.Appende
ccc0: 72 20 20 0d 0a 2a 20 40 70 61 72 61 6d 20 6c 6f  r  ..* @param lo
ccd0: 67 67 65 72 20 6c 6f 67 34 6a 73 20 69 6e 73 74  gger log4js inst
cce0: 61 6e 63 65 20 74 68 69 73 20 61 70 70 65 6e 64  ance this append
ccf0: 65 72 20 69 73 20 61 74 74 61 63 68 65 64 20 74  er is attached t
cd00: 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53 26 65  o..* @author S&e
cd10: 61 63 75 74 65 3b 62 61 73 74 69 65 6e 20 4c 45  acute;bastien LE
cd20: 43 41 43 48 45 55 52 0d 0a 2a 2f 0d 0a 4c 6f 67  CACHEUR..*/..Log
cd30: 34 6a 73 2e 4a 53 41 6c 65 72 74 41 70 70 65 6e  4js.JSAlertAppen
cd40: 64 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29  der = function()
cd50: 20 7b 0d 0a 0d 0a 20 20 20 20 74 68 69 73 2e 6c   {....    this.l
cd60: 61 79 6f 75 74 20 3d 20 6e 65 77 20 4c 6f 67 34  ayout = new Log4
cd70: 6a 73 2e 53 69 6d 70 6c 65 4c 61 79 6f 75 74 28  js.SimpleLayout(
cd80: 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73  );..};....Log4js
cd90: 2e 4a 53 41 6c 65 72 74 41 70 70 65 6e 64 65 72  .JSAlertAppender
cda0: 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67  .prototype = Log
cdb0: 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c  4js.extend(new L
cdc0: 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29  og4js.Appender()
cdd0: 2c 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d  , {  ..    /** .
cde0: 0a 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34  .    * @see Log4
cdf0: 6a 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70  js.Appender#doAp
ce00: 70 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  pend..    */..  
ce10: 20 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63    doAppend: func
ce20: 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e  tion(loggingEven
ce30: 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 6f  t) {..        Do
ce40: 4d 65 73 73 61 67 65 42 6f 78 28 74 68 69 73 2e  MessageBox(this.
ce50: 6c 61 79 6f 75 74 2e 67 65 74 48 65 61 64 65 72  layout.getHeader
ce60: 28 29 20 2b 20 74 68 69 73 2e 6c 61 79 6f 75 74  () + this.layout
ce70: 2e 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67 45  .format(loggingE
ce80: 76 65 6e 74 29 20 2b 20 74 68 69 73 2e 6c 61 79  vent) + this.lay
ce90: 6f 75 74 2e 67 65 74 46 6f 6f 74 65 72 28 29 29  out.getFooter())
cea0: 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d  ;..    },..    .
ceb0: 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a  .    /** ..    *
cec0: 20 74 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a   toString..    *
ced0: 2f 0d 0a 20 20 20 20 74 6f 53 74 72 69 6e 67 3a  /..    toString:
cee0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
cef0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 4c         return "L
cf00: 6f 67 34 6a 73 2e 4a 53 41 6c 65 72 74 41 70 70  og4js.JSAlertApp
cf10: 65 6e 64 65 72 22 3b 20 0d 0a 20 20 20 20 7d 09  ender"; ..    }.
cf20: 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20  ..});..../**..* 
cf30: 41 70 70 65 6e 64 65 72 20 77 72 69 74 65 73 20  Appender writes 
cf40: 74 68 65 20 6c 6f 67 73 20 74 6f 20 74 68 65 20  the logs to the 
cf50: 4a 61 76 61 53 63 72 69 70 74 20 63 6f 6e 73 6f  JavaScript conso
cf60: 6c 65 20 6f 66 20 4d 6f 7a 69 6c 6c 61 20 62 72  le of Mozilla br
cf70: 6f 77 73 65 72 0d 0a 2a 20 4d 6f 72 65 20 69 6e  owser..* More in
cf80: 66 6f 73 3a 20 68 74 74 70 3a 2f 2f 6b 62 2e 6d  fos: http://kb.m
cf90: 6f 7a 69 6c 6c 61 7a 69 6e 65 2e 6f 72 67 2f 69  ozillazine.org/i
cfa0: 6e 64 65 78 2e 70 68 70 3f 74 69 74 6c 65 3d 4a  ndex.php?title=J
cfb0: 61 76 61 53 63 72 69 70 74 5f 43 6f 6e 73 6f 6c  avaScript_Consol
cfc0: 65 26 72 65 64 69 72 65 63 74 3d 6e 6f 0d 0a 2a  e&redirect=no..*
cfd0: 20 50 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20 4f   PLEASE NOTE - O
cfe0: 6e 6c 79 20 77 6f 72 6b 73 20 69 6e 20 4d 6f 7a  nly works in Moz
cff0: 69 6c 6c 61 20 62 72 6f 77 73 65 72 0d 0a 2a 20  illa browser..* 
d000: 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20  @constructor..* 
d010: 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e  @extends Log4js.
d020: 41 70 70 65 6e 64 65 72 20 20 0d 0a 2a 20 40 70  Appender  ..* @p
d030: 61 72 61 6d 20 6c 6f 67 67 65 72 20 6c 6f 67 34  aram logger log4
d040: 6a 73 20 69 6e 73 74 61 6e 63 65 20 74 68 69 73  js instance this
d050: 20 61 70 70 65 6e 64 65 72 20 69 73 20 61 74 74   appender is att
d060: 61 63 68 65 64 20 74 6f 0d 0a 2a 20 40 61 75 74  ached to..* @aut
d070: 68 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72 69  hor Stephan Stri
d080: 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f  ttmatter..*/..Lo
d090: 67 34 6a 73 2e 4d 6f 7a 69 6c 6c 61 4a 53 43 6f  g4js.MozillaJSCo
d0a0: 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 20 3d 20  nsoleAppender = 
d0b0: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
d0c0: 20 20 74 68 69 73 2e 6c 61 79 6f 75 74 20 3d 20    this.layout = 
d0d0: 6e 65 77 20 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c  new Log4js.Simpl
d0e0: 65 4c 61 79 6f 75 74 28 29 3b 0d 0a 20 20 20 20  eLayout();..    
d0f0: 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e  try {..        n
d100: 65 74 73 63 61 70 65 2e 73 65 63 75 72 69 74 79  etscape.security
d110: 2e 50 72 69 76 69 6c 65 67 65 4d 61 6e 61 67 65  .PrivilegeManage
d120: 72 2e 65 6e 61 62 6c 65 50 72 69 76 69 6c 65 67  r.enablePrivileg
d130: 65 28 22 55 6e 69 76 65 72 73 61 6c 58 50 43 6f  e("UniversalXPCo
d140: 6e 6e 65 63 74 22 29 3b 0d 0a 20 20 20 20 20 20  nnect");..      
d150: 20 20 74 68 69 73 2e 6a 73 43 6f 6e 73 6f 6c 65    this.jsConsole
d160: 20 3d 20 43 6f 6d 70 6f 6e 65 6e 74 73 2e 63 6c   = Components.cl
d170: 61 73 73 65 73 5b 22 40 6d 6f 7a 69 6c 6c 61 2e  asses["@mozilla.
d180: 6f 72 67 2f 63 6f 6e 73 6f 6c 65 73 65 72 76 69  org/consoleservi
d190: 63 65 3b 31 22 5d 2e 67 65 74 53 65 72 76 69 63  ce;1"].getServic
d1a0: 65 28 43 6f 6d 70 6f 6e 65 6e 74 73 2e 69 6e 74  e(Components.int
d1b0: 65 72 66 61 63 65 73 2e 6e 73 49 43 6f 6e 73 6f  erfaces.nsIConso
d1c0: 6c 65 53 65 72 76 69 63 65 29 3b 0d 0a 20 20 20  leService);..   
d1d0: 20 20 20 20 20 74 68 69 73 2e 73 63 72 69 70 74       this.script
d1e0: 45 72 72 6f 72 20 3d 20 43 6f 6d 70 6f 6e 65 6e  Error = Componen
d1f0: 74 73 2e 63 6c 61 73 73 65 73 5b 22 40 6d 6f 7a  ts.classes["@moz
d200: 69 6c 6c 61 2e 6f 72 67 2f 73 63 72 69 70 74 65  illa.org/scripte
d210: 72 72 6f 72 3b 31 22 5d 2e 63 72 65 61 74 65 49  rror;1"].createI
d220: 6e 73 74 61 6e 63 65 28 43 6f 6d 70 6f 6e 65 6e  nstance(Componen
d230: 74 73 2e 69 6e 74 65 72 66 61 63 65 73 2e 6e 73  ts.interfaces.ns
d240: 49 53 63 72 69 70 74 45 72 72 6f 72 29 3b 0d 0a  IScriptError);..
d250: 20 20 20 20 7d 20 63 61 74 63 68 20 28 65 29 20      } catch (e) 
d260: 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 67 34 6a  {..        log4j
d270: 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 65 29  sLogger.error(e)
d280: 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a  ;..    }..};....
d290: 4c 6f 67 34 6a 73 2e 4d 6f 7a 69 6c 6c 61 4a 53  Log4js.MozillaJS
d2a0: 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 2e  ConsoleAppender.
d2b0: 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34  prototype = Log4
d2c0: 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f  js.extend(new Lo
d2d0: 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c  g4js.Appender(),
d2e0: 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a   {  ..    /** ..
d2f0: 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a      * @see Log4j
d300: 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70 70  s.Appender#doApp
d310: 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  end..    */..   
d320: 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63 74   doAppend: funct
d330: 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74  ion(loggingEvent
d340: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 72 79  ) {..        try
d350: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d360: 6e 65 74 73 63 61 70 65 2e 73 65 63 75 72 69 74  netscape.securit
d370: 79 2e 50 72 69 76 69 6c 65 67 65 4d 61 6e 61 67  y.PrivilegeManag
d380: 65 72 2e 65 6e 61 62 6c 65 50 72 69 76 69 6c 65  er.enablePrivile
d390: 67 65 28 22 55 6e 69 76 65 72 73 61 6c 58 50 43  ge("UniversalXPC
d3a0: 6f 6e 6e 65 63 74 22 29 3b 0d 0a 20 20 20 20 20  onnect");..     
d3b0: 20 20 20 20 20 20 20 74 68 69 73 2e 73 63 72 69         this.scri
d3c0: 70 74 45 72 72 6f 72 2e 69 6e 69 74 28 74 68 69  ptError.init(thi
d3d0: 73 2e 6c 61 79 6f 75 74 2e 66 6f 72 6d 61 74 28  s.layout.format(
d3e0: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 2c 20 6e  loggingEvent), n
d3f0: 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c  ull, null, null,
d400: 20 6e 75 6c 6c 2c 20 74 68 69 73 2e 67 65 74 46   null, this.getF
d410: 6c 61 67 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74  lag(loggingEvent
d420: 29 2c 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e  ), loggingEvent.
d430: 63 61 74 65 67 6f 72 79 4e 61 6d 65 29 3b 0d 0a  categoryName);..
d440: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
d450: 2e 6a 73 43 6f 6e 73 6f 6c 65 2e 6c 6f 67 4d 65  .jsConsole.logMe
d460: 73 73 61 67 65 28 74 68 69 73 2e 73 63 72 69 70  ssage(this.scrip
d470: 74 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  tError);..      
d480: 20 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d    } catch (e) {.
d490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67  .            log
d4a0: 34 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28  4jsLogger.error(
d4b0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
d4c0: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20      },..    ..  
d4d0: 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 74 6f    /** ..    * to
d4e0: 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a  String..    */..
d4f0: 20 20 20 20 74 6f 53 74 72 69 6e 67 3a 20 66 75      toString: fu
d500: 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
d510: 20 20 20 20 72 65 74 75 72 6e 20 22 4c 6f 67 34      return "Log4
d520: 6a 73 2e 4d 6f 7a 69 6c 6c 61 4a 53 43 6f 6e 73  js.MozillaJSCons
d530: 6f 6c 65 41 70 70 65 6e 64 65 72 22 3b 20 0d 0a  oleAppender"; ..
d540: 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20      },..    ..  
d550: 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 4d 61 70    /**..    * Map
d560: 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c 20 74 6f   Log4js.Level to
d570: 20 6a 73 43 6f 6e 73 6f 6c 65 20 46 6c 61 67 73   jsConsole Flags
d580: 3a 0d 0a 20 20 20 20 2a 20 3c 75 6c 3e 0d 0a 20  :..    * <ul>.. 
d590: 20 20 20 2a 20 3c 6c 69 3e 6e 73 49 53 63 72 69     * <li>nsIScri
d5a0: 70 74 45 72 72 6f 72 2e 65 72 72 6f 72 46 6c 61  ptError.errorFla
d5b0: 67 20 28 30 29 20 3d 20 4c 65 76 65 6c 2e 45 72  g (0) = Level.Er
d5c0: 72 6f 72 3c 2f 6c 69 3e 0d 0a 20 20 20 20 2a 20  ror</li>..    * 
d5d0: 3c 6c 69 3e 6e 73 49 53 63 72 69 70 74 45 72 72  <li>nsIScriptErr
d5e0: 6f 72 2e 77 61 72 6e 69 6e 67 46 6c 61 67 20 28  or.warningFlag (
d5f0: 31 29 3d 20 4c 6f 67 34 6a 73 2e 4c 65 76 65 6c  1)= Log4js.Level
d600: 2e 57 41 52 4e 3c 2f 6c 69 3e 0d 0a 20 20 20 20  .WARN</li>..    
d610: 2a 20 3c 6c 69 3e 6e 73 49 53 63 72 69 70 74 45  * <li>nsIScriptE
d620: 72 72 6f 72 2e 65 78 63 65 70 74 69 6f 6e 46 6c  rror.exceptionFl
d630: 61 67 20 28 32 29 20 3d 20 4c 6f 67 34 6a 73 2e  ag (2) = Log4js.
d640: 4c 65 76 65 6c 2e 46 41 54 41 4c 3c 2f 6c 69 3e  Level.FATAL</li>
d650: 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e 6e 73 49 53  ..    * <li>nsIS
d660: 63 72 69 70 74 45 72 72 6f 72 2e 73 74 72 69 63  criptError.stric
d670: 74 46 6c 61 67 20 28 34 29 20 3d 20 75 6e 75 73  tFlag (4) = unus
d680: 65 64 3c 2f 6c 69 3e 0d 0a 20 20 20 20 2a 20 3c  ed</li>..    * <
d690: 2f 75 6c 3e 0d 0a 20 20 20 20 2a 20 40 70 72 69  /ul>..    * @pri
d6a0: 76 61 74 65 0d 0a 20 20 20 20 2a 2f 09 0d 0a 20  vate..    */... 
d6b0: 20 20 20 67 65 74 46 6c 61 67 3a 20 66 75 6e 63     getFlag: func
d6c0: 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e  tion(loggingEven
d6d0: 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  t)..    {..     
d6e0: 20 20 20 76 61 72 20 72 65 74 76 61 6c 3b 0d 0a     var retval;..
d6f0: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28          switch (
d700: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76  loggingEvent.lev
d710: 65 6c 29 20 7b 09 0d 0a 20 20 20 20 20 20 20 20  el) {...        
d720: 20 20 20 20 63 61 73 65 20 4c 6f 67 34 6a 73 2e      case Log4js.
d730: 4c 65 76 65 6c 2e 46 41 54 41 4c 3a 0d 0a 20 20  Level.FATAL:..  
d740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
d750: 74 76 61 6c 20 3d 20 32 3b 2f 2f 6e 73 49 53 63  tval = 2;//nsISc
d760: 72 69 70 74 45 72 72 6f 72 2e 65 78 63 65 70 74  riptError.except
d770: 69 6f 6e 46 6c 61 67 20 3d 20 32 0d 0a 20 20 20  ionFlag = 2..   
d780: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
d790: 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ak;..           
d7a0: 20 63 61 73 65 20 4c 6f 67 34 6a 73 2e 4c 65 76   case Log4js.Lev
d7b0: 65 6c 2e 45 52 52 4f 52 3a 0d 0a 20 20 20 20 20  el.ERROR:..     
d7c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 76 61             retva
d7d0: 6c 20 3d 20 30 3b 2f 2f 6e 73 49 53 63 72 69 70  l = 0;//nsIScrip
d7e0: 74 45 72 72 6f 72 2e 65 72 72 6f 72 46 6c 61 67  tError.errorFlag
d7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d800: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
d810: 20 20 20 20 20 20 63 61 73 65 20 4c 6f 67 34 6a        case Log4j
d820: 73 2e 4c 65 76 65 6c 2e 57 41 52 4e 3a 0d 0a 20  s.Level.WARN:.. 
d830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
d840: 65 74 76 61 6c 20 3d 20 31 3b 2f 2f 6e 73 49 53  etval = 1;//nsIS
d850: 63 72 69 70 74 45 72 72 6f 72 2e 77 61 72 6e 69  criptError.warni
d860: 6e 67 46 6c 61 67 20 3d 20 31 0d 0a 20 20 20 20  ngFlag = 1..    
d870: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
d880: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
d890: 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20  default:..      
d8a0: 20 20 20 20 20 20 20 20 20 20 72 65 74 76 61 6c            retval
d8b0: 20 3d 20 31 3b 2f 2f 6e 73 49 53 63 72 69 70 74   = 1;//nsIScript
d8c0: 45 72 72 6f 72 2e 77 61 72 6e 69 6e 67 46 6c 61  Error.warningFla
d8d0: 67 20 3d 20 31 0d 0a 20 20 20 20 20 20 20 20 20  g = 1..         
d8e0: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
d8f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
d900: 20 20 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75    ..        retu
d910: 72 6e 20 72 65 74 76 61 6c 3b 09 09 0d 0a 20 20  rn retval;....  
d920: 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d    }..});..../**.
d930: 0a 2a 20 41 70 70 65 6e 64 65 72 20 77 72 69 74  .* Appender writ
d940: 65 73 20 74 68 65 20 6c 6f 67 73 20 74 6f 20 74  es the logs to t
d950: 68 65 20 4a 61 76 61 53 63 72 69 70 74 20 63 6f  he JavaScript co
d960: 6e 73 6f 6c 65 20 6f 66 20 4f 70 65 72 61 20 62  nsole of Opera b
d970: 72 6f 77 73 65 72 0d 0a 2a 20 50 4c 45 41 53 45  rowser..* PLEASE
d980: 20 4e 4f 54 45 20 2d 20 4f 6e 6c 79 20 77 6f 72   NOTE - Only wor
d990: 6b 73 20 69 6e 20 4f 70 65 72 61 20 62 72 6f 77  ks in Opera brow
d9a0: 73 65 72 0d 0a 2a 20 40 63 6f 6e 73 74 72 75 63  ser..* @construc
d9b0: 74 6f 72 0d 0a 2a 20 40 65 78 74 65 6e 64 73 20  tor..* @extends 
d9c0: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 20  Log4js.Appender 
d9d0: 20 0d 0a 2a 20 40 70 61 72 61 6d 20 6c 6f 67 67   ..* @param logg
d9e0: 65 72 20 6c 6f 67 34 6a 73 20 69 6e 73 74 61 6e  er log4js instan
d9f0: 63 65 20 74 68 69 73 20 61 70 70 65 6e 64 65 72  ce this appender
da00: 20 69 73 20 61 74 74 61 63 68 65 64 20 74 6f 0d   is attached to.
da10: 0a 2a 20 40 61 75 74 68 6f 72 20 53 74 65 70 68  .* @author Steph
da20: 61 6e 20 53 74 72 69 74 74 6d 61 74 74 65 72 0d  an Strittmatter.
da30: 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 4f 70 65 72  .*/..Log4js.Oper
da40: 61 4a 53 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64  aJSConsoleAppend
da50: 65 72 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20  er = function() 
da60: 7b 0d 0a 20 20 20 20 74 68 69 73 2e 6c 61 79 6f  {..    this.layo
da70: 75 74 20 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e  ut = new Log4js.
da80: 53 69 6d 70 6c 65 4c 61 79 6f 75 74 28 29 3b 0d  SimpleLayout();.
da90: 0a 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 4f 70  .};....Log4js.Op
daa0: 65 72 61 4a 53 43 6f 6e 73 6f 6c 65 41 70 70 65  eraJSConsoleAppe
dab0: 6e 64 65 72 2e 70 72 6f 74 6f 74 79 70 65 20 3d  nder.prototype =
dac0: 20 4c 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e   Log4js.extend(n
dad0: 65 77 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64  ew Log4js.Append
dae0: 65 72 28 29 2c 20 7b 20 20 0d 0a 20 20 20 20 2f  er(), {  ..    /
daf0: 2a 2a 20 0d 0a 20 20 20 20 2a 20 40 73 65 65 20  ** ..    * @see 
db00: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 23  Log4js.Appender#
db10: 64 6f 41 70 70 65 6e 64 0d 0a 20 20 20 20 2a 2f  doAppend..    */
db20: 0d 0a 20 20 20 20 64 6f 41 70 70 65 6e 64 3a 20  ..    doAppend: 
db30: 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67  function(logging
db40: 45 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20  Event) {..      
db50: 20 20 6f 70 65 72 61 2e 70 6f 73 74 45 72 72 6f    opera.postErro
db60: 72 28 74 68 69 73 2e 6c 61 79 6f 75 74 2e 66 6f  r(this.layout.fo
db70: 72 6d 61 74 28 6c 6f 67 67 69 6e 67 45 76 65 6e  rmat(loggingEven
db80: 74 29 29 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20  t));..    },..  
db90: 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20    ..    /** ..  
dba0: 20 20 2a 20 74 6f 53 74 72 69 6e 67 0d 0a 20 20    * toString..  
dbb0: 20 20 2a 2f 0d 0a 20 20 20 20 74 6f 53 74 72 69    */..    toStri
dbc0: 6e 67 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  ng: function() {
dbd0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
dbe0: 20 22 4c 6f 67 34 6a 73 2e 4f 70 65 72 61 4a 53   "Log4js.OperaJS
dbf0: 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 22  ConsoleAppender"
dc00: 3b 20 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d 0a  ; ..    }..});..
dc10: 0d 0a 2f 2a 2a 0d 0a 2a 20 41 70 70 65 6e 64 65  ../**..* Appende
dc20: 72 20 77 72 69 74 65 73 20 74 68 65 20 6c 6f 67  r writes the log
dc30: 73 20 74 6f 20 74 68 65 20 4a 61 76 61 53 63 72  s to the JavaScr
dc40: 69 70 74 20 63 6f 6e 73 6f 6c 65 20 6f 66 20 53  ipt console of S
dc50: 61 66 61 72 69 20 62 72 6f 77 73 65 72 0d 0a 2a  afari browser..*
dc60: 20 50 4c 45 41 53 45 20 4e 4f 54 45 20 2d 20 4f   PLEASE NOTE - O
dc70: 6e 6c 79 20 77 6f 72 6b 73 20 69 6e 20 53 61 66  nly works in Saf
dc80: 61 72 69 20 62 72 6f 77 73 65 72 0d 0a 2a 20 40  ari browser..* @
dc90: 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40  constructor..* @
dca0: 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e 41  extends Log4js.A
dcb0: 70 70 65 6e 64 65 72 20 20 0d 0a 2a 20 40 70 61  ppender  ..* @pa
dcc0: 72 61 6d 20 6c 6f 67 67 65 72 20 6c 6f 67 34 6a  ram logger log4j
dcd0: 73 20 69 6e 73 74 61 6e 63 65 20 74 68 69 73 20  s instance this 
dce0: 61 70 70 65 6e 64 65 72 20 69 73 20 61 74 74 61  appender is atta
dcf0: 63 68 65 64 20 74 6f 0d 0a 2a 20 40 61 75 74 68  ched to..* @auth
dd00: 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72 69 74  or Stephan Strit
dd10: 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67  tmatter..*/..Log
dd20: 34 6a 73 2e 53 61 66 61 72 69 4a 53 43 6f 6e 73  4js.SafariJSCons
dd30: 6f 6c 65 41 70 70 65 6e 64 65 72 20 3d 20 66 75  oleAppender = fu
dd40: 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
dd50: 74 68 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e 65  this.layout = ne
dd60: 77 20 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c  w Log4js.SimpleL
dd70: 61 79 6f 75 74 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a  ayout();..};....
dd80: 4c 6f 67 34 6a 73 2e 53 61 66 61 72 69 4a 53 43  Log4js.SafariJSC
dd90: 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 2e 70  onsoleAppender.p
dda0: 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a  rototype = Log4j
ddb0: 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67  s.extend(new Log
ddc0: 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c 20  4js.Appender(), 
ddd0: 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20  {  ..    /** .. 
dde0: 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a 73     * @see Log4js
ddf0: 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70 70 65  .Appender#doAppe
de00: 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  nd..    */..    
de10: 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63 74 69  doAppend: functi
de20: 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29  on(loggingEvent)
de30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 77 69 6e 64   {..        wind
de40: 6f 77 2e 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 74  ow.console.log(t
de50: 68 69 73 2e 6c 61 79 6f 75 74 2e 66 6f 72 6d 61  his.layout.forma
de60: 74 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 29  t(loggingEvent))
de70: 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d  ;..    },..    .
de80: 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a  .    /** ..    *
de90: 20 74 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a   toString..    *
dea0: 2f 0d 0a 20 20 20 20 74 6f 53 74 72 69 6e 67 3a  /..    toString:
deb0: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
dec0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 4c         return "L
ded0: 6f 67 34 6a 73 2e 53 61 66 61 72 69 4a 53 43 6f  og4js.SafariJSCo
dee0: 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 22 3b 20  nsoleAppender"; 
def0: 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a  ..    }..});....
df00: 2f 2a 2a 0d 0a 2a 20 41 70 70 65 6e 64 65 72 20  /**..* Appender 
df10: 77 72 69 74 65 73 20 74 68 65 20 6c 6f 67 73 20  writes the logs 
df20: 74 6f 20 74 68 65 20 4a 61 76 61 53 63 72 69 70  to the JavaScrip
df30: 74 20 63 6f 6e 73 6f 6c 65 20 6f 66 20 4f 70 65  t console of Ope
df40: 72 61 20 62 72 6f 77 73 65 72 0d 0a 2a 20 50 4c  ra browser..* PL
df50: 45 41 53 45 20 4e 4f 54 45 20 2d 20 4f 6e 6c 79  EASE NOTE - Only
df60: 20 77 6f 72 6b 73 20 69 6e 20 4f 70 65 72 61 20   works in Opera 
df70: 62 72 6f 77 73 65 72 0d 0a 2a 20 40 63 6f 6e 73  browser..* @cons
df80: 74 72 75 63 74 6f 72 0d 0a 2a 20 40 65 78 74 65  tructor..* @exte
df90: 6e 64 73 20 4c 6f 67 34 6a 73 2e 41 70 70 65 6e  nds Log4js.Appen
dfa0: 64 65 72 20 20 0d 0a 2a 20 40 70 61 72 61 6d 20  der  ..* @param 
dfb0: 6c 6f 67 67 65 72 20 6c 6f 67 34 6a 73 20 69 6e  logger log4js in
dfc0: 73 74 61 6e 63 65 20 74 68 69 73 20 61 70 70 65  stance this appe
dfd0: 6e 64 65 72 20 69 73 20 61 74 74 61 63 68 65 64  nder is attached
dfe0: 20 74 6f 0d 0a 2a 20 40 61 75 74 68 6f 72 20 53   to..* @author S
dff0: 74 65 70 68 61 6e 20 53 74 72 69 74 74 6d 61 74  tephan Strittmat
e000: 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e  ter..*/..Log4js.
e010: 53 6e 65 67 6f 70 61 74 4a 53 43 6f 6e 73 6f 6c  SnegopatJSConsol
e020: 65 41 70 70 65 6e 64 65 72 20 3d 20 66 75 6e 63  eAppender = func
e030: 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 74 68  tion() {..    th
e040: 69 73 2e 6c 61 79 6f 75 74 20 3d 20 6e 65 77 20  is.layout = new 
e050: 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c 61 79  Log4js.SimpleLay
e060: 6f 75 74 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f  out();..};....Lo
e070: 67 34 6a 73 2e 53 6e 65 67 6f 70 61 74 4a 53 43  g4js.SnegopatJSC
e080: 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 2e 70  onsoleAppender.p
e090: 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a  rototype = Log4j
e0a0: 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67  s.extend(new Log
e0b0: 34 6a 73 2e 41 70 70 65 6e 64 65 72 28 29 2c 20  4js.Appender(), 
e0c0: 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20  {  ..    /** .. 
e0d0: 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a 73     * @see Log4js
e0e0: 2e 41 70 70 65 6e 64 65 72 23 64 6f 41 70 70 65  .Appender#doAppe
e0f0: 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  nd..    */..    
e100: 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e 63 74 69  doAppend: functi
e110: 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29  on(loggingEvent)
e120: 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20   {..        var 
e130: 6d 65 73 73 61 67 65 20 3d 20 74 68 69 73 2e 6c  message = this.l
e140: 61 79 6f 75 74 2e 66 6f 72 6d 61 74 28 6c 6f 67  ayout.format(log
e150: 67 69 6e 67 45 76 65 6e 74 29 3b 0d 0a 20 20 20  gingEvent);..   
e160: 20 20 20 20 20 69 66 20 28 6d 65 73 73 61 67 65       if (message
e170: 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ){..            
e180: 4d 65 73 73 61 67 65 28 27 27 2b 6d 65 73 73 61  Message(''+messa
e190: 67 65 2e 72 65 70 6c 61 63 65 28 2f 5c 6e 7b 31  ge.replace(/\n{1
e1a0: 2c 7d 24 2f 67 2c 20 27 27 29 29 3b 0d 0a 20 20  ,}$/g, ''));..  
e1b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 2c 0d        }..    },.
e1c0: 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 20 0d  .    ..    /** .
e1d0: 0a 20 20 20 20 2a 20 74 6f 53 74 72 69 6e 67 0d  .    * toString.
e1e0: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 6f 53  .    */..    toS
e1f0: 74 72 69 6e 67 3a 20 66 75 6e 63 74 69 6f 6e 28  tring: function(
e200: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ) {..        ret
e210: 75 72 6e 20 22 4c 6f 67 34 6a 73 2e 53 6e 65 67  urn "Log4js.Sneg
e220: 6f 70 61 74 4a 53 43 6f 6e 73 6f 6c 65 41 70 70  opatJSConsoleApp
e230: 65 6e 64 65 72 22 3b 20 0d 0a 20 20 20 20 7d 0d  ender"; ..    }.
e240: 0a 7d 29 3b 0d 0a 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a  .});....../**..*
e250: 20 4a 61 76 61 53 63 72 69 70 74 20 43 6f 6e 73   JavaScript Cons
e260: 6f 6c 65 20 41 70 70 65 6e 64 65 72 20 77 68 69  ole Appender whi
e270: 63 68 20 69 73 20 62 72 6f 77 73 65 72 20 69 6e  ch is browser in
e280: 64 65 70 65 6e 64 65 6e 74 2e 0d 0a 2a 20 49 74  dependent...* It
e290: 20 63 68 65 63 6b 73 20 69 6e 74 65 72 6e 61 6c   checks internal
e2a0: 6c 79 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  ly for the curre
e2b0: 6e 74 20 62 72 6f 77 73 65 72 20 61 6e 64 20 61  nt browser and a
e2c0: 64 64 73 20 64 65 6c 65 67 61 74 65 20 74 6f 0d  dds delegate to.
e2d0: 0a 2a 20 73 70 65 63 69 66 69 63 20 4a 61 76 61  .* specific Java
e2e0: 53 63 72 69 70 74 20 43 6f 6e 73 6f 6c 65 20 41  Script Console A
e2f0: 70 70 65 6e 64 65 72 20 6f 66 20 74 68 65 20 62  ppender of the b
e300: 72 6f 77 73 65 72 2e 0d 0a 2a 20 0d 0a 2a 20 40  rowser...* ..* @
e310: 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20 53  author Stephan S
e320: 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 20 40  trittmatter..* @
e330: 73 69 6e 63 65 20 31 2e 30 0d 0a 2a 2f 0d 0a 4c  since 1.0..*/..L
e340: 6f 67 34 6a 73 2e 42 72 6f 77 73 65 72 43 6f 6e  og4js.BrowserCon
e350: 73 6f 6c 65 41 70 70 65 6e 64 65 72 20 3d 20 66  soleAppender = f
e360: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
e370: 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 44 65 6c 65   /**..    * Dele
e380: 67 61 74 65 20 66 6f 72 20 62 72 6f 77 73 65 72  gate for browser
e390: 20 73 70 65 63 69 66 69 63 20 69 6d 70 6c 65 6d   specific implem
e3a0: 65 6e 74 61 74 69 6f 6e 0d 0a 20 20 20 20 2a 20  entation..    * 
e3b0: 40 74 79 70 65 20 4c 6f 67 34 6a 73 2e 41 70 70  @type Log4js.App
e3c0: 65 6e 64 65 72 0d 0a 20 20 20 20 2a 20 40 70 72  ender..    * @pr
e3d0: 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ivate..    */.. 
e3e0: 20 20 20 74 68 69 73 2e 63 6f 6e 73 6f 6c 65 44     this.consoleD
e3f0: 65 6c 65 67 61 74 65 20 3d 20 6e 75 6c 6c 3b 0d  elegate = null;.
e400: 0a 20 20 20 20 0d 0a 20 20 20 20 69 66 20 28 77  .    ..    if (w
e410: 69 6e 64 6f 77 73 2e 63 6f 6e 73 6f 6c 65 29 20  indows.console) 
e420: 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  {..        this.
e430: 63 6f 6e 73 6f 6c 65 44 65 6c 65 67 61 74 65 20  consoleDelegate 
e440: 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 53 61 66  = new Log4js.Saf
e450: 61 72 69 4a 53 43 6f 6e 73 6f 6c 65 41 70 70 65  ariJSConsoleAppe
e460: 6e 64 65 72 28 29 3b 20 0d 0a 20 20 20 20 7d 0d  nder(); ..    }.
e470: 0a 20 20 20 20 65 6c 73 65 20 69 66 20 28 77 69  .    else if (wi
e480: 6e 64 6f 77 73 2e 6f 70 65 72 61 29 20 7b 0d 0a  ndows.opera) {..
e490: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
e4a0: 73 6f 6c 65 44 65 6c 65 67 61 74 65 20 3d 20 6e  soleDelegate = n
e4b0: 65 77 20 4c 6f 67 34 6a 73 2e 4f 70 65 72 61 4a  ew Log4js.OperaJ
e4c0: 53 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72  SConsoleAppender
e4d0: 28 29 3b 20 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  (); ..    }..   
e4e0: 20 65 6c 73 65 20 69 66 28 77 69 6e 64 6f 77 73   else if(windows
e4f0: 2e 6e 65 74 73 63 61 70 65 29 20 7b 0d 0a 20 20  .netscape) {..  
e500: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 73 6f        this.conso
e510: 6c 65 44 65 6c 65 67 61 74 65 20 3d 20 6e 65 77  leDelegate = new
e520: 20 4c 6f 67 34 6a 73 2e 4d 6f 7a 4a 53 43 6f 6e   Log4js.MozJSCon
e530: 73 6f 6c 65 41 70 70 65 6e 64 65 72 28 29 3b 20  soleAppender(); 
e540: 0d 0a 20 20 20 20 7d 20 0d 0a 20 20 20 20 65 6c  ..    } ..    el
e550: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 72  se {..        tr
e560: 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y {..           
e570: 20 76 61 72 20 73 6e 20 3d 20 76 38 56 65 72 73   var sn = v8Vers
e580: 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ion;..          
e590: 20 20 2f 2f 64 65 62 75 67 67 65 72 3b 0d 0a 20    //debugger;.. 
e5a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
e5b0: 6e 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n){..           
e5c0: 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 73 6f 6c       this.consol
e5d0: 65 44 65 6c 65 67 61 74 65 20 3d 20 6e 65 77 20  eDelegate = new 
e5e0: 4c 6f 67 34 6a 73 2e 53 6e 65 67 6f 70 61 74 4a  Log4js.SnegopatJ
e5f0: 53 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72  SConsoleAppender
e600: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
e610: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
e620: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 34 6a             log4j
e630: 73 4c 6f 67 67 65 72 2e 65 72 72 6f 72 28 22 55  sLogger.error("U
e640: 6e 73 75 70 70 6f 72 74 65 64 20 22 29 3b 0d 0a  nsupported ");..
e650: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e660: 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20             ..   
e670: 20 20 20 20 20 7d 20 63 61 74 63 68 28 65 29 20       } catch(e) 
e680: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  {..            l
e690: 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 65 72 72 6f  og4jsLogger.erro
e6a0: 72 28 22 55 6e 73 75 70 70 6f 72 74 65 64 20 22  r("Unsupported "
e6b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
e6c0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 7d 0d 0a         ..    }..
e6d0: 20 20 20 20 2f 2f 65 6c 73 65 20 7b 0d 0a 20 20      //else {..  
e6e0: 20 20 2f 2f 20 20 20 2f 2f 40 74 6f 64 6f 0d 0a    //   //@todo..
e6f0: 20 20 20 20 2f 2f 20 20 20 6c 6f 67 34 6a 73 4c      //   log4jsL
e700: 6f 67 67 65 72 2e 65 72 72 6f 72 28 22 55 6e 73  ogger.error("Uns
e710: 75 70 70 6f 72 74 65 64 20 42 72 6f 77 73 65 72  upported Browser
e720: 22 29 3b 0d 0a 20 20 20 20 2f 2f 7d 0d 0a 7d 3b  ");..    //}..};
e730: 0d 0a 0d 0a 4c 6f 67 34 6a 73 2e 42 72 6f 77 73  ....Log4js.Brows
e740: 65 72 43 6f 6e 73 6f 6c 65 41 70 70 65 6e 64 65  erConsoleAppende
e750: 72 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f  r.prototype = Lo
e760: 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20  g4js.extend(new 
e770: 4c 6f 67 34 6a 73 2e 41 70 70 65 6e 64 65 72 28  Log4js.Appender(
e780: 29 2c 20 7b 20 20 0d 0a 20 20 20 20 2f 2a 2a 20  ), {  ..    /** 
e790: 0d 0a 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67  ..    * @see Log
e7a0: 34 6a 73 2e 41 70 70 65 6e 64 65 72 23 64 6f 41  4js.Appender#doA
e7b0: 70 70 65 6e 64 0d 0a 20 20 20 20 2a 2f 0d 0a 20  ppend..    */.. 
e7c0: 20 20 20 64 6f 41 70 70 65 6e 64 3a 20 66 75 6e     doAppend: fun
e7d0: 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65  ction(loggingEve
e7e0: 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74  nt) {..        t
e7f0: 68 69 73 2e 63 6f 6e 73 6f 6c 65 44 65 6c 65 67  his.consoleDeleg
e800: 61 74 65 2e 64 6f 41 70 70 65 6e 64 28 6c 6f 67  ate.doAppend(log
e810: 67 69 6e 67 45 76 65 6e 74 29 3b 0d 0a 20 20 20  gingEvent);..   
e820: 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20   },..    /** .. 
e830: 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a 73     * @see Log4js
e840: 2e 41 70 70 65 6e 64 65 72 23 64 6f 43 6c 65 61  .Appender#doClea
e850: 72 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 64  r..    */..    d
e860: 6f 43 6c 65 61 72 3a 20 66 75 6e 63 74 69 6f 6e  oClear: function
e870: 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68  () {..        th
e880: 69 73 2e 63 6f 6e 73 6f 6c 65 44 65 6c 65 67 61  is.consoleDelega
e890: 74 65 2e 64 6f 43 6c 65 61 72 28 29 3b 0d 0a 20  te.doClear();.. 
e8a0: 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 0d 0a     },..    /**..
e8b0: 20 20 20 20 2a 20 40 73 65 65 20 4c 6f 67 34 6a      * @see Log4j
e8c0: 73 2e 41 70 70 65 6e 64 65 72 23 73 65 74 4c 61  s.Appender#setLa
e8d0: 79 6f 75 74 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  yout..    */..  
e8e0: 20 20 73 65 74 4c 61 79 6f 75 74 3a 20 66 75 6e    setLayout: fun
e8f0: 63 74 69 6f 6e 28 6c 61 79 6f 75 74 29 7b 0d 0a  ction(layout){..
e900: 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e          this.con
e910: 73 6f 6c 65 44 65 6c 65 67 61 74 65 2e 73 65 74  soleDelegate.set
e920: 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 29 3b 0d  Layout(layout);.
e930: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
e940: 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 74     /** ..    * t
e950: 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d  oString..    */.
e960: 0a 20 20 20 20 74 6f 53 74 72 69 6e 67 3a 20 66  .    toString: f
e970: 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20  unction() {..   
e980: 20 20 20 20 20 72 65 74 75 72 6e 20 22 4c 6f 67       return "Log
e990: 34 6a 73 2e 42 72 6f 77 73 65 72 43 6f 6e 73 6f  4js.BrowserConso
e9a0: 6c 65 41 70 70 65 6e 64 65 72 3a 20 22 20 2b 20  leAppender: " + 
e9b0: 74 68 69 73 2e 63 6f 6e 73 6f 6c 65 44 65 6c 65  this.consoleDele
e9c0: 67 61 74 65 2e 74 6f 53 74 72 69 6e 67 28 29 3b  gate.toString();
e9d0: 20 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d   ..    }..});...
e9e0: 0a 2f 2a 2a 0d 0a 2a 20 53 69 6d 70 6c 65 4c 61  ./**..* SimpleLa
e9f0: 79 6f 75 74 20 63 6f 6e 73 69 73 74 73 20 6f 66  yout consists of
ea00: 20 74 68 65 20 6c 65 76 65 6c 20 6f 66 20 74 68   the level of th
ea10: 65 20 6c 6f 67 20 73 74 61 74 65 6d 65 6e 74 2c  e log statement,
ea20: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 22 20 2d   followed by " -
ea30: 20 22 20 0d 0a 2a 20 61 6e 64 20 74 68 65 6e 20   " ..* and then 
ea40: 74 68 65 20 6c 6f 67 20 6d 65 73 73 61 67 65 20  the log message 
ea50: 69 74 73 65 6c 66 2e 20 46 6f 72 20 65 78 61 6d  itself. For exam
ea60: 70 6c 65 2c 0d 0a 2a 20 3c 63 6f 64 65 3e 44 45  ple,..* <code>DE
ea70: 42 55 47 20 2d 20 48 65 6c 6c 6f 20 77 6f 72 6c  BUG - Hello worl
ea80: 64 3c 2f 63 6f 64 65 3e 0d 0a 2a 0d 0a 2a 20 40  d</code>..*..* @
ea90: 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40  constructor..* @
eaa0: 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e 4c  extends Log4js.L
eab0: 61 79 6f 75 74 0d 0a 2a 20 40 65 78 74 65 6e 64  ayout..* @extend
eac0: 73 20 4c 61 79 6f 75 74 0d 0a 2a 20 40 61 75 74  s Layout..* @aut
ead0: 68 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72 69  hor Stephan Stri
eae0: 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f  ttmatter..*/..Lo
eaf0: 67 34 6a 73 2e 53 69 6d 70 6c 65 4c 61 79 6f 75  g4js.SimpleLayou
eb00: 74 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  t = function() {
eb10: 0d 0a 20 20 20 20 74 68 69 73 2e 4c 49 4e 45 5f  ..    this.LINE_
eb20: 53 45 50 20 20 3d 20 22 5c 6e 22 3b 0d 0a 20 20  SEP  = "\n";..  
eb30: 20 20 74 68 69 73 2e 4c 49 4e 45 5f 53 45 50 5f    this.LINE_SEP_
eb40: 4c 45 4e 20 3d 20 31 3b 0d 0a 7d 3b 0d 0a 0d 0a  LEN = 1;..};....
eb50: 4c 6f 67 34 6a 73 2e 53 69 6d 70 6c 65 4c 61 79  Log4js.SimpleLay
eb60: 6f 75 74 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20  out.prototype = 
eb70: 4c 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65  Log4js.extend(ne
eb80: 77 20 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 28  w Log4js.Layout(
eb90: 29 2c 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a  ), {..    /** ..
eba0: 20 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 20      * Implement 
ebb0: 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20 63  this method to c
ebc0: 72 65 61 74 65 20 79 6f 75 72 20 6f 77 6e 20 6c  reate your own l
ebd0: 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 0d 0a 20  ayout format... 
ebe0: 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 4c 6f 67     * @param {Log
ebf0: 34 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65 6e 74  4js.LoggingEvent
ec00: 7d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 6c  } loggingEvent l
ec10: 6f 67 67 69 6e 67 45 76 65 6e 74 20 74 6f 20 66  oggingEvent to f
ec20: 6f 72 6d 61 74 0d 0a 20 20 20 20 2a 20 40 72 65  ormat..    * @re
ec30: 74 75 72 6e 20 66 6f 72 6d 61 74 74 65 64 20 53  turn formatted S
ec40: 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74 79  tring..    * @ty
ec50: 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a  pe String..    *
ec60: 2f 0d 0a 20 20 20 20 66 6f 72 6d 61 74 3a 20 66  /..    format: f
ec70: 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45  unction(loggingE
ec80: 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20  vent) {..       
ec90: 20 72 65 74 75 72 6e 20 6c 6f 67 67 69 6e 67 45   return loggingE
eca0: 76 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53 74 72  vent.level.toStr
ecb0: 69 6e 67 28 29 20 2b 20 22 20 2d 20 22 20 2b 20  ing() + " - " + 
ecc0: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6d 65 73  loggingEvent.mes
ecd0: 73 61 67 65 20 2b 20 74 68 69 73 2e 4c 49 4e 45  sage + this.LINE
ece0: 5f 53 45 50 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20  _SEP;..    },.. 
ecf0: 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 52     /** ..    * R
ed00: 65 74 75 72 6e 73 20 74 68 65 20 63 6f 6e 74 65  eturns the conte
ed10: 6e 74 20 74 79 70 65 20 6f 75 74 70 75 74 20 62  nt type output b
ed20: 79 20 74 68 69 73 20 6c 61 79 6f 75 74 2e 20 0d  y this layout. .
ed30: 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 54  .    * @return T
ed40: 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 72 65  he base class re
ed50: 74 75 72 6e 73 20 22 74 65 78 74 2f 70 6c 61 69  turns "text/plai
ed60: 6e 22 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65  n"...    * @type
ed70: 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d   String..    */.
ed80: 0a 20 20 20 20 67 65 74 43 6f 6e 74 65 6e 74 54  .    getContentT
ed90: 79 70 65 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  ype: function() 
eda0: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
edb0: 6e 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 3b 0d  n "text/plain";.
edc0: 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a  .    },..    /**
edd0: 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e   ..    * @return
ede0: 20 52 65 74 75 72 6e 73 20 74 68 65 20 68 65 61   Returns the hea
edf0: 64 65 72 20 66 6f 72 20 74 68 65 20 6c 61 79 6f  der for the layo
ee00: 75 74 20 66 6f 72 6d 61 74 2e 20 54 68 65 20 62  ut format. The b
ee10: 61 73 65 20 63 6c 61 73 73 20 72 65 74 75 72 6e  ase class return
ee20: 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2a 20 40  s null...    * @
ee30: 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20  type String..   
ee40: 20 2a 2f 0d 0a 20 20 20 20 67 65 74 48 65 61 64   */..    getHead
ee50: 65 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  er: function() {
ee60: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
ee70: 20 22 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20   "";..    },..  
ee80: 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40 72    /** ..    * @r
ee90: 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20 74 68  eturn Returns th
eea0: 65 20 66 6f 6f 74 65 72 20 66 6f 72 20 74 68 65  e footer for the
eeb0: 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 20   layout format. 
eec0: 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 72  The base class r
eed0: 65 74 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20 20  eturns null...  
eee0: 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e 67    * @type String
eef0: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67 65  ..    */..    ge
ef00: 74 46 6f 6f 74 65 72 3a 20 66 75 6e 63 74 69 6f  tFooter: functio
ef10: 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  n() {..        r
ef20: 65 74 75 72 6e 20 22 22 3b 0d 0a 20 20 20 20 7d  eturn "";..    }
ef30: 0d 0a 7d 29 3b 0d 0a 20 20 20 20 0d 0a 2f 2a 2a  ..});..    ../**
ef40: 0d 0a 2a 20 42 61 73 69 63 4c 61 79 6f 75 74 20  ..* BasicLayout 
ef50: 69 73 20 61 20 73 69 6d 70 6c 65 20 6c 61 79 6f  is a simple layo
ef60: 75 74 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 74  ut for storing t
ef70: 68 65 20 6c 6f 67 67 73 2e 20 54 68 65 20 6c 6f  he loggs. The lo
ef80: 67 67 73 20 61 72 65 20 73 74 6f 72 65 64 0d 0a  ggs are stored..
ef90: 2a 20 69 6e 20 66 6f 6c 6c 6f 77 69 6e 67 20 66  * in following f
efa0: 6f 72 6d 61 74 3a 0d 0a 2a 20 3c 70 72 65 3e 0d  ormat:..* <pre>.
efb0: 0a 2a 20 63 61 74 65 67 6f 72 79 4e 61 6d 65 7e  .* categoryName~
efc0: 73 74 61 72 74 54 69 6d 65 20 5b 6c 6f 67 4c 65  startTime [logLe
efd0: 76 65 6c 5d 20 6d 65 73 73 61 67 65 5c 6e 0d 0a  vel] message\n..
efe0: 2a 20 3c 2f 70 72 65 3e 0d 0a 2a 0d 0a 2a 20 40  * </pre>..*..* @
eff0: 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a 20 40  constructor..* @
f000: 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73 2e 4c  extends Log4js.L
f010: 61 79 6f 75 74 0d 0a 2a 20 40 61 75 74 68 6f 72  ayout..* @author
f020: 20 53 74 65 70 68 61 6e 20 53 74 72 69 74 74 6d   Stephan Strittm
f030: 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a  atter..*/..Log4j
f040: 73 2e 42 61 73 69 63 4c 61 79 6f 75 74 20 3d 20  s.BasicLayout = 
f050: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
f060: 20 20 74 68 69 73 2e 4c 49 4e 45 5f 53 45 50 20    this.LINE_SEP 
f070: 20 3d 20 22 5c 6e 22 3b 0d 0a 7d 3b 0d 0a 0d 0a   = "\n";..};....
f080: 4c 6f 67 34 6a 73 2e 42 61 73 69 63 4c 61 79 6f  Log4js.BasicLayo
f090: 75 74 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c  ut.prototype = L
f0a0: 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77  og4js.extend(new
f0b0: 20 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 28 29   Log4js.Layout()
f0c0: 2c 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20  , {..    /** .. 
f0d0: 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 20 74     * Implement t
f0e0: 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20 63 72  his method to cr
f0f0: 65 61 74 65 20 79 6f 75 72 20 6f 77 6e 20 6c 61  eate your own la
f100: 79 6f 75 74 20 66 6f 72 6d 61 74 2e 0d 0a 20 20  yout format...  
f110: 20 20 2a 20 40 70 61 72 61 6d 20 7b 4c 6f 67 34    * @param {Log4
f120: 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65 6e 74 7d  js.LoggingEvent}
f130: 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 6c 6f   loggingEvent lo
f140: 67 67 69 6e 67 45 76 65 6e 74 20 74 6f 20 66 6f  ggingEvent to fo
f150: 72 6d 61 74 0d 0a 20 20 20 20 2a 20 40 72 65 74  rmat..    * @ret
f160: 75 72 6e 20 66 6f 72 6d 61 74 74 65 64 20 53 74  urn formatted St
f170: 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74 79 70  ring..    * @typ
f180: 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f  e String..    */
f190: 0d 0a 20 20 20 20 66 6f 72 6d 61 74 3a 20 66 75  ..    format: fu
f1a0: 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76  nction(loggingEv
f1b0: 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ent) {..        
f1c0: 72 65 74 75 72 6e 20 6c 6f 67 67 69 6e 67 45 76  return loggingEv
f1d0: 65 6e 74 2e 63 61 74 65 67 6f 72 79 4e 61 6d 65  ent.categoryName
f1e0: 20 2b 20 22 7e 22 20 2b 20 6c 6f 67 67 69 6e 67   + "~" + logging
f1f0: 45 76 65 6e 74 2e 73 74 61 72 74 54 69 6d 65 2e  Event.startTime.
f200: 74 6f 4c 6f 63 61 6c 65 53 74 72 69 6e 67 28 29  toLocaleString()
f210: 20 2b 20 22 20 5b 22 20 2b 20 6c 6f 67 67 69 6e   + " [" + loggin
f220: 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53  gEvent.level.toS
f230: 74 72 69 6e 67 28 29 20 2b 20 22 5d 20 22 20 2b  tring() + "] " +
f240: 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6d 65   loggingEvent.me
f250: 73 73 61 67 65 20 2b 20 74 68 69 73 2e 4c 49 4e  ssage + this.LIN
f260: 45 5f 53 45 50 3b 0d 0a 20 20 20 20 7d 2c 0d 0a  E_SEP;..    },..
f270: 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20      /** ..    * 
f280: 52 65 74 75 72 6e 73 20 74 68 65 20 63 6f 6e 74  Returns the cont
f290: 65 6e 74 20 74 79 70 65 20 6f 75 74 70 75 74 20  ent type output 
f2a0: 62 79 20 74 68 69 73 20 6c 61 79 6f 75 74 2e 20  by this layout. 
f2b0: 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20  ..    * @return 
f2c0: 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 72  The base class r
f2d0: 65 74 75 72 6e 73 20 22 74 65 78 74 2f 70 6c 61  eturns "text/pla
f2e0: 69 6e 22 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70  in"...    * @typ
f2f0: 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f  e String..    */
f300: 0d 0a 20 20 20 20 67 65 74 43 6f 6e 74 65 6e 74  ..    getContent
f310: 54 79 70 65 3a 20 66 75 6e 63 74 69 6f 6e 28 29  Type: function()
f320: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
f330: 72 6e 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 3b  rn "text/plain";
f340: 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a  ..    },..    /*
f350: 2a 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72  * ..    * @retur
f360: 6e 20 52 65 74 75 72 6e 73 20 74 68 65 20 68 65  n Returns the he
f370: 61 64 65 72 20 66 6f 72 20 74 68 65 20 6c 61 79  ader for the lay
f380: 6f 75 74 20 66 6f 72 6d 61 74 2e 20 54 68 65 20  out format. The 
f390: 62 61 73 65 20 63 6c 61 73 73 20 72 65 74 75 72  base class retur
f3a0: 6e 73 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2a 20  ns null...    * 
f3b0: 40 74 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20  @type String..  
f3c0: 20 20 2a 2f 0d 0a 20 20 20 20 67 65 74 48 65 61    */..    getHea
f3d0: 64 65 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  der: function() 
f3e0: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
f3f0: 6e 20 22 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20  n "";..    },.. 
f400: 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40     /** ..    * @
f410: 72 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20 74  return Returns t
f420: 68 65 20 66 6f 6f 74 65 72 20 66 6f 72 20 74 68  he footer for th
f430: 65 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e  e layout format.
f440: 20 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20   The base class 
f450: 72 65 74 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20  returns null... 
f460: 20 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e     * @type Strin
f470: 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67  g..    */..    g
f480: 65 74 46 6f 6f 74 65 72 3a 20 66 75 6e 63 74 69  etFooter: functi
f490: 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  on() {..        
f4a0: 72 65 74 75 72 6e 20 22 22 3b 0d 0a 20 20 20 20  return "";..    
f4b0: 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a  }..});..../**..*
f4c0: 20 48 74 6d 6c 4c 61 79 6f 75 74 20 77 72 69 74   HtmlLayout writ
f4d0: 65 20 74 68 65 20 6c 6f 67 73 20 69 6e 20 48 74  e the logs in Ht
f4e0: 6d 6c 20 66 6f 72 6d 61 74 2e 0d 0a 2a 0d 0a 2a  ml format...*..*
f4f0: 20 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 2a   @constructor..*
f500: 20 40 65 78 74 65 6e 64 73 20 4c 6f 67 34 6a 73   @extends Log4js
f510: 2e 4c 61 79 6f 75 74 0d 0a 2a 20 40 61 75 74 68  .Layout..* @auth
f520: 6f 72 20 53 74 65 70 68 61 6e 20 53 74 72 69 74  or Stephan Strit
f530: 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a 4c 6f 67  tmatter..*/..Log
f540: 34 6a 73 2e 48 74 6d 6c 4c 61 79 6f 75 74 20 3d  4js.HtmlLayout =
f550: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 72 65 74   function() {ret
f560: 75 72 6e 3b 7d 3b 0d 0a 0d 0a 4c 6f 67 34 6a 73  urn;};....Log4js
f570: 2e 48 74 6d 6c 4c 61 79 6f 75 74 2e 70 72 6f 74  .HtmlLayout.prot
f580: 6f 74 79 70 65 20 3d 20 4c 6f 67 34 6a 73 2e 65  otype = Log4js.e
f590: 78 74 65 6e 64 28 6e 65 77 20 4c 6f 67 34 6a 73  xtend(new Log4js
f5a0: 2e 4c 61 79 6f 75 74 28 29 2c 20 7b 0d 0a 20 20  .Layout(), {..  
f5b0: 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 49 6d    /** ..    * Im
f5c0: 70 6c 65 6d 65 6e 74 20 74 68 69 73 20 6d 65 74  plement this met
f5d0: 68 6f 64 20 74 6f 20 63 72 65 61 74 65 20 79 6f  hod to create yo
f5e0: 75 72 20 6f 77 6e 20 6c 61 79 6f 75 74 20 66 6f  ur own layout fo
f5f0: 72 6d 61 74 2e 0d 0a 20 20 20 20 2a 20 40 70 61  rmat...    * @pa
f600: 72 61 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 6f 67 67  ram {Log4js.Logg
f610: 69 6e 67 45 76 65 6e 74 7d 20 6c 6f 67 67 69 6e  ingEvent} loggin
f620: 67 45 76 65 6e 74 20 6c 6f 67 67 69 6e 67 45 76  gEvent loggingEv
f630: 65 6e 74 20 74 6f 20 66 6f 72 6d 61 74 0d 0a 20  ent to format.. 
f640: 20 20 20 2a 20 40 72 65 74 75 72 6e 20 66 6f 72     * @return for
f650: 6d 61 74 74 65 64 20 53 74 72 69 6e 67 0d 0a 20  matted String.. 
f660: 20 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e     * @type Strin
f670: 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66  g..    */..    f
f680: 6f 72 6d 61 74 3a 20 66 75 6e 63 74 69 6f 6e 28  ormat: function(
f690: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 7b 0d  loggingEvent) {.
f6a0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
f6b0: 22 3c 64 69 76 20 73 74 79 6c 65 3d 5c 22 22 20  "<div style=\"" 
f6c0: 2b 20 74 68 69 73 2e 67 65 74 53 74 79 6c 65 28  + this.getStyle(
f6d0: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 29 20 2b 20  loggingEvent) + 
f6e0: 22 5c 22 3e 22 20 2b 20 6c 6f 67 67 69 6e 67 45  "\">" + loggingE
f6f0: 76 65 6e 74 2e 67 65 74 46 6f 72 6d 61 74 74 65  vent.getFormatte
f700: 64 54 69 6d 65 73 74 61 6d 70 28 29 20 2b 20 22  dTimestamp() + "
f710: 20 2d 20 22 20 2b 20 6c 6f 67 67 69 6e 67 45 76   - " + loggingEv
f720: 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53 74 72 69  ent.level.toStri
f730: 6e 67 28 29 20 2b 20 22 20 2d 20 22 20 2b 20 6c  ng() + " - " + l
f740: 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6d 65 73 73  oggingEvent.mess
f750: 61 67 65 20 2b 20 22 3c 2f 64 69 76 3e 5c 6e 22  age + "</div>\n"
f760: 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f  ;..    },..    /
f770: 2a 2a 20 0d 0a 20 20 20 20 2a 20 52 65 74 75 72  ** ..    * Retur
f780: 6e 73 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 74  ns the content t
f790: 79 70 65 20 6f 75 74 70 75 74 20 62 79 20 74 68  ype output by th
f7a0: 69 73 20 6c 61 79 6f 75 74 2e 20 0d 0a 20 20 20  is layout. ..   
f7b0: 20 2a 20 40 72 65 74 75 72 6e 20 54 68 65 20 62   * @return The b
f7c0: 61 73 65 20 63 6c 61 73 73 20 72 65 74 75 72 6e  ase class return
f7d0: 73 20 22 74 65 78 74 2f 68 74 6d 6c 22 2e 0d 0a  s "text/html"...
f7e0: 20 20 20 20 2a 20 40 74 79 70 65 20 53 74 72 69      * @type Stri
f7f0: 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  ng..    */..    
f800: 67 65 74 43 6f 6e 74 65 6e 74 54 79 70 65 3a 20  getContentType: 
f810: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
f820: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 74 65        return "te
f830: 78 74 2f 68 74 6d 6c 22 3b 0d 0a 20 20 20 20 7d  xt/html";..    }
f840: 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20  ,..    /** ..   
f850: 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75 72   * @return Retur
f860: 6e 73 20 74 68 65 20 68 65 61 64 65 72 20 66 6f  ns the header fo
f870: 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f 72  r the layout for
f880: 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63 6c  mat. The base cl
f890: 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c 6c  ass returns null
f8a0: 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53  ...    * @type S
f8b0: 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20  tring..    */.. 
f8c0: 20 20 20 67 65 74 48 65 61 64 65 72 3a 20 66 75     getHeader: fu
f8d0: 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
f8e0: 20 20 20 20 72 65 74 75 72 6e 20 22 3c 68 74 6d      return "<htm
f8f0: 6c 3e 3c 68 65 61 64 3e 3c 74 69 74 6c 65 3e 6c  l><head><title>l
f900: 6f 67 34 6a 73 3c 2f 68 65 61 64 3e 3c 62 6f 64  og4js</head><bod
f910: 79 3e 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20  y>";..    },..  
f920: 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40 72    /** ..    * @r
f930: 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20 74 68  eturn Returns th
f940: 65 20 66 6f 6f 74 65 72 20 66 6f 72 20 74 68 65  e footer for the
f950: 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 20   layout format. 
f960: 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 72  The base class r
f970: 65 74 75 72 6e 73 20 6e 75 6c 6c 2e 0d 0a 20 20  eturns null...  
f980: 20 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e 67    * @type String
f990: 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 67 65  ..    */..    ge
f9a0: 74 46 6f 6f 74 65 72 3a 20 66 75 6e 63 74 69 6f  tFooter: functio
f9b0: 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  n() {..        r
f9c0: 65 74 75 72 6e 20 22 3c 2f 62 6f 64 79 3e 3c 2f  eturn "</body></
f9d0: 68 74 6d 6c 3e 22 3b 0d 0a 20 20 20 20 7d 2c 0d  html>";..    },.
f9e0: 0a 20 20 20 20 0d 0a 20 20 20 20 67 65 74 53 74  .    ..    getSt
f9f0: 79 6c 65 3a 20 66 75 6e 63 74 69 6f 6e 28 6c 6f  yle: function(lo
fa00: 67 67 69 6e 67 45 76 65 6e 74 29 0d 0a 20 20 20  ggingEvent)..   
fa10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20   {..        var 
fa20: 73 74 79 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20  style;..        
fa30: 69 66 20 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74  if (loggingEvent
fa40: 2e 6c 65 76 65 6c 2e 74 6f 53 74 72 69 6e 67 28  .level.toString(
fa50: 29 2e 73 65 61 72 63 68 28 2f 45 52 52 4f 52 2f  ).search(/ERROR/
fa60: 29 20 21 3d 20 2d 31 29 20 7b 20 0d 0a 20 20 20  ) != -1) { ..   
fa70: 20 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 3d           style =
fa80: 20 27 63 6f 6c 6f 72 3a 72 65 64 27 3b 0d 0a 20   'color:red';.. 
fa90: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
faa0: 20 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c   (loggingEvent.l
fab0: 65 76 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e  evel.toString().
fac0: 73 65 61 72 63 68 28 2f 46 41 54 41 4c 2f 29 20  search(/FATAL/) 
fad0: 21 3d 20 2d 31 29 20 7b 20 0d 0a 20 20 20 20 20  != -1) { ..     
fae0: 20 20 20 20 20 20 20 73 74 79 6c 65 20 3d 20 27         style = '
faf0: 63 6f 6c 6f 72 3a 72 65 64 27 3b 0d 0a 20 20 20  color:red';..   
fb00: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
fb10: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76  loggingEvent.lev
fb20: 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73 65  el.toString().se
fb30: 61 72 63 68 28 2f 57 41 52 4e 2f 29 20 21 3d 20  arch(/WARN/) != 
fb40: 2d 31 29 20 7b 20 0d 0a 20 20 20 20 20 20 20 20  -1) { ..        
fb50: 20 20 20 20 73 74 79 6c 65 20 3d 20 27 63 6f 6c      style = 'col
fb60: 6f 72 3a 6f 72 61 6e 67 65 27 3b 0d 0a 20 20 20  or:orange';..   
fb70: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28       } else if (
fb80: 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76  loggingEvent.lev
fb90: 65 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73 65  el.toString().se
fba0: 61 72 63 68 28 2f 44 45 42 55 47 2f 29 20 21 3d  arch(/DEBUG/) !=
fbb0: 20 2d 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20   -1) {..        
fbc0: 20 20 20 20 73 74 79 6c 65 20 3d 20 27 63 6f 6c      style = 'col
fbd0: 6f 72 3a 67 72 65 65 6e 27 3b 0d 0a 20 20 20 20  or:green';..    
fbe0: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6c      } else if (l
fbf0: 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65  oggingEvent.leve
fc00: 6c 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73 65 61  l.toString().sea
fc10: 72 63 68 28 2f 49 4e 46 4f 2f 29 20 21 3d 20 2d  rch(/INFO/) != -
fc20: 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  1) {..          
fc30: 20 20 73 74 79 6c 65 20 3d 20 27 63 6f 6c 6f 72    style = 'color
fc40: 3a 77 68 69 74 65 27 3b 0d 0a 20 20 20 20 20 20  :white';..      
fc50: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
fc60: 20 20 20 20 20 20 20 20 73 74 79 6c 65 20 3d 20          style = 
fc70: 27 63 6f 6c 6f 72 3a 79 65 6c 6c 6f 77 27 3b 0d  'color:yellow';.
fc80: 0a 20 20 20 20 20 20 20 20 7d 09 0d 0a 20 20 20  .        }...   
fc90: 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 79 6c       return styl
fca0: 65 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d 0a  e;..    }..});..
fcb0: 0d 0a 2f 2a 2a 0d 0a 2a 20 58 4d 4c 4c 61 79 6f  ../**..* XMLLayo
fcc0: 75 74 20 77 72 69 74 65 20 74 68 65 20 6c 6f 67  ut write the log
fcd0: 73 20 69 6e 20 58 4d 4c 20 66 6f 72 6d 61 74 2e  s in XML format.
fce0: 0d 0a 2a 20 4c 61 79 6f 75 74 20 69 73 20 73 69  ..* Layout is si
fcf0: 6d 6d 69 6c 61 72 20 74 6f 20 6c 6f 67 34 6a 27  mmilar to log4j'
fd00: 73 20 58 4d 4c 4c 61 79 6f 75 74 3a 0d 0a 2a 20  s XMLLayout:..* 
fd10: 3c 70 72 65 3e 0d 0a 2a 20 3c 6c 6f 67 34 6a 73  <pre>..* <log4js
fd20: 3a 65 76 65 6e 74 20 63 61 74 65 67 6f 72 79 3d  :event category=
fd30: 22 63 61 74 65 67 6f 72 79 22 20 6c 65 76 65 6c  "category" level
fd40: 3d 22 4c 65 76 65 6c 22 20 63 6c 69 65 6e 74 3d  ="Level" client=
fd50: 22 43 6c 69 65 6e 74 22 20 72 65 66 65 72 65 72  "Client" referer
fd60: 3d 22 72 65 66 22 20 74 69 6d 65 73 74 61 6d 3d  ="ref" timestam=
fd70: 22 44 61 74 65 22 3e 0d 0a 2a 20 3c 6c 6f 67 34  "Date">..* <log4
fd80: 6a 73 3a 6d 65 73 73 61 67 65 3e 4c 6f 67 67 65  js:message>Logge
fd90: 64 20 6d 65 73 73 61 67 65 3c 2f 6c 6f 67 34 6a  d message</log4j
fda0: 73 3a 6d 65 73 73 61 67 65 3e 0d 0a 2a 20 3c 2f  s:message>..* </
fdb0: 6c 6f 67 34 6a 73 3a 65 76 65 6e 74 3e 0d 0a 2a  log4js:event>..*
fdc0: 20 3c 2f 70 72 65 3e 0d 0a 2a 20 40 63 6f 6e 73   </pre>..* @cons
fdd0: 74 72 75 63 74 6f 72 0d 0a 2a 20 40 65 78 74 65  tructor..* @exte
fde0: 6e 64 73 20 4c 61 79 6f 75 74 0d 0a 2a 20 40 61  nds Layout..* @a
fdf0: 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20 53 74  uthor Stephan St
fe00: 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f 0d 0a  rittmatter..*/..
fe10: 4c 6f 67 34 6a 73 2e 58 4d 4c 4c 61 79 6f 75 74  Log4js.XMLLayout
fe20: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 7b 72 65   = function(){re
fe30: 74 75 72 6e 3b 7d 3b 0d 0a 4c 6f 67 34 6a 73 2e  turn;};..Log4js.
fe40: 58 4d 4c 4c 61 79 6f 75 74 2e 70 72 6f 74 6f 74  XMLLayout.protot
fe50: 79 70 65 20 3d 20 4c 6f 67 34 6a 73 2e 65 78 74  ype = Log4js.ext
fe60: 65 6e 64 28 6e 65 77 20 4c 6f 67 34 6a 73 2e 4c  end(new Log4js.L
fe70: 61 79 6f 75 74 28 29 2c 20 7b 0d 0a 20 20 20 20  ayout(), {..    
fe80: 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 49 6d 70 6c  /** ..    * Impl
fe90: 65 6d 65 6e 74 20 74 68 69 73 20 6d 65 74 68 6f  ement this metho
fea0: 64 20 74 6f 20 63 72 65 61 74 65 20 79 6f 75 72  d to create your
feb0: 20 6f 77 6e 20 6c 61 79 6f 75 74 20 66 6f 72 6d   own layout form
fec0: 61 74 2e 0d 0a 20 20 20 20 2a 20 40 70 61 72 61  at...    * @para
fed0: 6d 20 7b 4c 6f 67 34 6a 73 2e 4c 6f 67 67 69 6e  m {Log4js.Loggin
fee0: 67 45 76 65 6e 74 7d 20 6c 6f 67 67 69 6e 67 45  gEvent} loggingE
fef0: 76 65 6e 74 20 6c 6f 67 67 69 6e 67 45 76 65 6e  vent loggingEven
ff00: 74 20 74 6f 20 66 6f 72 6d 61 74 0d 0a 20 20 20  t to format..   
ff10: 20 2a 20 40 72 65 74 75 72 6e 20 66 6f 72 6d 61   * @return forma
ff20: 74 74 65 64 20 53 74 72 69 6e 67 0d 0a 20 20 20  tted String..   
ff30: 20 2a 20 40 74 79 70 65 20 53 74 72 69 6e 67 0d   * @type String.
ff40: 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 6f 72  .    */..    for
ff50: 6d 61 74 3a 20 66 75 6e 63 74 69 6f 6e 28 6c 6f  mat: function(lo
ff60: 67 67 69 6e 67 45 76 65 6e 74 29 20 7b 0d 0a 20  ggingEvent) {.. 
ff70: 20 20 20 20 20 20 20 76 61 72 20 75 73 65 72 61         var usera
ff80: 67 65 6e 74 20 3d 20 22 75 6e 6b 6e 6f 77 6e 22  gent = "unknown"
ff90: 3b 0d 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b  ;..        try {
ffa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73  ..            us
ffb0: 65 72 61 67 65 6e 74 20 3d 20 6e 61 76 69 67 61  eragent = naviga
ffc0: 74 6f 72 2e 75 73 65 72 41 67 65 6e 74 3b 0d 0a  tor.userAgent;..
ffd0: 20 20 20 20 20 20 20 20 7d 20 63 61 74 63 68 28          } catch(
ffe0: 65 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e){..           
fff0: 20 75 73 65 72 61 67 65 6e 74 20 3d 20 22 75 6e   useragent = "un
10000 6b 6e 6f 77 6e 22 3b 0d 0a 20 20 20 20 20 20 20  known";..       
10010 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20   }..        ..  
10020 20 20 20 20 20 20 76 61 72 20 72 65 66 65 72 65        var refere
10030 72 20 3d 20 22 75 6e 6b 6e 6f 77 6e 22 3b 0d 0a  r = "unknown";..
10040 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20          try {.. 
10050 20 20 20 20 20 20 20 20 20 20 20 72 65 66 65 72             refer
10060 65 72 20 3d 20 6c 6f 63 61 74 69 6f 6e 2e 68 72  er = location.hr
10070 65 66 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 63  ef;..        } c
10080 61 74 63 68 28 65 29 7b 0d 0a 20 20 20 20 20 20  atch(e){..      
10090 20 20 20 20 20 20 72 65 66 65 72 65 72 20 3d 20        referer = 
100a0 22 75 6e 6b 6e 6f 77 6e 22 3b 0d 0a 20 20 20 20  "unknown";..    
100b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
100c0 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
100d0 20 76 61 72 20 63 6f 6e 74 65 6e 74 20 3d 20 22   var content = "
100e0 3c 6c 6f 67 34 6a 73 3a 65 76 65 6e 74 20 6c 6f  <log4js:event lo
100f0 67 67 65 72 3d 5c 22 22 3b 0d 0a 20 20 20 20 20  gger=\"";..     
10100 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 6c 6f     content += lo
10110 67 67 69 6e 67 45 76 65 6e 74 2e 63 61 74 65 67  ggingEvent.categ
10120 6f 72 79 4e 61 6d 65 20 2b 20 22 5c 22 20 6c 65  oryName + "\" le
10130 76 65 6c 3d 5c 22 22 3b 0d 0a 20 20 20 20 20 20  vel=\"";..      
10140 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 6c 6f 67    content += log
10150 67 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e  gingEvent.level.
10160 74 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 5c 22  toString() + "\"
10170 20 75 73 65 72 61 67 65 6e 74 3d 5c 22 22 3b 0d   useragent=\"";.
10180 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e 74  .        content
10190 20 2b 3d 20 75 73 65 72 61 67 65 6e 74 20 2b 20   += useragent + 
101a0 22 5c 22 20 72 65 66 65 72 65 72 3d 5c 22 22 3b  "\" referer=\"";
101b0 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 65 6e  ..        conten
101c0 74 20 2b 3d 20 72 65 66 65 72 65 72 2e 72 65 70  t += referer.rep
101d0 6c 61 63 65 28 2f 26 2f 67 2c 20 22 26 61 6d 70  lace(/&/g, "&amp
101e0 3b 22 29 20 2b 20 22 5c 22 20 74 69 6d 65 73 74  ;") + "\" timest
101f0 61 6d 70 3d 5c 22 22 3b 0d 0a 20 20 20 20 20 20  amp=\"";..      
10200 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 6c 6f 67    content += log
10210 67 69 6e 67 45 76 65 6e 74 2e 67 65 74 46 6f 72  gingEvent.getFor
10220 6d 61 74 74 65 64 54 69 6d 65 73 74 61 6d 70 28  mattedTimestamp(
10230 29 20 2b 20 22 5c 22 3e 5c 6e 22 3b 0d 0a 20 20  ) + "\">\n";..  
10240 20 20 20 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d        content +=
10250 20 22 5c 74 3c 6c 6f 67 34 6a 73 3a 6d 65 73 73   "\t<log4js:mess
10260 61 67 65 3e 3c 21 5b 43 44 41 54 41 5b 22 20 2b  age><![CDATA[" +
10270 20 74 68 69 73 2e 65 73 63 61 70 65 43 64 61 74   this.escapeCdat
10280 61 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 6d  a(loggingEvent.m
10290 65 73 73 61 67 65 29 20 2b 20 22 5d 5d 3e 3c 2f  essage) + "]]></
102a0 6c 6f 67 34 6a 73 3a 6d 65 73 73 61 67 65 3e 5c  log4js:message>\
102b0 6e 22 3b 09 0d 0a 20 20 20 20 20 20 20 20 0d 0a  n";...        ..
102c0 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 67 67          if (logg
102d0 69 6e 67 45 76 65 6e 74 2e 65 78 63 65 70 74 69  ingEvent.excepti
102e0 6f 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  on) {..         
102f0 20 20 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 74 68     content += th
10300 69 73 2e 66 6f 72 6d 61 74 45 78 63 65 70 74 69  is.formatExcepti
10310 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e  on(loggingEvent.
10320 65 78 63 65 70 74 69 6f 6e 29 20 3b 0d 0a 20 20  exception) ;..  
10330 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10340 20 63 6f 6e 74 65 6e 74 20 2b 3d 20 22 3c 2f 6c   content += "</l
10350 6f 67 34 6a 73 3a 65 76 65 6e 74 3e 5c 6e 22 3b  og4js:event>\n";
10360 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20  ..        ..    
10370 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6e 74 65      return conte
10380 6e 74 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  nt;..    },..   
10390 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 52 65 74   /** ..    * Ret
103a0 75 72 6e 73 20 74 68 65 20 63 6f 6e 74 65 6e 74  urns the content
103b0 20 74 79 70 65 20 6f 75 74 70 75 74 20 62 79 20   type output by 
103c0 74 68 69 73 20 6c 61 79 6f 75 74 2e 20 0d 0a 20  this layout. .. 
103d0 20 20 20 2a 20 40 72 65 74 75 72 6e 20 54 68 65     * @return The
103e0 20 62 61 73 65 20 63 6c 61 73 73 20 72 65 74 75   base class retu
103f0 72 6e 73 20 22 74 65 78 74 2f 78 6d 6c 22 2e 0d  rns "text/xml"..
10400 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53 74 72  .    * @type Str
10410 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  ing..    */..   
10420 20 67 65 74 43 6f 6e 74 65 6e 74 54 79 70 65 3a   getContentType:
10430 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
10440 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 74         return "t
10450 65 78 74 2f 78 6d 6c 22 3b 0d 0a 20 20 20 20 7d  ext/xml";..    }
10460 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20  ,..    /** ..   
10470 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75 72   * @return Retur
10480 6e 73 20 74 68 65 20 68 65 61 64 65 72 20 66 6f  ns the header fo
10490 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f 72  r the layout for
104a0 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63 6c  mat. The base cl
104b0 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c 6c  ass returns null
104c0 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53  ...    * @type S
104d0 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20  tring..    */.. 
104e0 20 20 20 67 65 74 48 65 61 64 65 72 3a 20 66 75     getHeader: fu
104f0 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
10500 20 20 20 20 72 65 74 75 72 6e 20 22 3c 6c 6f 67      return "<log
10510 34 6a 73 3a 65 76 65 6e 74 53 65 74 20 76 65 72  4js:eventSet ver
10520 73 69 6f 6e 3d 5c 22 22 20 2b 20 4c 6f 67 34 6a  sion=\"" + Log4j
10530 73 2e 76 65 72 73 69 6f 6e 20 2b 20 0d 0a 20 20  s.version + ..  
10540 20 20 20 20 20 20 20 20 20 20 22 5c 22 20 78 6d            "\" xm
10550 6c 6e 73 3a 6c 6f 67 34 6a 73 3d 5c 22 68 74 74  lns:log4js=\"htt
10560 70 3a 2f 2f 6c 6f 67 34 6a 73 2e 62 65 72 6c 69  p://log4js.berli
10570 6f 73 2e 64 65 2f 32 30 30 37 2f 6c 6f 67 34 6a  os.de/2007/log4j
10580 73 2f 5c 22 3e 5c 6e 22 3b 0d 0a 20 20 20 20 7d  s/\">\n";..    }
10590 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20  ,..    /** ..   
105a0 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75 72   * @return Retur
105b0 6e 73 20 74 68 65 20 66 6f 6f 74 65 72 20 66 6f  ns the footer fo
105c0 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f 72  r the layout for
105d0 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63 6c  mat. The base cl
105e0 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c 6c  ass returns null
105f0 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53  ...    * @type S
10600 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20  tring..    */.. 
10610 20 20 20 67 65 74 46 6f 6f 74 65 72 3a 20 66 75     getFooter: fu
10620 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
10630 20 20 20 20 72 65 74 75 72 6e 20 22 3c 2f 6c 6f      return "</lo
10640 67 34 6a 73 3a 65 76 65 6e 74 53 65 74 3e 5c 6e  g4js:eventSet>\n
10650 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  ";..    },..    
10660 0d 0a 20 20 20 20 67 65 74 53 65 70 61 72 61 74  ..    getSeparat
10670 6f 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b  or: function() {
10680 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
10690 20 22 5c 6e 22 3b 0d 0a 20 20 20 20 7d 2c 0d 0a   "\n";..    },..
106a0 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20      ..    /**.. 
106b0 20 20 20 2a 20 62 65 74 74 65 72 20 72 65 61 64     * better read
106c0 61 62 6c 65 20 66 6f 72 6d 61 74 74 65 64 20 45  able formatted E
106d0 78 63 65 70 74 69 6f 6e 73 2e 0d 0a 20 20 20 20  xceptions...    
106e0 2a 20 40 70 61 72 61 6d 20 65 78 20 7b 45 78 63  * @param ex {Exc
106f0 65 70 74 69 6f 6e 7d 20 74 68 65 20 65 78 63 65  eption} the exce
10700 70 74 69 6f 6e 20 74 6f 20 62 65 20 66 6f 72 6d  ption to be form
10710 61 74 74 65 64 2e 0d 0a 20 20 20 20 2a 20 40 72  atted...    * @r
10720 65 74 75 72 6e 20 7b 53 74 72 69 6e 67 7d 20 74  eturn {String} t
10730 68 65 20 66 6f 72 6d 61 74 74 65 64 20 53 74 72  he formatted Str
10740 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
10750 6f 6e 20 6f 66 20 74 68 65 20 65 78 63 65 70 74  on of the except
10760 69 6f 6e 2e 0d 0a 20 20 20 20 2a 20 40 70 72 69  ion...    * @pri
10770 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  vate..    */..  
10780 20 20 66 6f 72 6d 61 74 45 78 63 65 70 74 69 6f    formatExceptio
10790 6e 3a 20 66 75 6e 63 74 69 6f 6e 28 65 78 29 20  n: function(ex) 
107a0 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 65  {..        if (e
107b0 78 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  x) {..          
107c0 20 20 76 61 72 20 65 78 53 74 72 20 3d 20 22 5c    var exStr = "\
107d0 74 3c 6c 6f 67 34 6a 73 3a 74 68 72 6f 77 61 62  t<log4js:throwab
107e0 6c 65 3e 22 3b 20 0d 0a 20 20 20 20 20 20 20 20  le>"; ..        
107f0 20 20 20 20 69 66 20 28 65 78 2e 6d 65 73 73 61      if (ex.messa
10800 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ge) {..         
10810 20 20 20 20 20 20 20 65 78 53 74 72 20 2b 3d 20         exStr += 
10820 20 22 5c 74 5c 74 3c 6c 6f 67 34 6a 73 3a 6d 65   "\t\t<log4js:me
10830 73 73 61 67 65 3e 3c 21 5b 43 44 41 54 41 5b 22  ssage><![CDATA["
10840 20 2b 20 74 68 69 73 2e 65 73 63 61 70 65 43 64   + this.escapeCd
10850 61 74 61 28 65 78 2e 6d 65 73 73 61 67 65 29 20  ata(ex.message) 
10860 2b 20 22 5d 5d 3e 3c 2f 6c 6f 67 34 6a 73 3a 6d  + "]]></log4js:m
10870 65 73 73 61 67 65 3e 5c 6e 22 3b 09 0d 0a 20 20  essage>\n";...  
10880 20 20 20 20 20 20 20 20 20 20 7d 20 0d 0a 20 20            } ..  
10890 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
108a0 2e 64 65 73 63 72 69 70 74 69 6f 6e 29 20 7b 0d  .description) {.
108b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
108c0 20 65 78 53 74 72 20 2b 3d 20 20 22 5c 74 5c 74   exStr +=  "\t\t
108d0 3c 6c 6f 67 34 6a 73 3a 64 65 73 63 72 69 70 74  <log4js:descript
108e0 69 6f 6e 3e 3c 21 5b 43 44 41 54 41 5b 22 20 2b  ion><![CDATA[" +
108f0 20 74 68 69 73 2e 65 73 63 61 70 65 43 64 61 74   this.escapeCdat
10900 61 28 65 78 2e 64 65 73 63 72 69 70 74 69 6f 6e  a(ex.description
10910 29 20 2b 20 22 5d 5d 3e 3c 2f 6c 6f 67 34 6a 73  ) + "]]></log4js
10920 3a 64 65 73 63 72 69 70 74 69 6f 6e 3e 5c 6e 22  :description>\n"
10930 3b 09 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ;...            
10940 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0d  }..            .
10950 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 53  .            exS
10960 74 72 20 2b 3d 20 20 22 5c 74 5c 74 3c 6c 6f 67  tr +=  "\t\t<log
10970 34 6a 73 3a 73 74 61 63 6b 74 72 61 63 65 3e 22  4js:stacktrace>"
10980 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  ;..            e
10990 78 53 74 72 20 2b 3d 20 20 22 5c 74 5c 74 5c 74  xStr +=  "\t\t\t
109a0 3c 6c 6f 67 34 6a 73 3a 6c 6f 63 61 74 69 6f 6e  <log4js:location
109b0 20 66 69 6c 65 4e 61 6d 65 3d 5c 22 22 2b 65 78   fileName=\""+ex
109c0 2e 66 69 6c 65 4e 61 6d 65 2b 22 5c 22 20 6c 69  .fileName+"\" li
109d0 6e 65 4e 75 6d 62 65 72 3d 5c 22 22 2b 65 78 2e  neNumber=\""+ex.
109e0 6c 69 6e 65 4e 75 6d 62 65 72 2b 22 5c 22 20 2f  lineNumber+"\" /
109f0 3e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  >";..           
10a00 20 65 78 53 74 72 20 2b 3d 20 20 22 5c 74 5c 74   exStr +=  "\t\t
10a10 3c 2f 6c 6f 67 34 6a 73 3a 73 74 61 63 6b 74 72  </log4js:stacktr
10a20 61 63 65 3e 22 3b 0d 0a 20 20 20 20 20 20 20 20  ace>";..        
10a30 20 20 20 20 65 78 53 74 72 20 3d 20 22 5c 74 3c      exStr = "\t<
10a40 2f 6c 6f 67 34 6a 73 3a 74 68 72 6f 77 61 62 6c  /log4js:throwabl
10a50 65 3e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e>";..          
10a60 20 20 72 65 74 75 72 6e 20 65 78 53 74 72 3b 0d    return exStr;.
10a70 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
10a80 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
10a90 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a  ..    },..    /*
10aa0 2a 0d 0a 20 20 20 20 2a 20 45 73 63 61 70 65 20  *..    * Escape 
10ab0 43 64 61 74 61 20 6d 65 73 73 61 67 65 73 0d 0a  Cdata messages..
10ac0 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72      * @param str
10ad0 20 7b 53 74 72 69 6e 67 7d 20 6d 65 73 73 61 67   {String} messag
10ae0 65 20 74 6f 20 65 73 63 61 70 65 0d 0a 20 20 20  e to escape..   
10af0 20 2a 20 40 72 65 74 75 72 6e 20 7b 53 74 72 69   * @return {Stri
10b00 6e 67 7d 20 74 68 65 20 65 73 63 61 70 65 64 20  ng} the escaped 
10b10 6d 65 73 73 61 67 65 0d 0a 20 20 20 20 2a 20 40  message..    * @
10b20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 2a 2f 0d  private..    */.
10b30 0a 20 20 20 20 65 73 63 61 70 65 43 64 61 74 61  .    escapeCdata
10b40 3a 20 66 75 6e 63 74 69 6f 6e 28 73 74 72 29 20  : function(str) 
10b50 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
10b60 6e 20 73 74 72 2e 72 65 70 6c 61 63 65 28 2f 5c  n str.replace(/\
10b70 5d 5c 5d 3e 2f 2c 20 22 5d 5d 3e 5d 5d 26 67 74  ]\]>/, "]]>]]&gt
10b80 3b 3c 21 5b 43 44 41 54 41 5b 22 29 3b 0d 0a 20  ;<![CDATA[");.. 
10b90 20 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a     }..});..../**
10ba0 0d 0a 2a 20 4a 53 4f 4e 4c 61 79 6f 75 74 20 77  ..* JSONLayout w
10bb0 72 69 74 65 20 74 68 65 20 6c 6f 67 73 20 69 6e  rite the logs in
10bc0 20 4a 53 4f 4e 20 66 6f 72 6d 61 74 2e 0d 0a 2a   JSON format...*
10bd0 20 4a 53 4f 4e 20 6c 69 62 72 61 72 79 20 69 73   JSON library is
10be0 20 72 65 71 75 69 72 65 64 20 74 6f 20 75 73 65   required to use
10bf0 20 74 68 69 73 20 4c 61 79 6f 75 74 2e 20 53 65   this Layout. Se
10c00 65 20 61 6c 73 6f 20 7b 40 6c 69 6e 6b 20 68 74  e also {@link ht
10c10 74 70 3a 2f 2f 77 77 77 2e 6a 73 6f 6e 2e 6f 72  tp://www.json.or
10c20 67 7d 0d 0a 2a 20 40 63 6f 6e 73 74 72 75 63 74  g}..* @construct
10c30 6f 72 0d 0a 2a 20 40 65 78 74 65 6e 64 73 20 4c  or..* @extends L
10c40 6f 67 34 6a 73 2e 4c 61 79 6f 75 74 0d 0a 2a 20  og4js.Layout..* 
10c50 40 61 75 74 68 6f 72 20 53 74 65 70 68 61 6e 20  @author Stephan 
10c60 53 74 72 69 74 74 6d 61 74 74 65 72 0d 0a 2a 2f  Strittmatter..*/
10c70 0d 0a 4c 6f 67 34 6a 73 2e 4a 53 4f 4e 4c 61 79  ..Log4js.JSONLay
10c80 6f 75 74 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29  out = function()
10c90 20 7b 0d 0a 20 20 20 20 74 68 69 73 2e 64 66 20   {..    this.df 
10ca0 3d 20 6e 65 77 20 4c 6f 67 34 6a 73 2e 44 61 74  = new Log4js.Dat
10cb0 65 46 6f 72 6d 61 74 74 65 72 28 29 3b 0d 0a 7d  eFormatter();..}
10cc0 3b 0d 0a 4c 6f 67 34 6a 73 2e 4a 53 4f 4e 4c 61  ;..Log4js.JSONLa
10cd0 79 6f 75 74 2e 70 72 6f 74 6f 74 79 70 65 20 3d  yout.prototype =
10ce0 20 4c 6f 67 34 6a 73 2e 65 78 74 65 6e 64 28 6e   Log4js.extend(n
10cf0 65 77 20 4c 6f 67 34 6a 73 2e 4c 61 79 6f 75 74  ew Log4js.Layout
10d00 28 29 2c 20 7b 0d 0a 20 20 20 20 2f 2a 2a 20 0d  (), {..    /** .
10d10 0a 20 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74  .    * Implement
10d20 20 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 20   this method to 
10d30 63 72 65 61 74 65 20 79 6f 75 72 20 6f 77 6e 20  create your own 
10d40 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e 0d 0a  layout format...
10d50 20 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 4c 6f      * @param {Lo
10d60 67 34 6a 73 2e 4c 6f 67 67 69 6e 67 45 76 65 6e  g4js.LoggingEven
10d70 74 7d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20  t} loggingEvent 
10d80 6c 6f 67 67 69 6e 67 45 76 65 6e 74 20 74 6f 20  loggingEvent to 
10d90 66 6f 72 6d 61 74 0d 0a 20 20 20 20 2a 20 40 72  format..    * @r
10da0 65 74 75 72 6e 20 66 6f 72 6d 61 74 74 65 64 20  eturn formatted 
10db0 53 74 72 69 6e 67 0d 0a 20 20 20 20 2a 20 40 74  String..    * @t
10dc0 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20  ype String..    
10dd0 2a 2f 0d 0a 20 20 20 20 66 6f 72 6d 61 74 3a 20  */..    format: 
10de0 66 75 6e 63 74 69 6f 6e 28 6c 6f 67 67 69 6e 67  function(logging
10df0 45 76 65 6e 74 29 20 7b 0d 0a 20 20 20 20 20 20  Event) {..      
10e00 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20    ..            
10e10 20 20 20 20 76 61 72 20 75 73 65 72 61 67 65 6e      var useragen
10e20 74 20 3d 20 22 75 6e 6b 6e 6f 77 6e 22 3b 0d 0a  t = "unknown";..
10e30 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20          try {.. 
10e40 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 61             usera
10e50 67 65 6e 74 20 3d 20 6e 61 76 69 67 61 74 6f 72  gent = navigator
10e60 2e 75 73 65 72 41 67 65 6e 74 3b 0d 0a 20 20 20  .userAgent;..   
10e70 20 20 20 20 20 7d 20 63 61 74 63 68 28 65 29 7b       } catch(e){
10e80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73  ..            us
10e90 65 72 61 67 65 6e 74 20 3d 20 22 75 6e 6b 6e 6f  eragent = "unkno
10ea0 77 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  wn";..        }.
10eb0 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20  .        ..     
10ec0 20 20 20 76 61 72 20 72 65 66 65 72 65 72 20 3d     var referer =
10ed0 20 22 75 6e 6b 6e 6f 77 6e 22 3b 0d 0a 20 20 20   "unknown";..   
10ee0 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20 20       try {..    
10ef0 20 20 20 20 20 20 20 20 72 65 66 65 72 65 72 20          referer 
10f00 3d 20 6c 6f 63 61 74 69 6f 6e 2e 68 72 65 66 3b  = location.href;
10f10 0d 0a 20 20 20 20 20 20 20 20 7d 20 63 61 74 63  ..        } catc
10f20 68 28 65 29 7b 0d 0a 20 20 20 20 20 20 20 20 20  h(e){..         
10f30 20 20 20 72 65 66 65 72 65 72 20 3d 20 22 75 6e     referer = "un
10f40 6b 6e 6f 77 6e 22 3b 0d 0a 20 20 20 20 20 20 20  known";..       
10f50 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20   }..        ..  
10f60 20 20 20 20 20 20 76 61 72 20 6a 73 6f 6e 53 74        var jsonSt
10f70 72 69 6e 67 20 3d 20 22 7b 5c 6e 20 5c 22 4c 6f  ring = "{\n \"Lo
10f80 67 67 69 6e 67 45 76 65 6e 74 5c 22 3a 20 7b 5c  ggingEvent\": {\
10f90 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20  n";..        .. 
10fa0 20 20 20 20 20 20 20 6a 73 6f 6e 53 74 72 69 6e         jsonStrin
10fb0 67 20 2b 3d 20 22 5c 74 5c 22 6c 6f 67 67 65 72  g += "\t\"logger
10fc0 5c 22 3a 20 5c 22 22 20 2b 20 20 6c 6f 67 67 69  \": \"" +  loggi
10fd0 6e 67 45 76 65 6e 74 2e 63 61 74 65 67 6f 72 79  ngEvent.category
10fe0 4e 61 6d 65 20 2b 20 22 5c 22 2c 5c 6e 22 3b 0d  Name + "\",\n";.
10ff0 0a 20 20 20 20 20 20 20 20 6a 73 6f 6e 53 74 72  .        jsonStr
11000 69 6e 67 20 2b 3d 20 22 5c 74 5c 22 6c 65 76 65  ing += "\t\"leve
11010 6c 5c 22 3a 20 5c 22 22 20 2b 20 20 6c 6f 67 67  l\": \"" +  logg
11020 69 6e 67 45 76 65 6e 74 2e 6c 65 76 65 6c 2e 74  ingEvent.level.t
11030 6f 53 74 72 69 6e 67 28 29 20 2b 20 22 5c 22 2c  oString() + "\",
11040 5c 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 6a 73  \n";..        js
11050 6f 6e 53 74 72 69 6e 67 20 2b 3d 20 22 5c 74 5c  onString += "\t\
11060 22 6d 65 73 73 61 67 65 5c 22 3a 20 5c 22 22 20  "message\": \"" 
11070 2b 20 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e  +  loggingEvent.
11080 6d 65 73 73 61 67 65 20 2b 20 22 5c 22 2c 5c 6e  message + "\",\n
11090 22 3b 20 0d 0a 20 20 20 20 20 20 20 20 6a 73 6f  "; ..        jso
110a0 6e 53 74 72 69 6e 67 20 2b 3d 20 22 5c 74 5c 22  nString += "\t\"
110b0 72 65 66 65 72 65 72 5c 22 3a 20 5c 22 22 20 2b  referer\": \"" +
110c0 20 72 65 66 65 72 65 72 20 2b 20 22 5c 22 2c 5c   referer + "\",\
110d0 6e 22 3b 20 0d 0a 20 20 20 20 20 20 20 20 6a 73  n"; ..        js
110e0 6f 6e 53 74 72 69 6e 67 20 2b 3d 20 22 5c 74 5c  onString += "\t\
110f0 22 75 73 65 72 61 67 65 6e 74 5c 22 3a 20 5c 22  "useragent\": \"
11100 22 20 2b 20 75 73 65 72 61 67 65 6e 74 20 2b 20  " + useragent + 
11110 22 5c 22 2c 5c 6e 22 3b 20 0d 0a 20 20 20 20 20  "\",\n"; ..     
11120 20 20 20 6a 73 6f 6e 53 74 72 69 6e 67 20 2b 3d     jsonString +=
11130 20 22 5c 74 5c 22 74 69 6d 65 73 74 61 6d 70 5c   "\t\"timestamp\
11140 22 3a 20 5c 22 22 20 2b 20 20 74 68 69 73 2e 64  ": \"" +  this.d
11150 66 2e 66 6f 72 6d 61 74 44 61 74 65 28 6c 6f 67  f.formatDate(log
11160 67 69 6e 67 45 76 65 6e 74 2e 73 74 61 72 74 54  gingEvent.startT
11170 69 6d 65 2c 20 22 79 79 79 79 2d 4d 4d 2d 64 64  ime, "yyyy-MM-dd
11180 54 68 68 3a 6d 6d 3a 73 73 5a 22 29 20 2b 20 22  Thh:mm:ssZ") + "
11190 5c 22 2c 5c 6e 22 3b 0d 0a 20 20 20 20 20 20 20  \",\n";..       
111a0 20 6a 73 6f 6e 53 74 72 69 6e 67 20 2b 3d 20 22   jsonString += "
111b0 5c 74 5c 22 65 78 63 65 70 74 69 6f 6e 5c 22 3a  \t\"exception\":
111c0 20 5c 22 22 20 2b 20 20 6c 6f 67 67 69 6e 67 45   \"" +  loggingE
111d0 76 65 6e 74 2e 65 78 63 65 70 74 69 6f 6e 20 2b  vent.exception +
111e0 20 22 5c 22 5c 6e 22 3b 20 0d 0a 20 20 20 20 20   "\"\n"; ..     
111f0 20 20 20 6a 73 6f 6e 53 74 72 69 6e 67 20 2b 3d     jsonString +=
11200 20 22 7d 7d 22 3b 20 20 20 20 20 20 0d 0a 20 20   "}}";      ..  
11210 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
11220 72 65 74 75 72 6e 20 6a 73 6f 6e 53 74 72 69 6e  return jsonStrin
11230 67 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  g;..    },..    
11240 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 52 65 74 75  /** ..    * Retu
11250 72 6e 73 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  rns the content 
11260 74 79 70 65 20 6f 75 74 70 75 74 20 62 79 20 74  type output by t
11270 68 69 73 20 6c 61 79 6f 75 74 2e 20 0d 0a 20 20  his layout. ..  
11280 20 20 2a 20 40 72 65 74 75 72 6e 20 54 68 65 20    * @return The 
11290 62 61 73 65 20 63 6c 61 73 73 20 72 65 74 75 72  base class retur
112a0 6e 73 20 22 74 65 78 74 2f 78 6d 6c 22 2e 0d 0a  ns "text/xml"...
112b0 20 20 20 20 2a 20 40 74 79 70 65 20 53 74 72 69      * @type Stri
112c0 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  ng..    */..    
112d0 67 65 74 43 6f 6e 74 65 6e 74 54 79 70 65 3a 20  getContentType: 
112e0 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
112f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 74 65        return "te
11300 78 74 2f 6a 73 6f 6e 22 3b 0d 0a 20 20 20 20 7d  xt/json";..    }
11310 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20  ,..    /** ..   
11320 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74 75 72   * @return Retur
11330 6e 73 20 74 68 65 20 68 65 61 64 65 72 20 66 6f  ns the header fo
11340 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66 6f 72  r the layout for
11350 6d 61 74 2e 20 54 68 65 20 62 61 73 65 20 63 6c  mat. The base cl
11360 61 73 73 20 72 65 74 75 72 6e 73 20 6e 75 6c 6c  ass returns null
11370 2e 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53  ...    * @type S
11380 74 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20  tring..    */.. 
11390 20 20 20 67 65 74 48 65 61 64 65 72 3a 20 66 75     getHeader: fu
113a0 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20  nction() {..    
113b0 20 20 20 20 72 65 74 75 72 6e 20 22 7b 5c 22 4c      return "{\"L
113c0 6f 67 34 6a 73 5c 22 3a 20 5b 5c 6e 22 3b 0d 0a  og4js\": [\n";..
113d0 20 20 20 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20      },..    /** 
113e0 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20  ..    * @return 
113f0 52 65 74 75 72 6e 73 20 74 68 65 20 66 6f 6f 74  Returns the foot
11400 65 72 20 66 6f 72 20 74 68 65 20 6c 61 79 6f 75  er for the layou
11410 74 20 66 6f 72 6d 61 74 2e 20 54 68 65 20 62 61  t format. The ba
11420 73 65 20 63 6c 61 73 73 20 72 65 74 75 72 6e 73  se class returns
11430 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2a 20 40 74   null...    * @t
11440 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20  ype String..    
11450 2a 2f 0d 0a 20 20 20 20 67 65 74 46 6f 6f 74 65  */..    getFoote
11460 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d  r: function() {.
11470 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
11480 22 5c 6e 5d 7d 22 3b 0d 0a 20 20 20 20 7d 2c 0d  "\n]}";..    },.
11490 0a 20 20 20 20 0d 0a 20 20 20 20 67 65 74 53 65  .    ..    getSe
114a0 70 61 72 61 74 6f 72 3a 20 66 75 6e 63 74 69 6f  parator: functio
114b0 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 72  n() {..        r
114c0 65 74 75 72 6e 20 22 2c 5c 6e 22 3b 0d 0a 20 20  eturn ",\n";..  
114d0 20 20 7d 0d 0a 7d 29 3b 0d 0a 0d 0a 2f 2a 2a 20    }..});..../** 
114e0 0d 0a 2a 20 50 61 74 74 65 72 6e 4c 61 79 6f 75  ..* PatternLayou
114f0 74 20 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73 2e 50  t ..*/..Log4js.P
11500 61 74 74 65 72 6e 4c 61 79 6f 75 74 20 3d 20 66  atternLayout = f
11510 75 6e 63 74 69 6f 6e 28 70 61 74 74 65 72 6e 29  unction(pattern)
11520 20 7b 0d 0a 20 20 20 20 69 66 20 28 70 61 74 74   {..    if (patt
11530 65 72 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ern) {..        
11540 74 68 69 73 2e 70 61 74 74 65 72 6e 20 3d 20 70  this.pattern = p
11550 61 74 74 65 72 6e 3b 0d 0a 20 20 20 20 7d 20 65  attern;..    } e
11560 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 74  lse {..        t
11570 68 69 73 2e 70 61 74 74 65 72 6e 20 3d 20 4c 6f  his.pattern = Lo
11580 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79 6f  g4js.PatternLayo
11590 75 74 2e 44 45 46 41 55 4c 54 5f 43 4f 4e 56 45  ut.DEFAULT_CONVE
115a0 52 53 49 4f 4e 5f 50 41 54 54 45 52 4e 3b 0d 0a  RSION_PATTERN;..
115b0 20 20 20 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f 67      }..};....Log
115c0 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79 6f 75  4js.PatternLayou
115d0 74 2e 54 54 43 43 5f 43 4f 4e 56 45 52 53 49 4f  t.TTCC_CONVERSIO
115e0 4e 5f 50 41 54 54 45 52 4e 20 3d 20 22 25 72 20  N_PATTERN = "%r 
115f0 25 70 20 25 63 20 2d 20 25 6d 25 6e 22 3b 0d 0a  %p %c - %m%n";..
11600 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61  Log4js.PatternLa
11610 79 6f 75 74 2e 44 45 46 41 55 4c 54 5f 43 4f 4e  yout.DEFAULT_CON
11620 56 45 52 53 49 4f 4e 5f 50 41 54 54 45 52 4e 20  VERSION_PATTERN 
11630 3d 20 22 25 6d 25 6e 22 3b 0d 0a 4c 6f 67 34 6a  = "%m%n";..Log4j
11640 73 2e 50 61 74 74 65 72 6e 4c 61 79 6f 75 74 2e  s.PatternLayout.
11650 49 53 4f 38 36 30 31 5f 44 41 54 45 46 4f 52 4d  ISO8601_DATEFORM
11660 41 54 20 3d 20 22 79 79 79 79 2d 4d 4d 2d 64 64  AT = "yyyy-MM-dd
11670 20 48 48 3a 6d 6d 3a 73 73 2c 53 53 53 22 3b 0d   HH:mm:ss,SSS";.
11680 0a 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c  .Log4js.PatternL
11690 61 79 6f 75 74 2e 44 41 54 45 54 49 4d 45 5f 44  ayout.DATETIME_D
116a0 41 54 45 46 4f 52 4d 41 54 20 3d 20 22 64 64 20  ATEFORMAT = "dd 
116b0 4d 4d 4d 20 59 59 59 59 20 48 48 3a 6d 6d 3a 73  MMM YYYY HH:mm:s
116c0 73 2c 53 53 53 22 3b 0d 0a 4c 6f 67 34 6a 73 2e  s,SSS";..Log4js.
116d0 50 61 74 74 65 72 6e 4c 61 79 6f 75 74 2e 41 42  PatternLayout.AB
116e0 53 4f 4c 55 54 45 54 49 4d 45 5f 44 41 54 45 46  SOLUTETIME_DATEF
116f0 4f 52 4d 41 54 20 3d 20 22 48 48 3a 6d 6d 3a 73  ORMAT = "HH:mm:s
11700 73 2c 53 53 53 22 3b 0d 0a 0d 0a 4c 6f 67 34 6a  s,SSS";....Log4j
11710 73 2e 50 61 74 74 65 72 6e 4c 61 79 6f 75 74 2e  s.PatternLayout.
11720 70 72 6f 74 6f 74 79 70 65 20 3d 20 4c 6f 67 34  prototype = Log4
11730 6a 73 2e 65 78 74 65 6e 64 28 6e 65 77 20 4c 6f  js.extend(new Lo
11740 67 34 6a 73 2e 4c 61 79 6f 75 74 28 29 2c 20 7b  g4js.Layout(), {
11750 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20  ..    /** ..    
11760 2a 20 52 65 74 75 72 6e 73 20 74 68 65 20 63 6f  * Returns the co
11770 6e 74 65 6e 74 20 74 79 70 65 20 6f 75 74 70 75  ntent type outpu
11780 74 20 62 79 20 74 68 69 73 20 6c 61 79 6f 75 74  t by this layout
11790 2e 20 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 72  . ..    * @retur
117a0 6e 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 2e 0d  n "text/plain"..
117b0 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53 74 72  .    * @type Str
117c0 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20  ing..    */..   
117d0 20 67 65 74 43 6f 6e 74 65 6e 74 54 79 70 65 3a   getContentType:
117e0 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
117f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 74         return "t
11800 65 78 74 2f 70 6c 61 69 6e 22 3b 0d 0a 20 20 20  ext/plain";..   
11810 20 7d 2c 0d 0a 20 20 20 20 2f 2a 2a 20 0d 0a 20   },..    /** .. 
11820 20 20 20 2a 20 40 72 65 74 75 72 6e 20 52 65 74     * @return Ret
11830 75 72 6e 73 20 74 68 65 20 68 65 61 64 65 72 20  urns the header 
11840 66 6f 72 20 74 68 65 20 6c 61 79 6f 75 74 20 66  for the layout f
11850 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 2a 20 40 74  ormat...    * @t
11860 79 70 65 20 53 74 72 69 6e 67 0d 0a 20 20 20 20  ype String..    
11870 2a 2f 0d 0a 20 20 20 20 67 65 74 48 65 61 64 65  */..    getHeade
11880 72 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d  r: function() {.
11890 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
118a0 6e 75 6c 6c 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20  null;..    },.. 
118b0 20 20 20 2f 2a 2a 20 0d 0a 20 20 20 20 2a 20 40     /** ..    * @
118c0 72 65 74 75 72 6e 20 52 65 74 75 72 6e 73 20 74  return Returns t
118d0 68 65 20 66 6f 6f 74 65 72 20 66 6f 72 20 74 68  he footer for th
118e0 65 20 6c 61 79 6f 75 74 20 66 6f 72 6d 61 74 2e  e layout format.
118f0 0d 0a 20 20 20 20 2a 20 40 74 79 70 65 20 53 74  ..    * @type St
11900 72 69 6e 67 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20  ring..    */..  
11910 20 20 67 65 74 46 6f 6f 74 65 72 3a 20 66 75 6e    getFooter: fun
11920 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20  ction() {..     
11930 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11940 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
11950 20 20 20 66 6f 72 6d 61 74 3a 20 66 75 6e 63 74     format: funct
11960 69 6f 6e 28 6c 6f 67 67 69 6e 67 45 76 65 6e 74  ion(loggingEvent
11970 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  ) {..        var
11980 20 72 65 67 65 78 20 3d 20 2f 25 28 2d 3f 5b 30   regex = /%(-?[0
11990 2d 39 5d 2b 29 3f 28 5c 2e 3f 5b 30 2d 39 5d 2b  -9]+)?(\.?[0-9]+
119a0 29 3f 28 5b 63 64 6d 6e 70 72 25 5d 29 28 5c 7b  )?([cdmnpr%])(\{
119b0 28 5b 5e 5c 7d 5d 2b 29 5c 7d 29 3f 7c 28 5b 5e  ([^\}]+)\})?|([^
119c0 25 5d 2b 29 2f 3b 0d 0a 20 20 20 20 20 20 20 20  %]+)/;..        
119d0 76 61 72 20 66 6f 72 6d 61 74 74 65 64 53 74 72  var formattedStr
119e0 69 6e 67 20 3d 20 22 22 3b 0d 0a 20 20 20 20 20  ing = "";..     
119f0 20 20 20 76 61 72 20 72 65 73 75 6c 74 3b 0d 0a     var result;..
11a00 20 20 20 20 20 20 20 20 76 61 72 20 73 65 61 72          var sear
11a10 63 68 53 74 72 69 6e 67 20 3d 20 74 68 69 73 2e  chString = this.
11a20 70 61 74 74 65 72 6e 3b 0d 0a 20 20 20 20 20 20  pattern;..      
11a30 20 20 2f 2f 20 43 61 6e 6e 6f 74 20 75 73 65 20    // Cannot use 
11a40 72 65 67 65 78 20 67 6c 6f 62 61 6c 20 66 6c 61  regex global fla
11a50 67 20 73 69 6e 63 65 20 69 74 20 64 6f 65 73 6e  g since it doesn
11a60 27 74 20 77 6f 72 6b 20 69 6e 20 49 45 35 0d 0a  't work in IE5..
11a70 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 28          while ((
11a80 72 65 73 75 6c 74 20 3d 20 72 65 67 65 78 2e 65  result = regex.e
11a90 78 65 63 28 73 65 61 72 63 68 53 74 72 69 6e 67  xec(searchString
11aa0 29 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ))) {..         
11ab0 20 20 20 76 61 72 20 6d 61 74 63 68 65 64 53 74     var matchedSt
11ac0 72 69 6e 67 20 3d 20 72 65 73 75 6c 74 5b 30 5d  ring = result[0]
11ad0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76  ;..            v
11ae0 61 72 20 70 61 64 64 69 6e 67 20 3d 20 72 65 73  ar padding = res
11af0 75 6c 74 5b 31 5d 3b 0d 0a 20 20 20 20 20 20 20  ult[1];..       
11b00 20 20 20 20 20 76 61 72 20 74 72 75 6e 63 61 74       var truncat
11b10 69 6f 6e 20 3d 20 72 65 73 75 6c 74 5b 32 5d 3b  ion = result[2];
11b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61  ..            va
11b30 72 20 63 6f 6e 76 65 72 73 69 6f 6e 43 68 61 72  r conversionChar
11b40 61 63 74 65 72 20 3d 20 72 65 73 75 6c 74 5b 33  acter = result[3
11b50 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
11b60 76 61 72 20 73 70 65 63 69 66 69 65 72 20 3d 20  var specifier = 
11b70 72 65 73 75 6c 74 5b 35 5d 3b 0d 0a 20 20 20 20  result[5];..    
11b80 20 20 20 20 20 20 20 20 76 61 72 20 74 65 78 74          var text
11b90 20 3d 20 72 65 73 75 6c 74 5b 36 5d 3b 0d 0a 0d   = result[6];...
11ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
11bb0 43 68 65 63 6b 20 69 66 20 74 68 65 20 70 61 74  Check if the pat
11bc0 74 65 72 6e 20 6d 61 74 63 68 65 64 20 77 61 73  tern matched was
11bd0 20 6a 75 73 74 20 6e 6f 72 6d 61 6c 20 74 65 78   just normal tex
11be0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0d  t..            .
11bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
11c00 28 74 65 78 74 29 20 7b 0d 0a 20 20 20 20 20 20  (text) {..      
11c10 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74            format
11c20 74 65 64 53 74 72 69 6e 67 20 2b 3d 20 22 22 20  tedString += "" 
11c30 2b 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20  + text;..       
11c40 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
11c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
11c60 2f 20 43 72 65 61 74 65 20 61 20 72 61 77 20 72  / Create a raw r
11c70 65 70 6c 61 63 65 6d 65 6e 74 20 73 74 72 69 6e  eplacement strin
11c80 67 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63  g based on the c
11c90 6f 6e 76 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20  onversion..     
11ca0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 68             // ch
11cb0 61 72 61 63 74 65 72 20 61 6e 64 20 73 70 65 63  aracter and spec
11cc0 69 66 69 65 72 0d 0a 20 20 20 20 20 20 20 20 20  ifier..         
11cd0 20 20 20 20 20 20 20 76 61 72 20 72 65 70 6c 61         var repla
11ce0 63 65 6d 65 6e 74 20 3d 20 22 22 3b 0d 0a 20 20  cement = "";..  
11cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a                ..
11d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d10 73 77 69 74 63 68 28 63 6f 6e 76 65 72 73 69 6f  switch(conversio
11d20 6e 43 68 61 72 61 63 74 65 72 29 20 7b 0d 0a 20  nCharacter) {.. 
11d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d40 20 20 20 63 61 73 65 20 22 63 22 3a 0d 0a 20 20     case "c":..  
11d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d60 20 20 20 20 20 20 76 61 72 20 6c 6f 67 67 65 72        var logger
11d70 4e 61 6d 65 20 3d 20 6c 6f 67 67 69 6e 67 45 76  Name = loggingEv
11d80 65 6e 74 2e 63 61 74 65 67 6f 72 79 4e 61 6d 65  ent.categoryName
11d90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11da0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
11db0 70 65 63 69 66 69 65 72 29 20 7b 0d 0a 20 20 20  pecifier) {..   
11dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11dd0 20 20 20 20 20 20 20 20 20 76 61 72 20 70 72 65           var pre
11de0 63 69 73 69 6f 6e 20 3d 20 70 61 72 73 65 49 6e  cision = parseIn
11df0 74 28 73 70 65 63 69 66 69 65 72 2c 20 31 30 29  t(specifier, 10)
11e00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
11e20 61 72 20 6c 6f 67 67 65 72 4e 61 6d 65 42 69 74  ar loggerNameBit
11e30 73 20 3d 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74  s = loggingEvent
11e40 2e 63 61 74 65 67 6f 72 79 4e 61 6d 65 2e 73 70  .categoryName.sp
11e50 6c 69 74 28 22 2e 22 29 3b 0d 0a 20 20 20 20 20  lit(".");..     
11e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e70 20 20 20 20 20 20 20 69 66 20 28 70 72 65 63 69         if (preci
11e80 73 69 6f 6e 20 3e 3d 20 6c 6f 67 67 65 72 4e 61  sion >= loggerNa
11e90 6d 65 42 69 74 73 2e 6c 65 6e 67 74 68 29 20 7b  meBits.length) {
11ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ec0 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20    replacement = 
11ed0 6c 6f 67 67 65 72 4e 61 6d 65 3b 0d 0a 20 20 20  loggerName;..   
11ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ef0 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
11f00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f20 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d     replacement =
11f30 20 6c 6f 67 67 65 72 4e 61 6d 65 42 69 74 73 2e   loggerNameBits.
11f40 73 6c 69 63 65 28 6c 6f 67 67 65 72 4e 61 6d 65  slice(loggerName
11f50 42 69 74 73 2e 6c 65 6e 67 74 68 20 2d 20 70 72  Bits.length - pr
11f60 65 63 69 73 69 6f 6e 29 2e 6a 6f 69 6e 28 22 2e  ecision).join(".
11f70 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
11f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f90 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11fa0 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
11fb0 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
11fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fd0 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20    replacement = 
11fe0 6c 6f 67 67 65 72 4e 61 6d 65 3b 0d 0a 20 20 20  loggerName;..   
11ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12000 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12020 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
12030 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
12040 20 22 64 22 3a 0d 0a 20 20 20 20 20 20 20 20 20   "d":..         
12050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
12060 61 72 20 64 61 74 65 46 6f 72 6d 61 74 20 3d 20  ar dateFormat = 
12070 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61  Log4js.PatternLa
12080 79 6f 75 74 2e 49 53 4f 38 36 30 31 5f 44 41 54  yout.ISO8601_DAT
12090 45 46 4f 52 4d 41 54 3b 0d 0a 20 20 20 20 20 20  EFORMAT;..      
120a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120b0 20 20 69 66 20 28 73 70 65 63 69 66 69 65 72 29    if (specifier)
120c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
120d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120e0 64 61 74 65 46 6f 72 6d 61 74 20 3d 20 73 70 65  dateFormat = spe
120f0 63 69 66 69 65 72 3b 0d 0a 20 20 20 20 20 20 20  cifier;..       
12100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12110 20 20 20 20 20 2f 2f 20 50 69 63 6b 20 75 70 20       // Pick up 
12120 73 70 65 63 69 61 6c 20 63 61 73 65 73 0d 0a 20  special cases.. 
12130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12140 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
12150 61 74 65 46 6f 72 6d 61 74 20 3d 3d 20 22 49 53  ateFormat == "IS
12160 4f 38 36 30 31 22 29 20 7b 0d 0a 20 20 20 20 20  O8601") {..     
12170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12180 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 46             dateF
12190 6f 72 6d 61 74 20 3d 20 4c 6f 67 34 6a 73 2e 50  ormat = Log4js.P
121a0 61 74 74 65 72 6e 4c 61 79 6f 75 74 2e 49 53 4f  atternLayout.ISO
121b0 38 36 30 31 5f 44 41 54 45 46 4f 52 4d 41 54 3b  8601_DATEFORMAT;
121c0 0d 0a 20 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 7d 20                } 
121e0 65 6c 73 65 20 69 66 20 28 64 61 74 65 46 6f 72  else if (dateFor
121f0 6d 61 74 20 3d 3d 20 22 41 42 53 4f 4c 55 54 45  mat == "ABSOLUTE
12200 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12220 20 20 20 20 20 20 64 61 74 65 46 6f 72 6d 61 74        dateFormat
12230 20 3d 20 4c 6f 67 34 6a 73 2e 50 61 74 74 65 72   = Log4js.Patter
12240 6e 4c 61 79 6f 75 74 2e 41 42 53 4f 4c 55 54 45  nLayout.ABSOLUTE
12250 54 49 4d 45 5f 44 41 54 45 46 4f 52 4d 41 54 3b  TIME_DATEFORMAT;
12260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
12280 65 6c 73 65 20 69 66 20 28 64 61 74 65 46 6f 72  else if (dateFor
12290 6d 61 74 20 3d 3d 20 22 44 41 54 45 22 29 20 7b  mat == "DATE") {
122a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
122b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122c0 20 20 64 61 74 65 46 6f 72 6d 61 74 20 3d 20 4c    dateFormat = L
122d0 6f 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79  og4js.PatternLay
122e0 6f 75 74 2e 44 41 54 45 54 49 4d 45 5f 44 41 54  out.DATETIME_DAT
122f0 45 46 4f 52 4d 41 54 3b 0d 0a 20 20 20 20 20 20  EFORMAT;..      
12300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12310 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12330 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12340 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46              // F
12350 6f 72 6d 61 74 20 74 68 65 20 64 61 74 65 0d 0a  ormat the date..
12360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12370 20 20 20 20 20 20 20 20 72 65 70 6c 61 63 65 6d          replacem
12380 65 6e 74 20 3d 20 28 6e 65 77 20 4c 6f 67 34 6a  ent = (new Log4j
12390 73 2e 53 69 6d 70 6c 65 44 61 74 65 46 6f 72 6d  s.SimpleDateForm
123a0 61 74 28 64 61 74 65 46 6f 72 6d 61 74 29 29 2e  at(dateFormat)).
123b0 66 6f 72 6d 61 74 28 6c 6f 67 67 69 6e 67 45 76  format(loggingEv
123c0 65 6e 74 2e 73 74 61 72 74 54 69 6d 65 29 3b 0d  ent.startTime);.
123d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
123e0 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
123f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12400 20 20 20 20 20 63 61 73 65 20 22 6d 22 3a 0d 0a       case "m":..
12410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12420 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
12430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12440 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20    replacement = 
12450 74 68 69 73 2e 66 6f 72 6d 61 74 4f 62 6a 65 63  this.formatObjec
12460 74 45 78 70 61 6e 73 69 6f 6e 28 6c 6f 67 67 69  tExpansion(loggi
12470 6e 67 45 76 65 6e 74 2e 6d 65 73 73 61 67 65 2c  ngEvent.message,
12480 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   1);..          
12490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
124a0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
124b0 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
124c0 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n":..           
124d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70               rep
124e0 6c 61 63 65 6d 65 6e 74 20 3d 20 22 5c 6e 22 3b  lacement = "\n";
124f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12500 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
12510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12520 20 20 20 20 20 20 63 61 73 65 20 22 70 22 3a 0d        case "p":.
12530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12540 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 63 65           replace
12550 6d 65 6e 74 20 3d 20 6c 6f 67 67 69 6e 67 45 76  ment = loggingEv
12560 65 6e 74 2e 6c 65 76 65 6c 2e 74 6f 53 74 72 69  ent.level.toStri
12570 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
12580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
12590 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  reak;..         
125a0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
125b0 22 72 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  "r":..          
125c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
125d0 70 6c 61 63 65 6d 65 6e 74 20 3d 20 22 22 20 2b  placement = "" +
125e0 20 6c 6f 67 67 69 6e 67 45 76 65 6e 74 2e 73 74   loggingEvent.st
125f0 61 72 74 54 69 6d 65 2e 74 6f 4c 6f 63 61 6c 65  artTime.toLocale
12600 54 69 6d 65 53 74 72 69 6e 67 28 29 3b 20 2f 2f  TimeString(); //
12610 54 4f 44 4f 3a 20 2e 67 65 74 44 69 66 66 65 72  TODO: .getDiffer
12620 65 6e 63 65 28 4c 6f 67 34 6a 73 2e 61 70 70 6c  ence(Log4js.appl
12630 69 63 61 74 69 6f 6e 53 74 61 72 74 44 61 74 65  icationStartDate
12640 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
12650 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61              brea
12660 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
12670 20 20 20 20 20 20 20 20 63 61 73 65 20 22 25 22          case "%"
12680 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
12690 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c 61             repla
126a0 63 65 6d 65 6e 74 20 3d 20 22 25 22 3b 0d 0a 20  cement = "%";.. 
126b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126c0 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
126d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126e0 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20     default:..   
126f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12700 20 20 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74       replacement
12710 20 3d 20 6d 61 74 63 68 65 64 53 74 72 69 6e 67   = matchedString
12720 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12730 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
12740 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12750 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12760 20 20 20 20 20 20 2f 2f 20 46 6f 72 6d 61 74 20        // Format 
12770 74 68 65 20 72 65 70 6c 61 63 65 6d 65 6e 74 20  the replacement 
12780 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 61 6e 79  according to any
12790 20 70 61 64 64 69 6e 67 20 6f 72 0d 0a 20 20 20   padding or..   
127a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
127b0 74 72 75 6e 63 61 74 69 6f 6e 20 73 70 65 63 69  truncation speci
127c0 66 69 65 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20  fied....        
127d0 20 20 20 20 20 20 20 20 76 61 72 20 6c 65 6e 3b          var len;
127e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
127f0 20 20 20 20 2f 2f 20 46 69 72 73 74 2c 20 74 72      // First, tr
12800 75 6e 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  uncation..      
12810 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 72            if (tr
12820 75 6e 63 61 74 69 6f 6e 29 20 7b 0d 0a 20 20 20  uncation) {..   
12830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12840 20 6c 65 6e 20 3d 20 70 61 72 73 65 49 6e 74 28   len = parseInt(
12850 74 72 75 6e 63 61 74 69 6f 6e 2e 73 75 62 73 74  truncation.subst
12860 72 28 31 29 2c 20 31 30 29 3b 0d 0a 20 20 20 20  r(1), 10);..    
12870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12880 72 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20 72 65  replacement = re
12890 70 6c 61 63 65 6d 65 6e 74 2e 73 75 62 73 74 72  placement.substr
128a0 69 6e 67 28 30 2c 20 6c 65 6e 29 3b 0d 0a 20 20  ing(0, len);..  
128b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
128c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
128d0 20 2f 2f 20 4e 65 78 74 2c 20 70 61 64 64 69 6e   // Next, paddin
128e0 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
128f0 20 20 20 69 66 20 28 70 61 64 64 69 6e 67 29 20     if (padding) 
12900 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12910 20 20 20 20 20 20 20 69 66 20 28 70 61 64 64 69         if (paddi
12920 6e 67 2e 63 68 61 72 41 74 28 30 29 20 3d 3d 20  ng.charAt(0) == 
12930 22 2d 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  "-") {..        
12940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12950 6c 65 6e 20 3d 20 70 61 72 73 65 49 6e 74 28 70  len = parseInt(p
12960 61 64 64 69 6e 67 2e 73 75 62 73 74 72 28 31 29  adding.substr(1)
12970 2c 20 31 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  , 10);..        
12980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12990 2f 2f 20 52 69 67 68 74 20 70 61 64 20 77 69 74  // Right pad wit
129a0 68 20 73 70 61 63 65 73 0d 0a 20 20 20 20 20 20  h spaces..      
129b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129c0 20 20 77 68 69 6c 65 20 28 72 65 70 6c 61 63 65    while (replace
129d0 6d 65 6e 74 2e 6c 65 6e 67 74 68 20 3c 20 6c 65  ment.length < le
129e0 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  n) {..          
129f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a00 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 2b 3d    replacement +=
12a10 20 22 20 22 3b 0d 0a 20 20 20 20 20 20 20 20 20   " ";..         
12a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
12a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12a40 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
12a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a60 20 20 20 20 20 20 20 20 6c 65 6e 20 3d 20 70 61          len = pa
12a70 72 73 65 49 6e 74 28 70 61 64 64 69 6e 67 2c 20  rseInt(padding, 
12a80 31 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  10);..          
12a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12aa0 20 4c 65 66 74 20 70 61 64 20 77 69 74 68 20 73   Left pad with s
12ab0 70 61 63 65 73 0d 0a 20 20 20 20 20 20 20 20 20  paces..         
12ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
12ad0 68 69 6c 65 20 28 72 65 70 6c 61 63 65 6d 65 6e  hile (replacemen
12ae0 74 2e 6c 65 6e 67 74 68 20 3c 20 6c 65 6e 29 20  t.length < len) 
12af0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12b10 65 70 6c 61 63 65 6d 65 6e 74 20 3d 20 22 20 22  eplacement = " "
12b20 20 2b 20 72 65 70 6c 61 63 65 6d 65 6e 74 3b 0d   + replacement;.
12b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12b40 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b60 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12b70 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12b80 20 20 20 20 20 20 66 6f 72 6d 61 74 74 65 64 53        formattedS
12b90 74 72 69 6e 67 20 2b 3d 20 72 65 70 6c 61 63 65  tring += replace
12ba0 6d 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ment;..         
12bb0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12bc0 20 20 73 65 61 72 63 68 53 74 72 69 6e 67 20 3d    searchString =
12bd0 20 73 65 61 72 63 68 53 74 72 69 6e 67 2e 73 75   searchString.su
12be0 62 73 74 72 28 72 65 73 75 6c 74 2e 69 6e 64 65  bstr(result.inde
12bf0 78 20 2b 20 72 65 73 75 6c 74 5b 30 5d 2e 6c 65  x + result[0].le
12c00 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20  ngth);..        
12c10 7d 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  }..        retur
12c20 6e 20 66 6f 72 6d 61 74 74 65 64 53 74 72 69 6e  n formattedStrin
12c30 67 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20  g;..    },..    
12c40 0d 0a 20 20 20 20 66 6f 72 6d 61 74 4f 62 6a 65  ..    formatObje
12c50 63 74 45 78 70 61 6e 73 69 6f 6e 20 3a 20 66 75  ctExpansion : fu
12c60 6e 63 74 69 6f 6e 20 28 6f 62 6a 2c 20 64 65 70  nction (obj, dep
12c70 74 68 2c 20 69 6e 64 65 6e 74 61 74 69 6f 6e 29  th, indentation)
12c80 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20   {..        var 
12c90 6f 62 6a 65 63 74 73 45 78 70 61 6e 64 65 64 20  objectsExpanded 
12ca0 3d 20 5b 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  = [];....       
12cb0 20 66 75 6e 63 74 69 6f 6e 20 64 6f 46 6f 72 6d   function doForm
12cc0 61 74 28 6f 62 6a 2c 20 64 65 70 74 68 2c 20 69  at(obj, depth, i
12cd0 6e 64 65 6e 74 61 74 69 6f 6e 29 20 7b 0d 0a 20  ndentation) {.. 
12ce0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69             var i
12cf0 2c 20 6a 2c 20 6c 65 6e 2c 20 63 68 69 6c 64 44  , j, len, childD
12d00 65 70 74 68 2c 20 63 68 69 6c 64 49 6e 64 65 6e  epth, childInden
12d10 74 61 74 69 6f 6e 2c 20 63 68 69 6c 64 4c 69 6e  tation, childLin
12d20 65 73 2c 20 65 78 70 61 6e 73 69 6f 6e 2c 0d 0a  es, expansion,..
12d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d40 63 68 69 6c 64 45 78 70 61 6e 73 69 6f 6e 3b 0d  childExpansion;.
12d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
12d60 20 6e 65 77 4c 69 6e 65 20 3d 20 27 5c 72 5c 6e   newLine = '\r\n
12d70 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ';..            
12d80 69 66 20 28 21 69 6e 64 65 6e 74 61 74 69 6f 6e  if (!indentation
12d90 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
12da0 20 20 20 20 20 69 6e 64 65 6e 74 61 74 69 6f 6e       indentation
12db0 20 3d 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20   = "";..        
12dc0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12dd0 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20     ..           
12de0 20 66 75 6e 63 74 69 6f 6e 20 74 6f 53 74 72 28   function toStr(
12df0 6f 62 6a 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  obj) {..        
12e00 20 20 20 20 20 20 20 20 76 61 72 20 76 61 6c 75          var valu
12e10 65 20 3d 20 27 27 0d 0a 20 20 20 20 20 20 20 20  e = ''..        
12e20 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20          try {.. 
12e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e40 20 20 20 69 66 20 28 6f 62 6a 20 26 26 20 6f 62     if (obj && ob
12e50 6a 2e 74 6f 53 74 72 69 6e 67 29 20 7b 0d 0a 20  j.toString) {.. 
12e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e70 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 6f         value = o
12e80 62 6a 2e 74 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  bj.toString();..
12e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ea0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
12eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ec0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 53 74        value = St
12ed0 72 69 6e 67 28 6f 62 6a 29 3b 0d 0a 20 20 20 20  ring(obj);..    
12ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ef0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12f00 20 20 20 7d 20 63 61 74 63 68 28 65 78 29 20 7b     } catch(ex) {
12f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12f20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20        try {..   
12f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f40 20 20 20 20 20 76 61 6c 75 65 20 3d 20 74 6f 38       value = to8
12f50 56 61 6c 75 65 28 6f 62 6a 29 2e 74 6f 53 74 72  Value(obj).toStr
12f60 69 6e 67 49 6e 74 65 72 6e 61 6c 28 29 3b 0d 0a  ingInternal();..
12f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f80 20 20 20 20 7d 20 63 61 74 63 68 28 65 78 32 29      } catch(ex2)
12f90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12fa0 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20              ..  
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
12fd0 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20           ..     
12fe0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13000 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20  turn value;..   
13010 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13020 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20          ..      
13030 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73        function s
13040 70 6c 69 74 49 6e 74 6f 4c 69 6e 65 73 28 74 65  plitIntoLines(te
13050 78 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  xt) {..         
13060 20 20 20 20 20 20 20 2f 2f 20 45 6e 73 75 72 65         // Ensure
13070 20 61 6c 6c 20 6c 69 6e 65 20 62 72 65 61 6b 73   all line breaks
13080 20 61 72 65 20 5c 6e 20 6f 6e 6c 79 0d 0a 20 20   are \n only..  
13090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
130a0 72 20 74 65 78 74 32 20 3d 20 74 65 78 74 2e 72  r text2 = text.r
130b0 65 70 6c 61 63 65 28 2f 5c 72 5c 6e 2f 67 2c 20  eplace(/\r\n/g, 
130c0 22 5c 6e 22 29 2e 72 65 70 6c 61 63 65 28 2f 5c  "\n").replace(/\
130d0 72 2f 67 2c 20 22 5c 6e 22 29 3b 0d 0a 20 20 20  r/g, "\n");..   
130e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
130f0 75 72 6e 20 74 65 78 74 32 2e 73 70 6c 69 74 28  urn text2.split(
13100 22 5c 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  "\n");..        
13110 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13120 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20     ..           
13130 20 66 75 6e 63 74 69 6f 6e 20 61 72 72 61 79 5f   function array_
13140 63 6f 6e 74 61 69 6e 73 28 61 72 72 2c 20 76 61  contains(arr, va
13150 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  l) {..          
13160 20 20 20 20 20 20 66 6f 72 28 76 61 72 20 69 20        for(var i 
13170 3d 20 30 2c 20 6c 65 6e 20 3d 20 61 72 72 2e 6c  = 0, len = arr.l
13180 65 6e 67 74 68 3b 20 69 20 3c 20 6c 65 6e 3b 20  ength; i < len; 
13190 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  i++) {..        
131a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
131b0 61 72 72 5b 69 5d 20 3d 3d 20 76 61 6c 29 20 7b  arr[i] == val) {
131c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
131d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
131e0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
131f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13220 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
13230 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
13240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75  ..            fu
13250 6e 63 74 69 6f 6e 20 66 6f 72 6d 61 74 53 74 72  nction formatStr
13260 69 6e 67 28 74 65 78 74 29 20 7b 0d 0a 20 20 20  ing(text) {..   
13270 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72               var
13280 20 6c 69 6e 65 73 20 3d 20 73 70 6c 69 74 49 6e   lines = splitIn
13290 74 6f 4c 69 6e 65 73 28 74 65 78 74 29 3b 0d 0a  toLines(text);..
132a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132b0 66 6f 72 20 28 76 61 72 20 6a 20 3d 20 31 2c 20  for (var j = 1, 
132c0 6a 4c 65 6e 20 3d 20 6c 69 6e 65 73 2e 6c 65 6e  jLen = lines.len
132d0 67 74 68 3b 20 6a 20 3c 20 6a 4c 65 6e 3b 20 6a  gth; j < jLen; j
132e0 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ++) {..         
132f0 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 73             lines
13300 5b 6a 5d 20 3d 20 69 6e 64 65 6e 74 61 74 69 6f  [j] = indentatio
13310 6e 20 2b 20 6c 69 6e 65 73 5b 6a 5d 3b 0d 0a 20  n + lines[j];.. 
13320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13340 20 20 72 65 74 75 72 6e 20 6c 69 6e 65 73 2e 6a    return lines.j
13350 6f 69 6e 28 6e 65 77 4c 69 6e 65 29 3b 0d 0a 20  oin(newLine);.. 
13360 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
13370 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 52              // R
13380 65 74 75 72 6e 73 20 61 20 6e 69 63 65 6c 79 20  eturns a nicely 
13390 66 6f 72 6d 61 74 74 65 64 20 72 65 70 72 65 73  formatted repres
133a0 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20 65  entation of an e
133b0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
133c0 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 78    function getEx
133d0 63 65 70 74 69 6f 6e 53 74 72 69 6e 67 52 65 70  ceptionStringRep
133e0 28 65 78 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  (ex) {..        
133f0 20 20 20 20 20 20 20 20 69 66 20 28 65 78 29 20          if (ex) 
13400 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13410 20 20 20 20 20 20 20 76 61 72 20 65 78 53 74 72         var exStr
13420 20 3d 20 22 45 78 63 65 70 74 69 6f 6e 3a 20 22   = "Exception: "
13430 20 2b 20 67 65 74 45 78 63 65 70 74 69 6f 6e 4d   + getExceptionM
13440 65 73 73 61 67 65 28 65 78 29 3b 0d 0a 20 20 20  essage(ex);..   
13450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13460 20 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20 20   try {..        
13470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13480 69 66 20 28 65 78 2e 6c 69 6e 65 4e 75 6d 62 65  if (ex.lineNumbe
13490 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  r) {..          
134a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134b0 20 20 65 78 53 74 72 20 2b 3d 20 22 20 6f 6e 20    exStr += " on 
134c0 6c 69 6e 65 20 6e 75 6d 62 65 72 20 22 20 2b 20  line number " + 
134d0 65 78 2e 6c 69 6e 65 4e 75 6d 62 65 72 3b 0d 0a  ex.lineNumber;..
134e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
13500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13510 20 20 20 69 66 20 28 65 78 2e 66 69 6c 65 4e 61     if (ex.fileNa
13520 6d 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  me) {..         
13530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13540 20 20 20 65 78 53 74 72 20 2b 3d 20 22 20 69 6e     exStr += " in
13550 20 66 69 6c 65 20 22 20 2b 20 65 78 2e 66 69 6c   file " + ex.fil
13560 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
13570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13580 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
13590 20 20 20 20 20 20 20 7d 20 63 61 74 63 68 20 28         } catch (
135a0 6c 6f 63 61 6c 45 78 29 20 7b 0d 0a 20 20 20 20  localEx) {..    
135b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135c0 20 20 20 20 6c 6f 67 4c 6f 67 2e 77 61 72 6e 28      logLog.warn(
135d0 22 55 6e 61 62 6c 65 20 74 6f 20 6f 62 74 61 69  "Unable to obtai
135e0 6e 20 66 69 6c 65 20 61 6e 64 20 6c 69 6e 65 20  n file and line 
135f0 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20  information for 
13600 65 72 72 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20  error");..      
13610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13630 20 20 20 20 20 2f 2f 69 66 20 28 73 68 6f 77 53       //if (showS
13640 74 61 63 6b 54 72 61 63 65 73 20 26 26 20 65 78  tackTraces && ex
13650 2e 73 74 61 63 6b 29 20 7b 0d 0a 20 20 20 20 20  .stack) {..     
13660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
13670 78 53 74 72 20 2b 3d 20 6e 65 77 4c 69 6e 65 20  xStr += newLine 
13680 2b 20 22 53 74 61 63 6b 20 74 72 61 63 65 3a 22  + "Stack trace:"
13690 20 2b 20 6e 65 77 4c 69 6e 65 2b 20 65 78 2e 73   + newLine+ ex.s
136a0 74 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20  tack;..         
136b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a             //}..
136c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136d0 20 20 20 20 72 65 74 75 72 6e 20 65 78 53 74 72      return exStr
136e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
136f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13700 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
13710 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
13720 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
13730 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69   ..            i
13740 66 20 28 6f 62 6a 20 3d 3d 3d 20 6e 75 6c 6c 29  f (obj === null)
13750 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13760 20 20 20 20 72 65 74 75 72 6e 20 22 6e 75 6c 6c      return "null
13770 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
13780 7d 20 65 6c 73 65 20 69 66 20 28 74 79 70 65 6f  } else if (typeo
13790 66 20 6f 62 6a 20 3d 3d 20 22 75 6e 64 65 66 69  f obj == "undefi
137a0 6e 65 64 22 29 20 7b 0d 0a 20 20 20 20 20 20 20  ned") {..       
137b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
137c0 22 75 6e 64 65 66 69 6e 65 64 22 3b 0d 0a 20 20  "undefined";..  
137d0 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
137e0 20 69 66 20 28 74 79 70 65 6f 66 20 6f 62 6a 20   if (typeof obj 
137f0 3d 3d 20 22 73 74 72 69 6e 67 22 29 20 7b 0d 0a  == "string") {..
13800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13810 72 65 74 75 72 6e 20 66 6f 72 6d 61 74 53 74 72  return formatStr
13820 69 6e 67 28 6f 62 6a 29 3b 0d 0a 20 20 20 20 20  ing(obj);..     
13830 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
13840 20 28 74 79 70 65 6f 66 20 6f 62 6a 20 3d 3d 20   (typeof obj == 
13850 22 6f 62 6a 65 63 74 22 20 26 26 20 61 72 72 61  "object" && arra
13860 79 5f 63 6f 6e 74 61 69 6e 73 28 6f 62 6a 65 63  y_contains(objec
13870 74 73 45 78 70 61 6e 64 65 64 2c 20 6f 62 6a 29  tsExpanded, obj)
13880 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
13890 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20 20       try {..    
138a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138b0 65 78 70 61 6e 73 69 6f 6e 20 3d 20 74 6f 53 74  expansion = toSt
138c0 72 28 6f 62 6a 29 3b 0d 0a 20 20 20 20 20 20 20  r(obj);..       
138d0 20 20 20 20 20 20 20 20 20 7d 20 63 61 74 63 68           } catch
138e0 20 28 65 78 29 20 7b 0d 0a 20 20 20 20 20 20 20   (ex) {..       
138f0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70               exp
13900 61 6e 73 69 6f 6e 20 3d 20 22 45 72 72 6f 72 20  ansion = "Error 
13910 66 6f 72 6d 61 74 74 69 6e 67 20 70 72 6f 70 65  formatting prope
13920 72 74 79 2e 20 44 65 74 61 69 6c 73 3a 20 22 20  rty. Details: " 
13930 2b 20 67 65 74 45 78 63 65 70 74 69 6f 6e 53 74  + getExceptionSt
13940 72 69 6e 67 52 65 70 28 65 78 29 3b 0d 0a 20 20  ringRep(ex);..  
13950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13970 20 72 65 74 75 72 6e 20 65 78 70 61 6e 73 69 6f   return expansio
13980 6e 20 2b 20 22 20 5b 61 6c 72 65 61 64 79 20 65  n + " [already e
13990 78 70 61 6e 64 65 64 5d 22 3b 0d 0a 20 20 20 20  xpanded]";..    
139a0 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69          } else i
139b0 66 20 28 28 6f 62 6a 20 69 6e 73 74 61 6e 63 65  f ((obj instance
139c0 6f 66 20 41 72 72 61 79 29 20 26 26 20 64 65 70  of Array) && dep
139d0 74 68 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20  th > 0) {..     
139e0 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
139f0 74 73 45 78 70 61 6e 64 65 64 2e 70 75 73 68 28  tsExpanded.push(
13a00 6f 62 6a 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  obj);..         
13a10 20 20 20 20 20 20 20 65 78 70 61 6e 73 69 6f 6e         expansion
13a20 20 3d 20 22 5b 22 20 2b 20 6e 65 77 4c 69 6e 65   = "[" + newLine
13a30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13a40 20 20 20 63 68 69 6c 64 44 65 70 74 68 20 3d 20     childDepth = 
13a50 64 65 70 74 68 20 2d 20 31 3b 0d 0a 20 20 20 20  depth - 1;..    
13a60 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c              chil
13a70 64 49 6e 64 65 6e 74 61 74 69 6f 6e 20 3d 20 69  dIndentation = i
13a80 6e 64 65 6e 74 61 74 69 6f 6e 20 2b 20 22 20 20  ndentation + "  
13a90 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
13aa0 20 20 20 20 63 68 69 6c 64 4c 69 6e 65 73 20 3d      childLines =
13ab0 20 5b 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   [];..          
13ac0 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30        for (i = 0
13ad0 2c 20 6c 65 6e 20 3d 20 6f 62 6a 2e 6c 65 6e 67  , len = obj.leng
13ae0 74 68 3b 20 69 20 3c 20 6c 65 6e 3b 20 69 2b 2b  th; i < len; i++
13af0 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
13b00 20 20 20 20 20 20 20 20 20 74 72 79 20 7b 0d 0a           try {..
13b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b20 20 20 20 20 20 20 20 20 63 68 69 6c 64 45 78 70          childExp
13b30 61 6e 73 69 6f 6e 20 3d 20 64 6f 46 6f 72 6d 61  ansion = doForma
13b40 74 28 6f 62 6a 5b 69 5d 2c 20 63 68 69 6c 64 44  t(obj[i], childD
13b50 65 70 74 68 2c 20 63 68 69 6c 64 49 6e 64 65 6e  epth, childInden
13b60 74 61 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20  tation);..      
13b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b80 20 20 63 68 69 6c 64 4c 69 6e 65 73 2e 70 75 73    childLines.pus
13b90 68 28 63 68 69 6c 64 49 6e 64 65 6e 74 61 74 69  h(childIndentati
13ba0 6f 6e 20 2b 20 63 68 69 6c 64 45 78 70 61 6e 73  on + childExpans
13bb0 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ion);..         
13bc0 20 20 20 20 20 20 20 20 20 20 20 7d 20 63 61 74             } cat
13bd0 63 68 20 28 65 78 29 20 7b 0d 0a 20 20 20 20 20  ch (ex) {..     
13be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bf0 20 20 20 63 68 69 6c 64 4c 69 6e 65 73 2e 70 75     childLines.pu
13c00 73 68 28 63 68 69 6c 64 49 6e 64 65 6e 74 61 74  sh(childIndentat
13c10 69 6f 6e 20 2b 20 22 45 72 72 6f 72 20 66 6f 72  ion + "Error for
13c20 6d 61 74 74 69 6e 67 20 61 72 72 61 79 20 6d 65  matting array me
13c30 6d 62 65 72 2e 20 44 65 74 61 69 6c 73 3a 20 22  mber. Details: "
13c40 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
13c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c60 67 65 74 45 78 63 65 70 74 69 6f 6e 53 74 72 69  getExceptionStri
13c70 6e 67 52 65 70 28 65 78 29 20 2b 20 22 22 29 3b  ngRep(ex) + "");
13c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c90 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13ca0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
13cb0 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 61              expa
13cc0 6e 73 69 6f 6e 20 2b 3d 20 63 68 69 6c 64 4c 69  nsion += childLi
13cd0 6e 65 73 2e 6a 6f 69 6e 28 22 2c 22 20 2b 20 6e  nes.join("," + n
13ce0 65 77 4c 69 6e 65 29 20 2b 20 6e 65 77 4c 69 6e  ewLine) + newLin
13cf0 65 20 2b 20 69 6e 64 65 6e 74 61 74 69 6f 6e 20  e + indentation 
13d00 2b 20 22 5d 22 3b 0d 0a 20 20 20 20 20 20 20 20  + "]";..        
13d10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65          return e
13d20 78 70 61 6e 73 69 6f 6e 3b 0d 0a 20 20 20 20 20  xpansion;..     
13d30 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66         } else if
13d40 20 28 4f 62 6a 65 63 74 2e 70 72 6f 74 6f 74 79   (Object.prototy
13d50 70 65 2e 74 6f 53 74 72 69 6e 67 2e 63 61 6c 6c  pe.toString.call
13d60 28 6f 62 6a 29 20 3d 3d 20 22 5b 6f 62 6a 65 63  (obj) == "[objec
13d70 74 20 44 61 74 65 5d 22 29 20 7b 0d 0a 20 20 20  t Date]") {..   
13d80 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
13d90 75 72 6e 20 6f 62 6a 2e 74 6f 53 74 72 69 6e 67  urn obj.toString
13da0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
13db0 20 7d 20 65 6c 73 65 20 69 66 20 28 74 79 70 65   } else if (type
13dc0 6f 66 20 6f 62 6a 20 3d 3d 20 22 6f 62 6a 65 63  of obj == "objec
13dd0 74 22 20 26 26 20 64 65 70 74 68 20 3e 20 30 29  t" && depth > 0)
13de0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13df0 20 20 20 20 6f 62 6a 65 63 74 73 45 78 70 61 6e      objectsExpan
13e00 64 65 64 2e 70 75 73 68 28 6f 62 6a 29 3b 0d 0a  ded.push(obj);..
13e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e20 65 78 70 61 6e 73 69 6f 6e 20 3d 20 22 7b 22 20  expansion = "{" 
13e30 2b 20 6e 65 77 4c 69 6e 65 3b 0d 0a 20 20 20 20  + newLine;..    
13e40 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c              chil
13e50 64 44 65 70 74 68 20 3d 20 64 65 70 74 68 20 2d  dDepth = depth -
13e60 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   1;..           
13e70 20 20 20 20 20 63 68 69 6c 64 49 6e 64 65 6e 74       childIndent
13e80 61 74 69 6f 6e 20 3d 20 69 6e 64 65 6e 74 61 74  ation = indentat
13e90 69 6f 6e 20 2b 20 22 20 20 22 3b 0d 0a 20 20 20  ion + "  ";..   
13ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69               chi
13eb0 6c 64 4c 69 6e 65 73 20 3d 20 5b 5d 3b 0d 0a 20  ldLines = [];.. 
13ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
13ed0 6f 72 20 28 69 20 69 6e 20 6f 62 6a 29 20 7b 0d  or (i in obj) {.
13ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ef0 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20 20       try {..    
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 45 78 70 61 6e 73 69      childExpansi
13f20 6f 6e 20 3d 20 64 6f 46 6f 72 6d 61 74 28 6f 62  on = doFormat(ob
13f30 6a 5b 69 5d 2c 20 63 68 69 6c 64 44 65 70 74 68  j[i], childDepth
13f40 2c 20 63 68 69 6c 64 49 6e 64 65 6e 74 61 74 69  , childIndentati
13f50 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  on);..          
13f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68                ch
13f70 69 6c 64 4c 69 6e 65 73 2e 70 75 73 68 28 63 68  ildLines.push(ch
13f80 69 6c 64 49 6e 64 65 6e 74 61 74 69 6f 6e 20 2b  ildIndentation +
13f90 20 69 20 2b 20 22 3a 20 22 20 2b 20 63 68 69 6c   i + ": " + chil
13fa0 64 45 78 70 61 6e 73 69 6f 6e 29 3b 0d 0a 20 20  dExpansion);..  
13fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13fc0 20 20 7d 20 63 61 74 63 68 20 28 65 78 29 20 7b    } catch (ex) {
13fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13fe0 20 20 20 20 20 20 20 20 20 20 63 68 69 6c 64 4c            childL
13ff0 69 6e 65 73 2e 70 75 73 68 28 63 68 69 6c 64 49  ines.push(childI
14000 6e 64 65 6e 74 61 74 69 6f 6e 20 2b 20 69 20 2b  ndentation + i +
14010 20 22 3a 20 45 72 72 6f 72 20 66 6f 72 6d 61 74   ": Error format
14020 74 69 6e 67 20 70 72 6f 70 65 72 74 79 2e 20 44  ting property. D
14030 65 74 61 69 6c 73 3a 20 22 20 2b 0d 0a 20 20 20  etails: " +..   
14040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14050 20 20 20 20 20 20 20 20 20 67 65 74 45 78 63 65           getExce
14060 70 74 69 6f 6e 53 74 72 69 6e 67 52 65 70 28 65  ptionStringRep(e
14070 78 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  x));..          
14080 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
14090 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
140a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
140b0 65 78 70 61 6e 73 69 6f 6e 20 2b 3d 20 63 68 69  expansion += chi
140c0 6c 64 4c 69 6e 65 73 2e 6a 6f 69 6e 28 22 2c 22  ldLines.join(","
140d0 20 2b 20 6e 65 77 4c 69 6e 65 29 20 2b 20 6e 65   + newLine) + ne
140e0 77 4c 69 6e 65 20 2b 20 69 6e 64 65 6e 74 61 74  wLine + indentat
140f0 69 6f 6e 20 2b 20 22 7d 22 3b 0d 0a 20 20 20 20  ion + "}";..    
14100 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14110 72 6e 20 65 78 70 61 6e 73 69 6f 6e 3b 0d 0a 20  rn expansion;.. 
14120 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
14130 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e {..           
14140 20 20 20 20 20 72 65 74 75 72 6e 20 66 6f 72 6d       return form
14150 61 74 53 74 72 69 6e 67 28 74 6f 53 74 72 28 6f  atString(toStr(o
14160 62 6a 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  bj));..         
14170 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
14180 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
14190 64 6f 46 6f 72 6d 61 74 28 6f 62 6a 2c 20 64 65  doFormat(obj, de
141a0 70 74 68 2c 20 69 6e 64 65 6e 74 61 74 69 6f 6e  pth, indentation
141b0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 29 3b 0d 0a  );..    }..});..
141c0 0d 0a 2f 2a 2a 0d 0a 2a 20 40 70 72 69 76 61 74  ../**..* @privat
141d0 65 0d 0a 2a 20 40 69 67 6e 6f 72 65 0d 0a 2a 2f  e..* @ignore..*/
141e0 0d 0a 69 66 20 28 21 41 72 72 61 79 2e 70 72 6f  ..if (!Array.pro
141f0 74 6f 74 79 70 65 2e 70 75 73 68 29 20 7b 0d 0a  totype.push) {..
14200 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 46      /**..    * F
14210 75 6e 63 74 69 6f 6e 73 20 74 61 6b 65 6e 20 66  unctions taken f
14220 72 6f 6d 20 50 72 6f 74 6f 74 79 70 65 20 6c 69  rom Prototype li
14230 62 72 61 72 79 2c 20 64 69 64 6e 27 74 20 77 61  brary, didn't wa
14240 6e 74 20 74 6f 20 72 65 71 75 69 72 65 20 66 6f  nt to require fo
14250 72 20 6a 75 73 74 20 66 65 77 20 0d 0a 20 20 20  r just few ..   
14260 20 2a 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20   * functions... 
14270 20 20 20 2a 20 4d 6f 72 65 20 69 6e 66 6f 20 61     * More info a
14280 74 20 7b 40 6c 69 6e 6b 20 68 74 74 70 3a 2f 2f  t {@link http://
14290 0d 0a 20 20 20 20 2a 20 70 72 6f 74 6f 74 79 70  ..    * prototyp
142a0 65 2e 63 6f 6e 69 6f 2e 6e 65 74 2f 7d 0d 0a 20  e.conio.net/}.. 
142b0 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20     * @private.. 
142c0 20 20 20 2a 2f 0d 0a 20 20 20 20 41 72 72 61 79     */..    Array
142d0 2e 70 72 6f 74 6f 74 79 70 65 2e 70 75 73 68 20  .prototype.push 
142e0 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a  = function() {..
142f0 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61 72          var star
14300 74 4c 65 6e 67 74 68 20 3d 20 74 68 69 73 2e 6c  tLength = this.l
14310 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20  ength;..        
14320 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20  for (var i = 0; 
14330 69 20 3c 20 61 72 67 75 6d 65 6e 74 73 2e 6c 65  i < arguments.le
14340 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a 20 20  ngth; i++) {..  
14350 20 20 20 20 20 20 20 20 20 20 74 68 69 73 5b 73            this[s
14360 74 61 72 74 4c 65 6e 67 74 68 20 2b 20 69 5d 20  tartLength + i] 
14370 3d 20 61 72 67 75 6d 65 6e 74 73 5b 69 5d 3b 0d  = arguments[i];.
14380 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
14390 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e      return this.
143a0 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 7d 3b 0d  length;..    };.
143b0 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 46 49 46  .}..../**..* FIF
143c0 4f 20 62 75 66 66 65 72 0d 0a 2a 20 40 70 72 69  O buffer..* @pri
143d0 76 61 74 65 0d 0a 2a 2f 0d 0a 4c 6f 67 34 6a 73  vate..*/..Log4js
143e0 2e 46 69 66 6f 42 75 66 66 65 72 20 3d 20 66 75  .FifoBuffer = fu
143f0 6e 63 74 69 6f 6e 28 29 0d 0a 7b 0d 0a 74 68 69  nction()..{..thi
14400 73 2e 61 72 72 61 79 20 3d 20 6e 65 77 20 41 72  s.array = new Ar
14410 72 61 79 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 4c 6f  ray();..};....Lo
14420 67 34 6a 73 2e 46 69 66 6f 42 75 66 66 65 72 2e  g4js.FifoBuffer.
14430 70 72 6f 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 0d  prototype = {...
14440 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20  .    /**..    * 
14450 40 70 61 72 61 6d 20 7b 4f 62 6a 65 63 74 7d 20  @param {Object} 
14460 6f 62 6a 20 61 6e 79 20 6f 62 6a 65 63 74 20 61  obj any object a
14470 64 64 65 64 20 74 6f 20 62 75 66 66 65 72 0d 0a  dded to buffer..
14480 20 20 20 20 2a 2f 0d 0a 20 20 20 20 70 75 73 68      */..    push
14490 20 3a 20 66 75 6e 63 74 69 6f 6e 28 6f 62 6a 29   : function(obj)
144a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
144b0 2e 61 72 72 61 79 5b 74 68 69 73 2e 61 72 72 61  .array[this.arra
144c0 79 2e 6c 65 6e 67 74 68 5d 20 3d 20 6f 62 6a 3b  y.length] = obj;
144d0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
144e0 20 74 68 69 73 2e 61 72 72 61 79 2e 6c 65 6e 67   this.array.leng
144f0 74 68 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  th;..    },..   
14500 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20   ..    /**..    
14510 2a 20 40 72 65 74 75 72 6e 20 66 69 72 73 74 20  * @return first 
14520 70 75 74 74 65 64 20 69 6e 20 4f 62 6a 65 63 74  putted in Object
14530 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 70 75  ..    */..    pu
14540 6c 6c 20 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  ll : function() 
14550 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74  {..        if (t
14560 68 69 73 2e 61 72 72 61 79 2e 6c 65 6e 67 74 68  his.array.length
14570 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20   > 0) {..       
14580 20 20 20 20 20 76 61 72 20 66 69 72 73 74 49 74       var firstIt
14590 65 6d 20 3d 20 74 68 69 73 2e 61 72 72 61 79 5b  em = this.array[
145a0 30 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0];..           
145b0 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b   for (var i = 0;
145c0 20 69 20 3c 20 74 68 69 73 2e 61 72 72 61 79 2e   i < this.array.
145d0 6c 65 6e 67 74 68 20 2d 20 31 3b 20 69 2b 2b 29  length - 1; i++)
145e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
145f0 20 20 20 20 74 68 69 73 2e 61 72 72 61 79 5b 69      this.array[i
14600 5d 20 3d 20 74 68 69 73 2e 61 72 72 61 79 5b 69  ] = this.array[i
14610 20 2b 20 31 5d 3b 0d 0a 20 20 20 20 20 20 20 20   + 1];..        
14620 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14630 20 20 20 74 68 69 73 2e 61 72 72 61 79 2e 6c 65     this.array.le
14640 6e 67 74 68 20 3d 20 74 68 69 73 2e 61 72 72 61  ngth = this.arra
14650 79 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0d 0a 20  y.length - 1;.. 
14660 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
14670 6e 20 66 69 72 73 74 49 74 65 6d 3b 0d 0a 20 20  n firstItem;..  
14680 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14690 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
146a0 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20 20 20     },..    ..   
146b0 20 6c 65 6e 67 74 68 20 3a 20 66 75 6e 63 74 69   length : functi
146c0 6f 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  on() {..        
146d0 72 65 74 75 72 6e 20 74 68 69 73 2e 61 72 72 61  return this.arra
146e0 79 2e 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 7d  y.length;..    }
146f0 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2a 2a 0d  ..};......../**.
14700 0a 2a 20 44 61 74 65 20 46 6f 72 6d 61 74 74 65  .* Date Formatte
14710 72 0d 0a 2a 20 61 64 64 5a 65 72 6f 28 29 20 61  r..* addZero() a
14720 6e 64 20 66 6f 72 6d 61 74 44 61 74 65 28 29 20  nd formatDate() 
14730 61 72 65 20 63 6f 75 72 74 65 73 79 20 6f 66 20  are courtesy of 
14740 4d 69 6b 65 20 47 6f 6c 64 69 6e 67 3a 0d 0a 2a  Mike Golding:..*
14750 20 68 74 74 70 3a 2f 2f 77 77 77 2e 6d 69 6b 65   http://www.mike
14760 7a 69 6c 6c 61 2e 63 6f 6d 2f 65 78 70 30 30 31  zilla.com/exp001
14770 35 2e 68 74 6d 6c 0d 0a 2a 20 40 70 72 69 76 61  5.html..* @priva
14780 74 65 0d 0a 2a 2f 20 0d 0a 4c 6f 67 34 6a 73 2e  te..*/ ..Log4js.
14790 44 61 74 65 46 6f 72 6d 61 74 74 65 72 20 3d 20  DateFormatter = 
147a0 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20 20  function() {..  
147b0 20 20 72 65 74 75 72 6e 3b 0d 0a 7d 3b 0d 0a 2f    return;..};../
147c0 2a 2a 0d 0a 2a 20 64 65 66 61 75 6c 74 20 66 6f  **..* default fo
147d0 72 6d 61 74 20 6f 66 20 64 61 74 65 20 28 49 53  rmat of date (IS
147e0 4f 2d 38 36 30 31 29 0d 0a 2a 20 40 73 74 61 74  O-8601)..* @stat
147f0 69 63 0d 0a 2a 20 40 66 69 6e 61 6c 0d 0a 2a 2f  ic..* @final..*/
14800 0d 0a 4c 6f 67 34 6a 73 2e 44 61 74 65 46 6f 72  ..Log4js.DateFor
14810 6d 61 74 74 65 72 2e 44 45 46 41 55 4c 54 5f 44  matter.DEFAULT_D
14820 41 54 45 5f 46 4f 52 4d 41 54 20 3d 20 22 79 79  ATE_FORMAT = "yy
14830 79 79 2d 4d 4d 2d 64 64 54 68 68 3a 6d 6d 3a 73  yy-MM-ddThh:mm:s
14840 73 4f 22 3b 0d 0a 0d 0a 0d 0a 4c 6f 67 34 6a 73  sO";......Log4js
14850 2e 44 61 74 65 46 6f 72 6d 61 74 74 65 72 2e 70  .DateFormatter.p
14860 72 6f 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20 20  rototype = {..  
14870 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 46 6f 72    /**..    * For
14880 6d 61 74 73 20 74 68 65 20 67 69 76 65 6e 20 64  mats the given d
14890 61 74 65 20 62 79 20 74 68 65 20 67 69 76 65 6e  ate by the given
148a0 20 70 61 74 74 65 72 6e 2e 3c 62 72 20 2f 3e 0d   pattern.<br />.
148b0 0a 20 20 20 20 2a 20 46 6f 6c 6c 6f 77 69 6e 67  .    * Following
148c0 20 73 77 69 74 63 68 65 73 20 61 72 65 20 73 75   switches are su
148d0 70 70 6f 72 74 65 64 3a 0d 0a 20 20 20 20 2a 20  pported:..    * 
148e0 3c 75 6c 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e  <ul>..    * <li>
148f0 79 79 79 79 3a 20 54 68 65 20 79 65 61 72 3c 2f  yyyy: The year</
14900 6c 69 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e 4d  li>..    * <li>M
14910 4d 3a 20 74 68 65 20 6d 6f 6e 74 68 3c 2f 6c 69  M: the month</li
14920 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e 64 64 3a  >..    * <li>dd:
14930 20 74 68 65 20 64 61 79 20 6f 66 20 6d 6f 6e 74   the day of mont
14940 68 3c 6c 69 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69  h<li>..    * <li
14950 3e 68 68 3a 20 74 68 65 20 68 6f 75 72 3c 6c 69  >hh: the hour<li
14960 3e 0d 0a 20 20 20 20 2a 20 3c 6c 69 3e 6d 6d 3a  >..    * <li>mm:
14970 20 6d 69 6e 75 74 65 73 3c 2f 6c 69 3e 0d 0a 20   minutes</li>.. 
14980 20 20 20 2a 20 3c 6c 69 3e 4f 3a 20 74 69 6d 65     * <li>O: time
14990 7a 6f 6e 65 20 6f 66 66 73 65 74 3c 2f 6c 69 3e  zone offset</li>
149a0 0d 0a 20 20 20 20 2a 20 3c 2f 75 6c 3e 0d 0a 20  ..    * </ul>.. 
149b0 20 20 20 2a 20 40 70 61 72 61 6d 20 7b 44 61 74     * @param {Dat
149c0 65 7d 20 76 44 61 74 65 20 74 68 65 20 64 61 74  e} vDate the dat
149d0 65 20 74 6f 20 66 6f 72 6d 61 74 0d 0a 20 20 20  e to format..   
149e0 20 2a 20 40 70 61 72 61 6d 20 7b 53 74 72 69 6e   * @param {Strin
149f0 67 7d 20 76 46 6f 72 6d 61 74 20 74 68 65 20 66  g} vFormat the f
14a00 6f 72 6d 61 74 20 70 61 74 74 65 72 6e 0d 0a 20  ormat pattern.. 
14a10 20 20 20 2a 20 40 72 65 74 75 72 6e 20 7b 53 74     * @return {St
14a20 72 69 6e 67 7d 20 66 6f 72 6d 61 74 74 65 64 20  ring} formatted 
14a30 64 61 74 65 20 73 74 72 69 6e 67 0d 0a 20 20 20  date string..   
14a40 20 2a 20 40 73 74 61 74 69 63 0d 0a 20 20 20 20   * @static..    
14a50 2a 2f 0d 0a 20 20 20 20 66 6f 72 6d 61 74 44 61  */..    formatDa
14a60 74 65 20 3a 20 66 75 6e 63 74 69 6f 6e 28 76 44  te : function(vD
14a70 61 74 65 2c 20 76 46 6f 72 6d 61 74 29 20 7b 0d  ate, vFormat) {.
14a80 0a 20 20 20 20 20 20 20 20 76 61 72 20 76 44 61  .        var vDa
14a90 79 20 3d 20 74 68 69 73 2e 61 64 64 5a 65 72 6f  y = this.addZero
14aa0 28 76 44 61 74 65 2e 67 65 74 44 61 74 65 28 29  (vDate.getDate()
14ab0 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20  );..        var 
14ac0 76 4d 6f 6e 74 68 20 3d 20 74 68 69 73 2e 61 64  vMonth = this.ad
14ad0 64 5a 65 72 6f 28 76 44 61 74 65 2e 67 65 74 4d  dZero(vDate.getM
14ae0 6f 6e 74 68 28 29 2b 31 29 3b 0d 0a 20 20 20 20  onth()+1);..    
14af0 20 20 20 20 76 61 72 20 76 59 65 61 72 4c 6f 6e      var vYearLon
14b00 67 20 3d 20 74 68 69 73 2e 61 64 64 5a 65 72 6f  g = this.addZero
14b10 28 76 44 61 74 65 2e 67 65 74 46 75 6c 6c 59 65  (vDate.getFullYe
14b20 61 72 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ar());..        
14b30 76 61 72 20 76 59 65 61 72 53 68 6f 72 74 20 3d  var vYearShort =
14b40 20 74 68 69 73 2e 61 64 64 5a 65 72 6f 28 76 44   this.addZero(vD
14b50 61 74 65 2e 67 65 74 46 75 6c 6c 59 65 61 72 28  ate.getFullYear(
14b60 29 2e 74 6f 53 74 72 69 6e 67 28 29 2e 73 75 62  ).toString().sub
14b70 73 74 72 69 6e 67 28 33 2c 34 29 29 3b 0d 0a 20  string(3,4));.. 
14b80 20 20 20 20 20 20 20 76 61 72 20 76 59 65 61 72         var vYear
14b90 20 3d 20 28 76 46 6f 72 6d 61 74 2e 69 6e 64 65   = (vFormat.inde
14ba0 78 4f 66 28 22 79 79 79 79 22 29 3e 2d 31 3f 76  xOf("yyyy")>-1?v
14bb0 59 65 61 72 4c 6f 6e 67 3a 76 59 65 61 72 53 68  YearLong:vYearSh
14bc0 6f 72 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 76  ort);..        v
14bd0 61 72 20 76 48 6f 75 72 20 20 3d 20 74 68 69 73  ar vHour  = this
14be0 2e 61 64 64 5a 65 72 6f 28 76 44 61 74 65 2e 67  .addZero(vDate.g
14bf0 65 74 48 6f 75 72 73 28 29 29 3b 0d 0a 20 20 20  etHours());..   
14c00 20 20 20 20 20 76 61 72 20 76 4d 69 6e 75 74 65       var vMinute
14c10 20 3d 20 74 68 69 73 2e 61 64 64 5a 65 72 6f 28   = this.addZero(
14c20 76 44 61 74 65 2e 67 65 74 4d 69 6e 75 74 65 73  vDate.getMinutes
14c30 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61  ());..        va
14c40 72 20 76 53 65 63 6f 6e 64 20 3d 20 74 68 69 73  r vSecond = this
14c50 2e 61 64 64 5a 65 72 6f 28 76 44 61 74 65 2e 67  .addZero(vDate.g
14c60 65 74 53 65 63 6f 6e 64 73 28 29 29 3b 0d 0a 20  etSeconds());.. 
14c70 20 20 20 20 20 20 20 76 61 72 20 76 54 69 6d 65         var vTime
14c80 5a 6f 6e 65 20 3d 20 74 68 69 73 2e 4f 28 76 44  Zone = this.O(vD
14c90 61 74 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 76  ate);..        v
14ca0 61 72 20 76 44 61 74 65 53 74 72 69 6e 67 20 3d  ar vDateString =
14cb0 20 76 46 6f 72 6d 61 74 2e 72 65 70 6c 61 63 65   vFormat.replace
14cc0 28 2f 64 64 2f 67 2c 20 76 44 61 79 29 2e 72 65  (/dd/g, vDay).re
14cd0 70 6c 61 63 65 28 2f 4d 4d 2f 67 2c 20 76 4d 6f  place(/MM/g, vMo
14ce0 6e 74 68 29 2e 72 65 70 6c 61 63 65 28 2f 79 7b  nth).replace(/y{
14cf0 31 2c 34 7d 2f 67 2c 20 76 59 65 61 72 29 3b 0d  1,4}/g, vYear);.
14d00 0a 20 20 20 20 20 20 20 20 76 44 61 74 65 53 74  .        vDateSt
14d10 72 69 6e 67 20 3d 20 76 44 61 74 65 53 74 72 69  ring = vDateStri
14d20 6e 67 2e 72 65 70 6c 61 63 65 28 2f 68 68 2f 67  ng.replace(/hh/g
14d30 2c 20 76 48 6f 75 72 29 2e 72 65 70 6c 61 63 65  , vHour).replace
14d40 28 2f 6d 6d 2f 67 2c 20 76 4d 69 6e 75 74 65 29  (/mm/g, vMinute)
14d50 2e 72 65 70 6c 61 63 65 28 2f 73 73 2f 67 2c 20  .replace(/ss/g, 
14d60 76 53 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20 20  vSecond);..     
14d70 20 20 20 76 44 61 74 65 53 74 72 69 6e 67 20 3d     vDateString =
14d80 20 76 44 61 74 65 53 74 72 69 6e 67 2e 72 65 70   vDateString.rep
14d90 6c 61 63 65 28 2f 4f 2f 67 2c 20 76 54 69 6d 65  lace(/O/g, vTime
14da0 5a 6f 6e 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Zone);..        
14db0 72 65 74 75 72 6e 20 76 44 61 74 65 53 74 72 69  return vDateStri
14dc0 6e 67 3b 0d 0a 20 20 20 20 7d 2c 0d 0a 20 20 20  ng;..    },..   
14dd0 20 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a       ..    /**..
14de0 20 20 20 20 2a 20 40 70 72 69 76 61 74 65 0d 0a      * @private..
14df0 20 20 20 20 2a 20 40 73 74 61 74 69 63 0d 0a 20      * @static.. 
14e00 20 20 20 2a 2f 0d 0a 20 20 20 20 61 64 64 5a 65     */..    addZe
14e10 72 6f 20 3a 20 66 75 6e 63 74 69 6f 6e 28 76 4e  ro : function(vN
14e20 75 6d 62 65 72 29 20 7b 0d 0a 20 20 20 20 20 20  umber) {..      
14e30 20 20 72 65 74 75 72 6e 20 28 28 76 4e 75 6d 62    return ((vNumb
14e40 65 72 20 3c 20 31 30 29 20 3f 20 22 30 22 20 3a  er < 10) ? "0" :
14e50 20 22 22 29 20 2b 20 76 4e 75 6d 62 65 72 3b 0d   "") + vNumber;.
14e60 0a 20 20 20 20 7d 2c 0d 0a 20 20 20 20 0d 0a 20  .    },..    .. 
14e70 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 46 6f     /**..    * Fo
14e80 72 6d 61 74 65 73 20 74 68 65 20 54 69 6d 65 4f  rmates the TimeO
14e90 66 66 65 73 74 0d 0a 20 20 20 20 2a 20 54 68 61  ffest..    * Tha
14ea0 6e 6b 73 20 74 6f 20 68 74 74 70 3a 2f 2f 77 77  nks to http://ww
14eb0 77 2e 73 76 65 6e 64 74 6f 66 74 65 2e 63 6f 6d  w.svendtofte.com
14ec0 2f 63 6f 64 65 2f 64 61 74 65 5f 66 6f 72 6d 61  /code/date_forma
14ed0 74 2f 0d 0a 20 20 20 20 2a 20 40 70 72 69 76 61  t/..    * @priva
14ee0 74 65 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20  te..    */..    
14ef0 4f 20 3a 20 66 75 6e 63 74 69 6f 6e 20 28 64 61  O : function (da
14f00 74 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f  te) {..        /
14f10 2f 20 44 69 66 66 65 72 65 6e 63 65 20 74 6f 20  / Difference to 
14f20 47 72 65 65 6e 77 69 63 68 20 74 69 6d 65 20 28  Greenwich time (
14f30 47 4d 54 29 20 69 6e 20 68 6f 75 72 73 0d 0a 20  GMT) in hours.. 
14f40 20 20 20 20 20 20 20 76 61 72 20 6f 73 20 3d 20         var os = 
14f50 4d 61 74 68 2e 61 62 73 28 64 61 74 65 2e 67 65  Math.abs(date.ge
14f60 74 54 69 6d 65 7a 6f 6e 65 4f 66 66 73 65 74 28  tTimezoneOffset(
14f70 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  ));..        var
14f80 20 68 20 3d 20 53 74 72 69 6e 67 28 4d 61 74 68   h = String(Math
14f90 2e 66 6c 6f 6f 72 28 6f 73 2f 36 30 29 29 3b 0d  .floor(os/60));.
14fa0 0a 20 20 20 20 20 20 20 20 76 61 72 20 6d 20 3d  .        var m =
14fb0 20 53 74 72 69 6e 67 28 6f 73 25 36 30 29 3b 0d   String(os%60);.
14fc0 0a 20 20 20 20 20 20 20 20 68 2e 6c 65 6e 67 74  .        h.lengt
14fd0 68 20 3d 3d 20 31 3f 20 68 20 3d 20 22 30 22 2b  h == 1? h = "0"+
14fe0 68 3a 31 3b 0d 0a 20 20 20 20 20 20 20 20 6d 2e  h:1;..        m.
14ff0 6c 65 6e 67 74 68 20 3d 3d 20 31 3f 20 6d 20 3d  length == 1? m =
15000 20 22 30 22 2b 6d 3a 31 3b 0d 0a 20 20 20 20 20   "0"+m:1;..     
15010 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 2e 67     return date.g
15020 65 74 54 69 6d 65 7a 6f 6e 65 4f 66 66 73 65 74  etTimezoneOffset
15030 28 29 20 3c 20 30 20 3f 20 22 2b 22 2b 68 2b 6d  () < 0 ? "+"+h+m
15040 20 3a 20 22 2d 22 2b 68 2b 6d 3b 0d 0a 20 20 20   : "-"+h+m;..   
15050 20 7d 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 2f 2a 2a 0d   }..};....../**.
15060 0a 2a 20 69 6e 74 65 72 6e 61 6c 20 4c 6f 67 67  .* internal Logg
15070 65 72 20 74 6f 20 62 65 20 75 73 65 64 0d 0a 2a  er to be used..*
15080 20 40 70 72 69 76 61 74 65 0d 0a 2a 2f 0d 0a 76   @private..*/..v
15090 61 72 20 6c 6f 67 34 6a 73 4c 6f 67 67 65 72 20  ar log4jsLogger 
150a0 3d 20 4c 6f 67 34 6a 73 2e 67 65 74 4c 6f 67 67  = Log4js.getLogg
150b0 65 72 28 22 4c 6f 67 34 6a 73 22 29 3b 0d 0a 6c  er("Log4js");..l
150c0 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 61 64 64 41  og4jsLogger.addA
150d0 70 70 65 6e 64 65 72 28 6e 65 77 20 4c 6f 67 34  ppender(new Log4
150e0 6a 73 2e 42 72 6f 77 73 65 72 43 6f 6e 73 6f 6c  js.BrowserConsol
150f0 65 41 70 70 65 6e 64 65 72 28 29 29 3b 0d 0a 6c  eAppender());..l
15100 6f 67 34 6a 73 4c 6f 67 67 65 72 2e 73 65 74 4c  og4jsLogger.setL
15110 65 76 65 6c 28 4c 6f 67 34 6a 73 2e 4c 65 76 65  evel(Log4js.Leve
15120 6c 2e 41 4c 4c 29 3b 0d 0a                       l.ALL);..