74 lines
1.5 KiB
JavaScript
74 lines
1.5 KiB
JavaScript
//<feature logger>
|
|
Ext.define('Ext.log.writer.Remote', {
|
|
extend: 'Ext.log.writer.Writer',
|
|
|
|
requires: [
|
|
'Ext.Ajax'
|
|
],
|
|
|
|
config: {
|
|
batchSendDelay: 100,
|
|
onFailureRetryDelay: 500,
|
|
url: ''
|
|
},
|
|
|
|
isSending: false,
|
|
|
|
sendingTimer: null,
|
|
|
|
constructor: function() {
|
|
this.queue = [];
|
|
|
|
this.send = Ext.Function.bind(this.send, this);
|
|
|
|
return this.callParent(arguments);
|
|
},
|
|
|
|
doWrite: function(event) {
|
|
var queue = this.queue;
|
|
queue.push(event.message);
|
|
|
|
if (!this.isSending && this.sendingTimer === null) {
|
|
this.sendingTimer = setTimeout(this.send, this.getBatchSendDelay());
|
|
}
|
|
},
|
|
|
|
send: function() {
|
|
var queue = this.queue,
|
|
messages = queue.slice();
|
|
|
|
queue.length = 0;
|
|
|
|
this.sendingTimer = null;
|
|
|
|
if (messages.length > 0) {
|
|
this.doSend(messages);
|
|
}
|
|
},
|
|
|
|
doSend: function(messages) {
|
|
var me = this;
|
|
|
|
me.isSending = true;
|
|
|
|
Ext.Ajax.request({
|
|
url: me.getUrl(),
|
|
method: 'POST',
|
|
params: {
|
|
messages: messages.join("\n")
|
|
},
|
|
success: function(){
|
|
me.isSending = false;
|
|
me.send();
|
|
},
|
|
failure: function() {
|
|
setTimeout(function() {
|
|
me.doSend(messages);
|
|
}, me.getOnFailureRetryDelay());
|
|
},
|
|
scope: me
|
|
});
|
|
}
|
|
});
|
|
//</feature>
|