diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8f71f43
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/README.md b/README.md
index 54105a4..333d81f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
-log4javascript
-==============
+# log4javascript
http://log4javascript.org
-It contains the log4javascript lib prepared to be used with npm
+npm/bower enabled copy of log4javascript
+
+current version: 1.4.13
diff --git a/changelog.txt b/changelog.txt
index abf21c2..873ffa0 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,388 +1,403 @@
-log4javascript change log
--------------------------
-
-1.4.9 (12/5/2014)
-- Fix for typo in BrowserConsoleAppender
-
-1.4.8 (18/4/2014)
-- Added support for XMLHttpRequest's withCredentials to AjaxAppender
-
-1.4.7 (7/6/2013)
-- Improved multiple browser console argument handling as per feature request #4
-
-1.4.6 (19/3/2013)
-- Added fix to handle 1223 status code from XMLHttpRequest in IE
-
-1.4.5 (20/2/2013)
-- Changed AjaxAppender to send raw data rather than URL-encoded form data when
- content-type is not "application/x-www-form-urlencoded"
-
-- Exposed sendAllRemaining() method of AjaxAppender
-
-1.4.4 (8/2/2013)
-- Fixed issue with repeated Content-Type headers in AjaxAppender
-
-- Improved uniqueness of PopUpAppender window name
-
-1.4.3 (18/9/2012)
-- Added addHeader() and getHeaders() methods to AjaxAppender
-
-- Modified sendAllOnUnload feature of AjaxAppender. It now works in WebKit but
- at the expense of popping up a confirm dialog. That being the case, it is now
- disabled by default.
-
-- Removed leaked global variable "initialized"
-
-- Fixed bugs #3528265, #3560924, #3560922, #2805479, #3510639 on Sourceforge
- Tracker
-
-
-1.4.2 (13/10/2011)
-- Fixed JsonLayout trailing comma issue. See
- http://stackoverflow.com/questions/7735382/asmx-weirdness-deserializing-json-
- blob-from-log4javascript-logging
-
-- Fixed bugs #3401332, #3185753, #2884623, #2817213 on Sourceforge Tracker
-
-
-1.4.1 (23/3/2009)
-- Fixed document.domain/query string bug (#2519903 on Sourceforge Tracker)
-
-- Added isVisible() method to PopUpAppender
-
-- Added check for whether the console has been closed in isVisible() method of
- InPageAppender
-
-- Included unit tests in the distribution
-
-
-1.4 (30/10/2008)
-
-- Added time() and timeEnd() methods to Logger
-
-- Added group() and groupEnd() methods to Logger and support for displaying
- expandable groups to InPageAppender and PopUpAppender
-
-- Added facility to layout custom fields. A custom field value may now
- optionally be a function which is passed a reference to the layout and a
- logging event and run at the time the layout's format method is called
-
-- Added option to XmlLayout and JsonLayout to allow multiple messages to be
- formatted either as one combined message or multiple messages
-
-- Added code to set log4javascript as a property of the window object. This
- ensures that if log4javascript is loaded via eval() (e.g. Dojo's module
- loading system), the log4javascript object is guaranteed to be available even
- though IE does not evaluate the script in the global scope
-
-- Added useDocumentWrite parameter to constructors and isUseDocumentWrite()
- and setUseDocumentWrite() methods for InPageAppender and PopUpAppender and
- added console.html to the build so that the appender may use either the
- existing document.write method or the external HTML file to build the console.
- This is to allow support for setting document.domain in the main document,
- which is impossible with the document.write method
-
-- Added milliseconds property to logging events and changed JsonLayout,
- XmlLayout and HttpPostDataLayout to include milliseconds by default
-
-- Added layout parameter to AjaxAppender and a toString() method on each layout
-
-- Setting configuration properties in appenders via constructor paramaters has
- been phased out.
-
-- Added window.unload handler for AjaxAppender to send outstanding messages.
- Doesn't work in Opera
-
-- Implemented log4j-style hierarchical loggers with additive appenders. For
- example, a logger called "app.stuff" has as its parent the logger called
- "app", all of whose appenders it inherits
-
-- Changed XmlLayout and JsonLayout to send data as a key/value pair
-
-- Bugfix for inaccessible error details
-
-- An appender can no longer be added more than once to the same logger
-
-- Multiple messages may now be specified in logger methods
-
-- New conversion character 'a' added to PatternLayout. This is the same as 'm'
- except that if the first message specified is an array then it treats each
- element of the array as though it had been passed in as a message parameter
-
-- Command line added to console windows with configurable object expansion
- depth. Command line presence and object expansion depth are configurable in
- the appender via setShowCommandLine() and setCommandLineObjectExpansionDepth()
- methods respectively
-
-- Command line history, navigated by cursor keys and stored in a session cookie
-
-- Firebug-inspired command line functions added: $, dir, dirxml, cd, clear,
- keys, values, expansionDepth
-
-- Fixes for several bugs in object expansion
-
-- Fix for bug in initialization of InPageAppender in IE 5
-
-- Fix to allow searchable HTML in log entries
-
-- Fix for bug which automatically displayed search next/previous buttons when
- the search box is clicked regardless of whether there were any matches
-
-- Searches in PopUpAppender and InPageAppender now preserve formatting
-
-- More fixes to interaction of search and severity filters in console window
- used by PopUpAppender and InPageAppender
-
-- Added SwitchableConsoleAppender that allows flipping from an in-page console
- to a pop-up console window and back again while retaining state
-
-- Custom events added that are raised when PopUpAppender and InPageAppender
- windows load and unload, and on the main log4javascript object when the main
- page loads, when the main page is resized and when log4javascript errors occur
-
-- InPageAppender may now be initialized before the page loads by providing an
- element id for its container, or omitting the container altogether (in which
- case the appender is added as a fixed div at the bottom of the page)
-
-- Tweaked PopUpAppender and InPageAppender so that the formatted log message is
- produced when append() is called rather than when the message is actually sent
- to the console window, thus allowing reliable temporary switching of layouts
-
-- Much improved scrolling to current search match: scrolls only if part of the
- search match is not visible and centres around it rather than putting flush to
- the top left
-
-- Removed setReadable() method from JsonLayout - now specified only in the
- constructor
-
-- Fixed problem in IE where copying selections of log entries would produce two
- copies of each log entry
-
-
-1.3.1 (20/11/2006)
-
-- Fix to interaction of search and severity filters in console window used by
- PopUpAppender and InPageAppender
-
-
-1.3 (19/10/2006)
-
-- Fully tested and supported in IE 7 Beta 3
-
-- Added support for FireBug logging levels in BrowserConsoleAppender
-
-- Added optional limit to the number of log messages stored by PopUpAppender and
- InPageAppender. When this limit is reached, each new message causes the oldest
- message to be discarded.
-
-- Exceptions passed into logging methods are now displayed in logging output.
-
-- Added facility to pass objects as well as strings to logging methods.
- Enhanced conversion character 'm' to PatternLayout to expand object properties
- in the formatted output
-
-- Added stack trace to error reports (alerts and log entries) in Firefox. This
- is turned off by default but can be switched on via the new
- log4javascript.setShowStackTraces function
-
-- Added log4javascript_stub.js to distribution - this has stub versions of all
- objects and methods in log4javascript.js and can be used as a lightweight
- replacement for log4javascript.js in production systems
-
-- Added log4javascript_compressed.js to distribution - comments and whitespace
- are removed, resulting in a 30% smaller file
-
-- Added custom fields to layouts
-
-- Added setReopenWhenClosed and isReopenWhenClosed methods to PopUpAppender to
- allow log4javascript to open a new pop-up console window automatically at the
- time of the next log entry after the original window was closed
-
-- Layout.ignoresThrowable implemented to allow Layout/Appender combinations to
- decide whether to display exceptions
-
-- Added NullLayout that performs no formatting on the logging event
-
-- Lowered BrowserConsoleAppender's default threshold to DEBUG and set its
- default layout to NullLayout so that unformatted objects can be passed into
- FireBug
-
-- Renamed InlineAppender to InPageAppender (though InlineAppender still works
- for the sake of backwards compatibility)
-
-- Cosmetic changes to InPageAppender and PopUpAppender
-
-- Added equals() method to Level
-
-- Added removeAppender() and removeAllAppenders() methods to Logger
-
-- Added extensive test script
-
-- Fixed bug where Appender.setLayout and Appender.setThreshold threw an
- unhandled error if not supplied with a genuine Layout or Level respectively
-
-- Fixed bug where InlinePopUpAppender and PopUpAppender continue to poll their
- console windows indefinitely (thus generating warnings) if the console window
- is closed before it has fully loaded
-
-- Fixed bug in w and W symbols in SimpleDateFormat
-
-- Fixed bug with quotes inside messages in JsonLayout
-
-- Fixed bugs in PatternLayout with built-in DATE format and truncation modifiers
-
-- Changed execution order of callbacks in AjaxAppender so that
- requestSuccessCallback is guaranteed to be called before the next request is
- sent
-
-- Changed AjaxAppender so that log messages are formatted immediately before
- a request is sent rather than when append() is called, thus guaranteeing that
- changes to the layout take effect immediately
-
-- PopUpAppender windows now have unique names per hostname to prevent clashes
- from multiple instances of log4javascript running on different servers
-
-- Fixed error in XmlLayout's format method when passed an object
-
-- Fixed errors in JsonLayout's handling of strings containing line breaks and/or
- double quotes
-
-
-1.2 (21/6/2006)
-
-- Tested in and added workaround for a bug in Opera 9 Beta 2 and Opera 9.0
-
-- Tested in Konqueror 3.4 and 3.5 and added workarounds and fixes for browser
- bugs
-
-- Added addErrorListener and removeErrorListener methods to log4javascript
- object to allow custom error handling
-
-- Added close() method to PopUpAppender and InlineAppender
-
-- Added test directory with an HTML page containing automated tests
-
-- Added enable/disable logging checkbox to InlinePopUpAppender and PopUpAppender
- so that unnecessary messages (for instance, from a timer) can be ignored
-
-- An invalid value supplied to a configuration option setter now leaves config
- property unchanged rather than reverting to the default
-
-- Fixed bug in PopUpAppender in IE on Windows XP Service Pack 2 when accessed
- via the file system. The browser by default disables JavaScript in the pop-up
- window until the user opts to enable it, at which point they would previously
- see an uncaught error in log4javascript. Now, a proper error message is
- displayed and the appender is disabled.
-
-- Slight alterations to toolbar in InlineAppender and PopUpAppender - text
- capitalization and title attributes added to inputs
-
-- toString() method added to all appenders
-
-- Correction to errors in XmlLayout's output
-
-- Documentation corrections and additions
-
-
-1.1.1 (17/5/2006)
-
-- Fixed a minor bug with scrolling to the latest message and added "scroll to
- latest" checkbox to console window in InlineAppender and PopUpAppender
-
-
-1.1 (16/5/2006)
-
-- Added configuration option setters on Appenders and refactored to prevent
- config properties being altered directly. Several configuration options
- may not be altered after the appender has been initialized
-
-- Added scrollToLatestMessage constructor parameter, isScrollToLatestMessage
- and setScrollToLatestMessage methods to InlineAppender and PopUpAppender
-
-- Added isVisible method to InlineAppender
-
-- Changed setShowOneError to setAlertAllErrors in logLog, with obvious change
- in logic
-
-- Added layout property key configuration options to layout constructors for
- JsonLayout and HttpPostDataLayout
-
-- Changed the default timestamp property name to "timestamp" instead of
- "timeStamp" in JsonLayout and HttpPostDataLayout
-
-- Expanded documentation to include a section in the manual about configuring
- appenders
-
-- Removed browser sniffing code
-
-
-1.0.1 (30/4/2006)
-
-- Option to have new log messages appear at the top added to InlineAppender and
- PopUpAppender. This option can be specified in the constructor and can also
- be toggled via a checkbox in the console window
-
-- PopUpAppender changed to not focus the pop-up console window by default, and
- the demo page altered to create its own logger with focussing turned on,
- meaning the behaviour in the demo is essentially unchanged
-
-
-1.0 (26/4/2006)
-
-- Tweaks to default values in PopUpAppender and InlineAppender
-
-- Bugfixes and stylistic tweaks resulting from running JSLint on
- log4javascript.js
-
-
-1.0 beta 2
-
-- Show/hide button removed from InlineAppender, replaced by show() and hide()
- methods on the InlineAppender object
-
-- batchSeparator, batchHeader and batchFooter added to Layout and applied to
- JsonLayout - a batch of JSON log messages is now created as an array literal
-
-
-1.0 beta
-
-- TRACE level added, since this was added to log4j in 1.2.12
-
-- PopUpAppender default settings bugfix
-
-- getLevel method added to Logger
-
-- Tweak to vertical alignment of checkboxes and padding of buttons in
- InlineAppender and PopUpAppender
-
-- Fixed getDefaultLogger and getNullLogger to return loggers other than the
- root logger
-
-0.96
-
-- Moved console.html to inline document.writes in log4javascript.js
-
-- Fixed getDefaultLogger to return the same object on successive calls
-
-- Fixed scrolling issue in Opera InlineAppender and PopUpAppender
-
-- Scrollbars are now automatic on InlineAppender and PopUpAppender, i.e. they
- only appear when required
-
-- Fixed bug where regex searches were not applied to new log entries in
- InlineAppender and PopUpAppender
-
-- Changed Safari font size in InlineAppender and PopUpAppender
-
-0.95
-
-- AjaxAppender enhancements:
- - waitForResponse added
- - timer added
-
-- layout parameter added to all appender constructors
-
-0.94
-- First publicly available version
-- IE 5 support added
+log4javascript change log
+-------------------------
+
+1.4.13 (23/5/2015)
+- Fix for BrowserConsolerAppender regression in last version (feature request
+ 14)
+
+1.4.12 (14/5/2015)
+- Fix for BrowserConsolerAppender error in IE <= 8 (issue 18)
+
+1.4.11 (19/2/2015)
+- Fix for CORS requests in IE 10+
+- Remove message when sending remaining Ajax log messages when unloading
+
+1.4.10 (28/9/2014)
+- AMD support added
+- Fix for issue 16: getDefaultLogger() broken in production edition
+
+1.4.9 (12/5/2014)
+- Fix for typo in BrowserConsoleAppender
+
+1.4.8 (18/4/2014)
+- Added support for XMLHttpRequest's withCredentials to AjaxAppender
+
+1.4.7 (7/6/2013)
+- Improved multiple browser console argument handling as per feature request #4
+
+1.4.6 (19/3/2013)
+- Added fix to handle 1223 status code from XMLHttpRequest in IE
+
+1.4.5 (20/2/2013)
+- Changed AjaxAppender to send raw data rather than URL-encoded form data when
+ content-type is not "application/x-www-form-urlencoded"
+
+- Exposed sendAllRemaining() method of AjaxAppender
+
+1.4.4 (8/2/2013)
+- Fixed issue with repeated Content-Type headers in AjaxAppender
+
+- Improved uniqueness of PopUpAppender window name
+
+1.4.3 (18/9/2012)
+- Added addHeader() and getHeaders() methods to AjaxAppender
+
+- Modified sendAllOnUnload feature of AjaxAppender. It now works in WebKit but
+ at the expense of popping up a confirm dialog. That being the case, it is now
+ disabled by default.
+
+- Removed leaked global variable "initialized"
+
+- Fixed bugs #3528265, #3560924, #3560922, #2805479, #3510639 on Sourceforge
+ Tracker
+
+
+1.4.2 (13/10/2011)
+- Fixed JsonLayout trailing comma issue. See
+ http://stackoverflow.com/questions/7735382/asmx-weirdness-deserializing-json-
+ blob-from-log4javascript-logging
+
+- Fixed bugs #3401332, #3185753, #2884623, #2817213 on Sourceforge Tracker
+
+
+1.4.1 (23/3/2009)
+- Fixed document.domain/query string bug (#2519903 on Sourceforge Tracker)
+
+- Added isVisible() method to PopUpAppender
+
+- Added check for whether the console has been closed in isVisible() method of
+ InPageAppender
+
+- Included unit tests in the distribution
+
+
+1.4 (30/10/2008)
+
+- Added time() and timeEnd() methods to Logger
+
+- Added group() and groupEnd() methods to Logger and support for displaying
+ expandable groups to InPageAppender and PopUpAppender
+
+- Added facility to layout custom fields. A custom field value may now
+ optionally be a function which is passed a reference to the layout and a
+ logging event and run at the time the layout's format method is called
+
+- Added option to XmlLayout and JsonLayout to allow multiple messages to be
+ formatted either as one combined message or multiple messages
+
+- Added code to set log4javascript as a property of the window object. This
+ ensures that if log4javascript is loaded via eval() (e.g. Dojo's module
+ loading system), the log4javascript object is guaranteed to be available even
+ though IE does not evaluate the script in the global scope
+
+- Added useDocumentWrite parameter to constructors and isUseDocumentWrite()
+ and setUseDocumentWrite() methods for InPageAppender and PopUpAppender and
+ added console.html to the build so that the appender may use either the
+ existing document.write method or the external HTML file to build the console.
+ This is to allow support for setting document.domain in the main document,
+ which is impossible with the document.write method
+
+- Added milliseconds property to logging events and changed JsonLayout,
+ XmlLayout and HttpPostDataLayout to include milliseconds by default
+
+- Added layout parameter to AjaxAppender and a toString() method on each layout
+
+- Setting configuration properties in appenders via constructor paramaters has
+ been phased out.
+
+- Added window.unload handler for AjaxAppender to send outstanding messages.
+ Doesn't work in Opera
+
+- Implemented log4j-style hierarchical loggers with additive appenders. For
+ example, a logger called "app.stuff" has as its parent the logger called
+ "app", all of whose appenders it inherits
+
+- Changed XmlLayout and JsonLayout to send data as a key/value pair
+
+- Bugfix for inaccessible error details
+
+- An appender can no longer be added more than once to the same logger
+
+- Multiple messages may now be specified in logger methods
+
+- New conversion character 'a' added to PatternLayout. This is the same as 'm'
+ except that if the first message specified is an array then it treats each
+ element of the array as though it had been passed in as a message parameter
+
+- Command line added to console windows with configurable object expansion
+ depth. Command line presence and object expansion depth are configurable in
+ the appender via setShowCommandLine() and setCommandLineObjectExpansionDepth()
+ methods respectively
+
+- Command line history, navigated by cursor keys and stored in a session cookie
+
+- Firebug-inspired command line functions added: $, dir, dirxml, cd, clear,
+ keys, values, expansionDepth
+
+- Fixes for several bugs in object expansion
+
+- Fix for bug in initialization of InPageAppender in IE 5
+
+- Fix to allow searchable HTML in log entries
+
+- Fix for bug which automatically displayed search next/previous buttons when
+ the search box is clicked regardless of whether there were any matches
+
+- Searches in PopUpAppender and InPageAppender now preserve formatting
+
+- More fixes to interaction of search and severity filters in console window
+ used by PopUpAppender and InPageAppender
+
+- Added SwitchableConsoleAppender that allows flipping from an in-page console
+ to a pop-up console window and back again while retaining state
+
+- Custom events added that are raised when PopUpAppender and InPageAppender
+ windows load and unload, and on the main log4javascript object when the main
+ page loads, when the main page is resized and when log4javascript errors occur
+
+- InPageAppender may now be initialized before the page loads by providing an
+ element id for its container, or omitting the container altogether (in which
+ case the appender is added as a fixed div at the bottom of the page)
+
+- Tweaked PopUpAppender and InPageAppender so that the formatted log message is
+ produced when append() is called rather than when the message is actually sent
+ to the console window, thus allowing reliable temporary switching of layouts
+
+- Much improved scrolling to current search match: scrolls only if part of the
+ search match is not visible and centres around it rather than putting flush to
+ the top left
+
+- Removed setReadable() method from JsonLayout - now specified only in the
+ constructor
+
+- Fixed problem in IE where copying selections of log entries would produce two
+ copies of each log entry
+
+
+1.3.1 (20/11/2006)
+
+- Fix to interaction of search and severity filters in console window used by
+ PopUpAppender and InPageAppender
+
+
+1.3 (19/10/2006)
+
+- Fully tested and supported in IE 7 Beta 3
+
+- Added support for FireBug logging levels in BrowserConsoleAppender
+
+- Added optional limit to the number of log messages stored by PopUpAppender and
+ InPageAppender. When this limit is reached, each new message causes the oldest
+ message to be discarded.
+
+- Exceptions passed into logging methods are now displayed in logging output.
+
+- Added facility to pass objects as well as strings to logging methods.
+ Enhanced conversion character 'm' to PatternLayout to expand object properties
+ in the formatted output
+
+- Added stack trace to error reports (alerts and log entries) in Firefox. This
+ is turned off by default but can be switched on via the new
+ log4javascript.setShowStackTraces function
+
+- Added log4javascript_stub.js to distribution - this has stub versions of all
+ objects and methods in log4javascript.js and can be used as a lightweight
+ replacement for log4javascript.js in production systems
+
+- Added log4javascript_compressed.js to distribution - comments and whitespace
+ are removed, resulting in a 30% smaller file
+
+- Added custom fields to layouts
+
+- Added setReopenWhenClosed and isReopenWhenClosed methods to PopUpAppender to
+ allow log4javascript to open a new pop-up console window automatically at the
+ time of the next log entry after the original window was closed
+
+- Layout.ignoresThrowable implemented to allow Layout/Appender combinations to
+ decide whether to display exceptions
+
+- Added NullLayout that performs no formatting on the logging event
+
+- Lowered BrowserConsoleAppender's default threshold to DEBUG and set its
+ default layout to NullLayout so that unformatted objects can be passed into
+ FireBug
+
+- Renamed InlineAppender to InPageAppender (though InlineAppender still works
+ for the sake of backwards compatibility)
+
+- Cosmetic changes to InPageAppender and PopUpAppender
+
+- Added equals() method to Level
+
+- Added removeAppender() and removeAllAppenders() methods to Logger
+
+- Added extensive test script
+
+- Fixed bug where Appender.setLayout and Appender.setThreshold threw an
+ unhandled error if not supplied with a genuine Layout or Level respectively
+
+- Fixed bug where InlinePopUpAppender and PopUpAppender continue to poll their
+ console windows indefinitely (thus generating warnings) if the console window
+ is closed before it has fully loaded
+
+- Fixed bug in w and W symbols in SimpleDateFormat
+
+- Fixed bug with quotes inside messages in JsonLayout
+
+- Fixed bugs in PatternLayout with built-in DATE format and truncation modifiers
+
+- Changed execution order of callbacks in AjaxAppender so that
+ requestSuccessCallback is guaranteed to be called before the next request is
+ sent
+
+- Changed AjaxAppender so that log messages are formatted immediately before
+ a request is sent rather than when append() is called, thus guaranteeing that
+ changes to the layout take effect immediately
+
+- PopUpAppender windows now have unique names per hostname to prevent clashes
+ from multiple instances of log4javascript running on different servers
+
+- Fixed error in XmlLayout's format method when passed an object
+
+- Fixed errors in JsonLayout's handling of strings containing line breaks and/or
+ double quotes
+
+
+1.2 (21/6/2006)
+
+- Tested in and added workaround for a bug in Opera 9 Beta 2 and Opera 9.0
+
+- Tested in Konqueror 3.4 and 3.5 and added workarounds and fixes for browser
+ bugs
+
+- Added addErrorListener and removeErrorListener methods to log4javascript
+ object to allow custom error handling
+
+- Added close() method to PopUpAppender and InlineAppender
+
+- Added test directory with an HTML page containing automated tests
+
+- Added enable/disable logging checkbox to InlinePopUpAppender and PopUpAppender
+ so that unnecessary messages (for instance, from a timer) can be ignored
+
+- An invalid value supplied to a configuration option setter now leaves config
+ property unchanged rather than reverting to the default
+
+- Fixed bug in PopUpAppender in IE on Windows XP Service Pack 2 when accessed
+ via the file system. The browser by default disables JavaScript in the pop-up
+ window until the user opts to enable it, at which point they would previously
+ see an uncaught error in log4javascript. Now, a proper error message is
+ displayed and the appender is disabled.
+
+- Slight alterations to toolbar in InlineAppender and PopUpAppender - text
+ capitalization and title attributes added to inputs
+
+- toString() method added to all appenders
+
+- Correction to errors in XmlLayout's output
+
+- Documentation corrections and additions
+
+
+1.1.1 (17/5/2006)
+
+- Fixed a minor bug with scrolling to the latest message and added "scroll to
+ latest" checkbox to console window in InlineAppender and PopUpAppender
+
+
+1.1 (16/5/2006)
+
+- Added configuration option setters on Appenders and refactored to prevent
+ config properties being altered directly. Several configuration options
+ may not be altered after the appender has been initialized
+
+- Added scrollToLatestMessage constructor parameter, isScrollToLatestMessage
+ and setScrollToLatestMessage methods to InlineAppender and PopUpAppender
+
+- Added isVisible method to InlineAppender
+
+- Changed setShowOneError to setAlertAllErrors in logLog, with obvious change
+ in logic
+
+- Added layout property key configuration options to layout constructors for
+ JsonLayout and HttpPostDataLayout
+
+- Changed the default timestamp property name to "timestamp" instead of
+ "timeStamp" in JsonLayout and HttpPostDataLayout
+
+- Expanded documentation to include a section in the manual about configuring
+ appenders
+
+- Removed browser sniffing code
+
+
+1.0.1 (30/4/2006)
+
+- Option to have new log messages appear at the top added to InlineAppender and
+ PopUpAppender. This option can be specified in the constructor and can also
+ be toggled via a checkbox in the console window
+
+- PopUpAppender changed to not focus the pop-up console window by default, and
+ the demo page altered to create its own logger with focussing turned on,
+ meaning the behaviour in the demo is essentially unchanged
+
+
+1.0 (26/4/2006)
+
+- Tweaks to default values in PopUpAppender and InlineAppender
+
+- Bugfixes and stylistic tweaks resulting from running JSLint on
+ log4javascript.js
+
+
+1.0 beta 2
+
+- Show/hide button removed from InlineAppender, replaced by show() and hide()
+ methods on the InlineAppender object
+
+- batchSeparator, batchHeader and batchFooter added to Layout and applied to
+ JsonLayout - a batch of JSON log messages is now created as an array literal
+
+
+1.0 beta
+
+- TRACE level added, since this was added to log4j in 1.2.12
+
+- PopUpAppender default settings bugfix
+
+- getLevel method added to Logger
+
+- Tweak to vertical alignment of checkboxes and padding of buttons in
+ InlineAppender and PopUpAppender
+
+- Fixed getDefaultLogger and getNullLogger to return loggers other than the
+ root logger
+
+0.96
+
+- Moved console.html to inline document.writes in log4javascript.js
+
+- Fixed getDefaultLogger to return the same object on successive calls
+
+- Fixed scrolling issue in Opera InlineAppender and PopUpAppender
+
+- Scrollbars are now automatic on InlineAppender and PopUpAppender, i.e. they
+ only appear when required
+
+- Fixed bug where regex searches were not applied to new log entries in
+ InlineAppender and PopUpAppender
+
+- Changed Safari font size in InlineAppender and PopUpAppender
+
+0.95
+
+- AjaxAppender enhancements:
+ - waitForResponse added
+ - timer added
+
+- layout parameter added to all appender constructors
+
+0.94
+- First publicly available version
+- IE 5 support added
- Full support for wrapping in IE added for InlineAppender and PopUpAppender
\ No newline at end of file
diff --git a/console.html b/console.html
index 476d272..0859d04 100644
--- a/console.html
+++ b/console.html
@@ -1,263 +1,263 @@
-
-
-
- NB. Since the demo below uses pop-up windows, you will
- need to disable any pop-up blockers you may have for it to work.
-
-
- This demo demonstrates the default logger. For more options, please see the
- demos area.
-
-
- Enter a log message below and click on one of the buttons to log
- your message at your desired level. You can then filter by
- log level, toggle word-wrapping and perform text and regular
- expression searches on the log entries.
-
+ NB. Since the demo below uses pop-up windows, you will
+ need to disable any pop-up blockers you may have for it to work.
+
+
+ This demo demonstrates the default logger. For more options, please see the
+ demos area.
+
+
+ Enter a log message below and click on one of the buttons to log
+ your message at your desired level. You can then filter by
+ log level, toggle word-wrapping and perform text and regular
+ expression searches on the log entries.
+
- This demo demonstrates an in-page logger. The example uses the default behaviour, which
- is to place the log console in a fixed area at the bottom of the page. However, the
- console may be placed inside any element in the page. To do this, you may specify the ID
- of the element (even if the page has not yet loaded) or a reference to the element itself.
-
-
- Enter a log message below and click on one of the buttons to log
- your message at your desired level. You can then filter by
- log level, toggle word-wrapping and perform text and regular
- expression searches on the log entries.
-
+ This demo demonstrates an in-page logger. The example uses the default behaviour, which
+ is to place the log console in a fixed area at the bottom of the page. However, the
+ console may be placed inside any element in the page. To do this, you may specify the ID
+ of the element (even if the page has not yet loaded) or a reference to the element itself.
+
+
+ Enter a log message below and click on one of the buttons to log
+ your message at your desired level. You can then filter by
+ log level, toggle word-wrapping and perform text and regular
+ expression searches on the log entries.
+
- Loggers are now hierarchical. This means logger names containing full stops have
- special meaning. For example, from version 1.4 the logger named myapp.ajax
- by default inherits all the appenders of the logger named myapp, while
- prior to version 1.4 these loggers would be entirely independent;
-
-
- The signature of the log method of Logger has changed.
- However, you should not use this method directly; instead, use one of the level-specific
- wrapper functions (debug, info, error etc.);
-
-
- Appenders can no longer be configured via constructor parameters. Instead you must use
- setter methods;
-
-
- The format of requests sent via AjaxAppender
- has changed when using JsonLayout or
- XmlLayout: the formatted log messages are sent
- as a name-value pair (with default name data) rather than a single unencoded string;
-
-
- All timestamps returned by XmlLayout,
- JsonLayout and
- HttpPostDataLayout are
- now measured in milliseconds since January 1st 1970 (previously they were returned
- as seconds since January 1st 1970);
-
-
- The constructors for JsonLayout and
- HttpPostDataLayout have changed; the property names
- used for the properties of the logging event are now set via setKeys rather than
- in the constructor;
-
-
- setReadable has been removed from JsonLayout.
- The readable property should now be set via the constructor;
-
-
- addErrorListener and removeErrorListener removed from
- the log4javascript object and replaced with the more generic
- addEventListener
- and removeEventListener methods. The listener functions are passed
- different parameters.
-
+ Loggers are now hierarchical. This means logger names containing full stops have
+ special meaning. For example, from version 1.4 the logger named myapp.ajax
+ by default inherits all the appenders of the logger named myapp, while
+ prior to version 1.4 these loggers would be entirely independent;
+
+
+ The signature of the log method of Logger has changed.
+ However, you should not use this method directly; instead, use one of the level-specific
+ wrapper functions (debug, info, error etc.);
+
+
+ Appenders can no longer be configured via constructor parameters. Instead you must use
+ setter methods;
+
+
+ The format of requests sent via AjaxAppender
+ has changed when using JsonLayout or
+ XmlLayout: the formatted log messages are sent
+ as a name-value pair (with default name data) rather than a single unencoded string;
+
+
+ All timestamps returned by XmlLayout,
+ JsonLayout and
+ HttpPostDataLayout are
+ now measured in milliseconds since January 1st 1970 (previously they were returned
+ as seconds since January 1st 1970);
+
+
+ The constructors for JsonLayout and
+ HttpPostDataLayout have changed; the property names
+ used for the properties of the logging event are now set via setKeys rather than
+ in the constructor;
+
+
+ setReadable has been removed from JsonLayout.
+ The readable property should now be set via the constructor;
+
+
+ addErrorListener and removeErrorListener removed from
+ the log4javascript object and replaced with the more generic
+ addEventListener
+ and removeEventListener methods. The listener functions are passed
+ different parameters.
+
- From version 1.4 the distribution includes three different editions of log4javascript:
-
-
-
-
Standard Edition
-
- Equivalent to log4javascript from earlier versions and suitable for general JavaScript
- debugging and logging (including via Ajax).
-
-
-
-
Production Edition
-
- Designed for use in production systems where the focus is solely on logging JavaScript
- messages back to the server. Consequently this edition omits all appenders except
- AjaxAppender, resulting in a drastically reduced
- file size compared to the standard edition.
-
-
-
-
Lite Edition
-
- A lightweight version of log4javascript for quick page debugging. Included is a single logger
- using a basic pop-up window appender with a fixed layout.
-
-
-
-
- Each edition comes in compressed and uncompressed versions. The compressed version is
- functionally identical to the uncompressed version but has had whitespace and comments removed
- and therefore downloads more quickly.
-
-
- Each edition also comes with a stub version. This contains dummy implementations of all
- log4javacript objects and methods in the public API, making it ideal for production environments
- where logging is not required. Replacing the main log4javascript script file with this file
- means that log calls may be left in production code. Compressed and uncompressed versions of
- each stub are included.
-
-
- Finally, each edition comes with a suite of unit tests, available as HTML pages in the
- test/ directory. Note that these tests crash old versions (pre-3.1) of Safari. Sorry.
-
+ From version 1.4 the distribution includes three different editions of log4javascript:
+
+
+
+
Standard Edition
+
+ Equivalent to log4javascript from earlier versions and suitable for general JavaScript
+ debugging and logging (including via Ajax).
+
+
+
+
Production Edition
+
+ Designed for use in production systems where the focus is solely on logging JavaScript
+ messages back to the server. Consequently this edition omits all appenders except
+ AjaxAppender, resulting in a drastically reduced
+ file size compared to the standard edition.
+
+
+
+
Lite Edition
+
+ A lightweight version of log4javascript for quick page debugging. Included is a single logger
+ using a basic pop-up window appender with a fixed layout.
+
+
+
+
+ Each edition comes in compressed and uncompressed versions. The compressed version is
+ functionally identical to the uncompressed version but has had whitespace and comments removed
+ and therefore downloads more quickly.
+
+
+ Each edition also comes with a stub version. This contains dummy implementations of all
+ log4javacript objects and methods in the public API, making it ideal for production environments
+ where logging is not required. Replacing the main log4javascript script file with this file
+ means that log calls may be left in production code. Compressed and uncompressed versions of
+ each stub are included.
+
+
+ Finally, each edition comes with a suite of unit tests, available as HTML pages in the
+ test/ directory. Note that these tests crash old versions (pre-3.1) of Safari. Sorry.
+
- log4javascript is a JavaScript logging framework based on the Java
- logging framework log4j.
-
-
- log4javascript implements a subset of log4j (primarily loggers, appenders
- and layouts) and has a few convenience methods of its own for
- quick JavaScript development. It can be used to debug JavaScript
- applications of all sizes, including Ajax applications.
-
- Documentation for previous versions of log4javascript are not available here.
- However, documentation is bundled with every previous version, all of which
- are available to download.
-
-
-
-
Features
-
-
can be initialized with one JavaScript include and one line of code;
-
- by default logs to a pop-up console window with powerful search (including
- regular expression) and filtering features. This console window can also
- be used inline as an iframe in the main page;
-
-
- can send log messages to the server via HTTP (Ajax, if you like);
-
-
- highly configurable using familiar methods from log4j, including the
- powerful PatternLayout
- which gives the developer complete control over the format of the log messages.
-
Other Mozilla-based browsers, as far back as Netscape 7
-
Internet Explorer 5 and higher for Windows
-
Safari 1.3 and higher (untested on earlier versions)
-
Opera 8.01 and higher (pre- version 9 browsers have a rendering
- bug related to scrolling that affects searching in PopUpAppender and InPageAppender)
-
Konqueror 3.4.3 and higher (untested on earlier versions)
-
Google Chrome
-
-
Partially supported browsers:
-
-
Older Mozilla-based browsers, e.g. Netscape 6.2 (generally OK except for
- display problems searching and filtering PopUpAppender and InPageAppender)
-
Opera 7.0 - 8.0 (InPageAppender not supported until version 7.5, plus some display
- problems searching PopUpAppender and InPageAppender. AjaxAppender not supported at all)
-
-
Unsupported browsers:
-
-
- Internet Explorer for Mac. There are no plans to make log4javascript work
- in this browser.
-
- In order to gain an understanding of the ideas behind log4j and therefore log4javascript,
- I highly recommend reading the short
- introduction to log4j from the log4j website. log4javascript borrows heavily from
- log4j but does not carry over all its concepts - for example, Filters and Renderers are not
- implemented.
-
+ log4javascript is a JavaScript logging framework based on the Java
+ logging framework log4j.
+
+
+ log4javascript implements a subset of log4j (primarily loggers, appenders
+ and layouts) and has a few convenience methods of its own for
+ quick JavaScript development. It can be used to debug JavaScript
+ applications of all sizes, including Ajax applications.
+
+ Documentation for previous versions of log4javascript are not available here.
+ However, documentation is bundled with every previous version, all of which
+ are available to download.
+
+
+
+
Features
+
+
can be initialized with one JavaScript include and one line of code;
+
+ by default logs to a pop-up console window with powerful search (including
+ regular expression) and filtering features. This console window can also
+ be used inline as an iframe in the main page;
+
+
+ can send log messages to the server via HTTP (Ajax, if you like);
+
+
+ highly configurable using familiar methods from log4j, including the
+ powerful PatternLayout
+ which gives the developer complete control over the format of the log messages.
+
Other Mozilla-based browsers, as far back as Netscape 7
+
Internet Explorer 5 and higher for Windows
+
Safari 1.3 and higher (untested on earlier versions)
+
Opera 8.01 and higher (pre- version 9 browsers have a rendering
+ bug related to scrolling that affects searching in PopUpAppender and InPageAppender)
+
Konqueror 3.4.3 and higher (untested on earlier versions)
+
Google Chrome
+
+
Partially supported browsers:
+
+
Older Mozilla-based browsers, e.g. Netscape 6.2 (generally OK except for
+ display problems searching and filtering PopUpAppender and InPageAppender)
+
Opera 7.0 - 8.0 (InPageAppender not supported until version 7.5, plus some display
+ problems searching PopUpAppender and InPageAppender. AjaxAppender not supported at all)
+
+
Unsupported browsers:
+
+
+ Internet Explorer for Mac. There are no plans to make log4javascript work
+ in this browser.
+
+ In order to gain an understanding of the ideas behind log4j and therefore log4javascript,
+ I highly recommend reading the short
+ introduction to log4j from the log4j website. log4javascript borrows heavily from
+ log4j but does not carry over all its concepts - for example, Filters and Renderers are not
+ implemented.
+
- log4javascript Lite is designed to be a basic, lightweight, cross-browser logging tool. It
- provides functions to log messages of different severity to a pop-up window using the exactly
- the same syntax as log4javascript.
-