/* * Copyright © 2012, 2013 Pedro Agullo Soliveres. * * This file is part of Log4js-ext. * * Log4js-ext is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License. * * Commercial use is permitted to the extent that the code/component(s) * do NOT become part of another Open Source or Commercially developed * licensed development library or toolkit without explicit permission. * * Log4js-ext is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Log4js-ext. If not, see <http://www.gnu.org/licenses/>. * * This software uses the ExtJs library (http://extjs.com), which is * distributed under the GPL v3 license (see http://extjs.com/license). */ (function() { "use strict"; //$NON-NLS-1$ /** * Contains the information provided in a log operation. * * Appenders will receive a copy of a logging event so that they can * augment it without affecting other appenders. * * For example, an appender for the built-in log viewer might want to add a * JSON multiline formatted version of the logged object. */ Ext.define('Sm.log.LoggingEvent', { //$NON-NLS-1$ uses: ['Sm.log.util.Assert', 'Sm.log.NDC'], /** * @property [=assigned in the constructor] * * @readonly * * The category of the logger that created this log entry. */ category: '', /** * @property {Date} [=assigned in the constructor] * * @readonly * * The date and time this log entry was created. */ time: null, /** * @property {Sm.log.Level} [=assigned in the constructor] * * @property [=assigned in the constructor] * * @readonly * * The level of the log operation that created this log entry. */ level : null, /** * @property [=assigned in the constructor] * * @readonly * * The original message parameter for this log entry. * * Might contain formatting parameters. See {@link #formattedMessage} * for additional information. */ message : '', /** * @property {String} [=assigned in the constructor] * * @readonly * * The NDC at the moment this log entry was created. */ ndc : undefined, /** * @property [=assigned in the constructor] * * @readonly * * The logged object passed when this log entry was created -if any. */ loggedObject : undefined, /** * @property {Array} [=assigned in the constructor] * * @readonly * The formatting parameters passed when this log entry was created. */ formatParams : undefined, /** * @property [=assigned in the constructor] * * @readonly * * True if this entry includes a looged object. */ hasLoggedObject : false, /** * @property {Number} [=assigned in the constructor] * * @readonly * * The level for the level object passed when this log entry was created. * * Makes several checks easier and faster. */ levelLevel : undefined, /** * @property {String} * * The formatted message, obtained from the message and the formatParams. * * The appender's layout will provide this one, and can modify it * to suit the output destination needs. */ formattedMessage : undefined, /** * @property {String} * * The formatted time. * * The appender's layout will provide this one, and can modify it * to suit the output destination needs. */ formattedTime : undefined, /** * @property {String} * * A string representing the loggedObject. * * The appender's layout will provide this one, and can modify it * to suit the output destination needs. */ formattedLoggedObject : undefined, /** * @private * * Handles the message parameter to extract the loggedObject, if any, * etc. */ handleMessage : function() { // If message is object or array, we need to handle // the 'loggedObject' case if( Ext.isObject(this.message) || Ext.isArray(this.message)) { // If this is a message object (has 'loggedObject'), then // we try to get a message from it via its 'message' or // 'msg' properties or its toString method if( this.message.hasOwnProperty("loggedObject")) { this.loggedObject = this.message.loggedObject; this.message = this.message.message || this.message.msg || this.message.toString(); } // Else we use the toString() method as the log message and // the message itself as the loggedObject else { this.loggedObject = this.message; // Some browsers will ignore '' *and* the // accompanying logOject this.message = ' '; } this.hasLoggedObject = true; } else { this.hasLoggedObject = false; } }, /** * @private * * Creates a new logging event. * * @param cfg The basic log information. */ constructor : function ( cfg ) { Sm.log.util.Assert.assert(cfg); Sm.log.util.Assert.assert(cfg.time); Sm.log.util.Assert.assert(cfg.message !== undefined); Sm.log.util.Assert.assert(cfg.category); Sm.log.util.Assert.assert(cfg.level); Ext.apply( this, cfg ); this.level = cfg.level.getName(); this.levelLevel = cfg.level.getLevel(); this.ndc = Sm.log.NDC.getNDCString() || ''; this.handleMessage(this.message); } }); }());