--- /dev/null
+//<feature logger>
+Ext.define('Ext.log.writer.Writer', {
+ extend: 'Ext.log.Base',
+
+ requires: ['Ext.log.formatter.Formatter'],
+
+ config: {
+ formatter: null,
+ filters: {}
+ },
+
+ constructor: function() {
+ this.activeFilters = [];
+
+ return this.callParent(arguments);
+ },
+
+ updateFilters: function(filters) {
+ var activeFilters = this.activeFilters,
+ i, filter;
+
+ activeFilters.length = 0;
+
+ for (i in filters) {
+ if (filters.hasOwnProperty(i)) {
+ filter = filters[i];
+ activeFilters.push(filter);
+ }
+ }
+ },
+
+ write: function(event) {
+ var filters = this.activeFilters,
+ formatter = this.getFormatter(),
+ i, ln, filter;
+
+ for (i = 0,ln = filters.length; i < ln; i++) {
+ filter = filters[i];
+
+ if (!filters[i].accept(event)) {
+ return this;
+ }
+ }
+
+ if (formatter) {
+ event.message = formatter.format(event);
+ }
+
+ this.doWrite(event);
+
+ return this;
+ },
+
+ // @private
+ doWrite: Ext.emptyFn
+});
+//</feature>