Capturing javascript console.log?
javascript
Solution
You can hijack JavaScript functions in the following manner:
(function(){
var oldLog = console.log;
console.log = function (message) {
// DO MESSAGE HERE.
oldLog.apply(console, arguments);
};
})();
- Line 1 wraps your function in a closure so no other functions have direct access to `oldLog` (for maintainability reasons).
- Line 2 captures the original method.
- Line 3 creates a new function.
- Line 4 is where you send `message` to your server.
- Line 5 is invokes the original method as it would have been handled originally.
`apply` is used so we can invoke it on `console` using the original arguments. Simply calling `oldLog(message)` would fail because `log` depends on its association with `console`.
Update Per zzzzBov's comment below, in IE9 `console.log` isn't actually a function so `oldLog.apply` would fail. See console.log.apply not working in IE9 for more details.
Problem
Possible Duplicate: Intercept calls to console.log in Chrome Can I extend the console object (for rerouting the logging) in javascript? When my JS app writes to the `console.log`, I want to capture that log message so that I can AJAX that log output to the server. How do I do that? The code that writes to the log is from external services, which is why I can't just ajax it directly.
Related problems
- A proper wrapper for console.log with correct line number?
- console.log.apply not working in IE9
- Intercept calls to console.log in Chrome
- Can I extend the console object (for rerouting the logging) in javascript?
- Intercept calls to console.log in Chrome
- Can I extend the console object (for rerouting the logging) in javascript?