//////////////////////////////////////////////////////////////////////////////// // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to You 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. // //////////////////////////////////////////////////////////////////////////////// package mx.logging.targets { import mx.core.mx_internal; import mx.logging.AbstractTarget; import mx.logging.ILogger; import mx.logging.LogEvent; use namespace mx_internal; /** * All logger target implementations that have a formatted line style output * should extend this class. * It provides default behavior for including date, time, category, and level * within the output. * * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public class LineFormattedTarget extends AbstractTarget { include "../../core/Version.as"; //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor. * *
Constructs an instance of a logger target that will format * the message data on a single line.
* * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public function LineFormattedTarget() { super(); includeTime = false; includeDate = false; includeCategory = false; includeLevel = false; } //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // fieldSeparator //---------------------------------- [Inspectable(category="General", defaultValue=" ")] /** * The separator string to use between fields (the default is " ") * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var fieldSeparator:String = " "; //---------------------------------- // includeCategory //---------------------------------- [Inspectable(category="General", defaultValue="false")] /** * Indicates if the category for this target should added to the trace. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var includeCategory:Boolean; //---------------------------------- // includeDate //---------------------------------- [Inspectable(category="General", defaultValue="false")] /** * Indicates if the date should be added to the trace. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var includeDate:Boolean; //---------------------------------- // includeLevel //---------------------------------- [Inspectable(category="General", defaultValue="false")] /** * Indicates if the level for the event should added to the trace. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var includeLevel:Boolean; //---------------------------------- // includeTime //---------------------------------- [Inspectable(category="General", defaultValue="false")] /** * Indicates if the time should be added to the trace. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var includeTime:Boolean; //-------------------------------------------------------------------------- // // Overridden methods // //-------------------------------------------------------------------------- /** * This method handles aLogEvent
from an associated logger.
* A target uses this method to translate the event into the appropriate
* format for transmission, storage, or display.
* This method is called only if the event's level is in range of the
* target's level.
*
* @param event The LogEvent
handled by this method.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
override public function logEvent(event:LogEvent):void
{
var date:String = ""
if (includeDate || includeTime)
{
var d:Date = new Date();
if (includeDate)
{
date = Number(d.getMonth() + 1).toString() + "/" +
d.getDate().toString() + "/" +
d.getFullYear() + fieldSeparator;
}
if (includeTime)
{
date += padTime(d.getHours()) + ":" +
padTime(d.getMinutes()) + ":" +
padTime(d.getSeconds()) + "." +
padTime(d.getMilliseconds(), true) + fieldSeparator;
}
}
var level:String = "";
if (includeLevel)
{
level = "[" + LogEvent.getLevelString(event.level) +
"]" + fieldSeparator;
}
var category:String = includeCategory ?
ILogger(event.target).category + fieldSeparator :
"";
internalLog(date + level + category + event.message);
}
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* @private
*/
private function padTime(num:Number, millis:Boolean = false):String
{
if (millis)
{
if (num < 10)
return "00" + num.toString();
else if (num < 100)
return "0" + num.toString();
else
return num.toString();
}
else
{
return num > 9 ? num.toString() : "0" + num.toString();
}
}
/**
* Descendants of this class should override this method to direct the
* specified message to the desired output.
*
* @param message String containing preprocessed log message which may
* include time, date, category, etc. based on property settings,
* such as includeDate
, includeCategory
,
* etc.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
mx_internal function internalLog(message:String):void
{
// override this method to perform the redirection to the desired output
}
}
}