日志包装类

package log
{
import com.adobe.air.logging.FileTarget; import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream; import mx.logging.ILogger;
import mx.logging.Log;
import mx.logging.LogEventLevel; /**
* AIR程序中记录日志的工具类 (对as3corelib官方类库中类com.adobe.air.logging.FileTarget的封装)
*
* @author Sakura
* 博客地址:http://www.cnblogs.com/god_bless_you
*/
public final class LogUtil
{
private static var _fileTarget:FileTarget; private static var _level:int = LogEventLevel.ALL; /**
* Provides access to the level this target is currently set at.
* Value values are:
* <ul>
* <li><code>LogEventLevel.FATAL (1000)</code> designates events that are very
* harmful and will eventually lead to application failure</li>
*
* <li><code>LogEventLevel.ERROR (8)</code> designates error events that might
* still allow the application to continue running.</li>
*
* <li><code>LogEventLevel.WARN (6)</code> designates events that could be
* harmful to the application operation</li>
*
* <li><code>LogEventLevel.INFO (4)</code> designates informational messages
* that highlight the progress of the application at
* coarse-grained level.</li>
*
* <li><code>LogEventLevel.DEBUG (2)</code> designates informational
* level messages that are fine grained and most helpful when
* debugging an application.</li>
*
* <li><code>LogEventLevel.ALL (0)</code> intended to force a target to
* process all messages.</li>
* </ul>
*
*/
public static function get level():int
{
return _level;
} public static function set level(value:int):void
{
// A change of level may impact the target level for Log.
if (checkFileTarget())
{
Log.removeTarget(_fileTarget);
_fileTarget = null;
_level = value;
}
initLogging();
} private static var _logFilePath:String = File.applicationDirectory.resolvePath( "Logs\\main.log" ).nativePath;
// File.applicationDirectory
public static function get logFilePath():String
{
return _logFilePath;
} public static function set logFilePath(value:String):void
{
if (checkFileTarget())
{
Log.removeTarget(_fileTarget);
_fileTarget = null;
_logFilePath = value;
}
initLogging();
} private static function getLogger(category:String):ILogger
{
return Log.getLogger(category);
} private static function initLogging():void
{
if (checkFileTarget())
return;
trace("logpath:"+_logFilePath);
var file:File = new File(_logFilePath);
var filestrm:FileStream = new FileStream;
filestrm.open(file,FileMode.WRITE);
filestrm.writeInt();
filestrm.close();
trace("清除日志"+file.exists+""+file.nativePath); _fileTarget = new FileTarget(file);
_fileTarget.level = _level;
_fileTarget.includeDate = true;
_fileTarget.includeTime = true;
_fileTarget.includeCategory = true;
_fileTarget.includeLevel = true; Log.addTarget(_fileTarget);
} private static function checkFileTarget():Boolean
{
return (_fileTarget) ? true : false;
} private static function generateMessage(message:String,rest:Array):String
{
for (var i:int = ; i < rest.length; i++)
{
message = message.replace(new RegExp("\\{"+i+"\\}", "g"), rest[i]);
}
return message;
} /**
* Logs the specified data using the <code>LogEventLevel.DEBUG</code>
* level.
* <code>LogEventLevel.DEBUG</code> designates informational level
* messages that are fine grained and most helpful when debugging
* an application.
*
* <p>The string specified for logging can contain braces with an index
* indicating which additional parameter should be inserted
* into the string before it is logged.
* For example "the first additional parameter was {0} the second was {1}"
* will be translated into "the first additional parameter was 10 the
* second was 15" when called with 10 and 15 as parameters.</p>
*
* @param category The category for which this log sends messages.
*
* @param message The information to log.
* This string can contain special marker characters of the form {x},
* where x is a zero based index that will be replaced with
* the additional parameters found at that index if specified.
*
* @param rest Additional parameters that can be subsituted in the str
* parameter at each "{<code>x</code>}" location, where <code>x</code>
* is an integer (zero based) index value into the Array of values
* specified.
*
*/
public static function debug(category:String, message:String, ... rest):void
{
initLogging(); if (Log.isDebug())
{
var logger:ILogger = getLogger(category);
logger.debug(generateMessage(message,rest));
}
} /**
* Logs the specified data using the <code>LogEvent.INFO</code> level.
* <code>LogEventLevel.INFO</code> designates informational messages that
* highlight the progress of the application at coarse-grained level.
*
* <p>The string specified for logging can contain braces with an index
* indicating which additional parameter should be inserted
* into the string before it is logged.
* For example "the first additional parameter was {0} the second was {1}"
* will be translated into "the first additional parameter was 10 the
* second was 15" when called with 10 and 15 as parameters.</p>
*
* @param category The category for which this log sends messages.
*
* @param message The information to log.
* This String can contain special marker characters of the form {x},
* where x is a zero based index that will be replaced with
* the additional parameters found at that index if specified.
*
* @param rest Additional parameters that can be subsituted in the str
* parameter at each "{<code>x</code>}" location, where <code>x</code>
* is an integer (zero based) index value into the Array of values
* specified.
*
*/
public static function info(category:String, message:String, ... rest):void
{
initLogging(); if (Log.isInfo())
{
var logger:ILogger = getLogger(category);
logger.info(generateMessage(message,rest));
}
} /**
* Logs the specified data using the <code>LogEventLevel.WARN</code> level.
* <code>LogEventLevel.WARN</code> designates events that could be harmful
* to the application operation.
*
* <p>The string specified for logging can contain braces with an index
* indicating which additional parameter should be inserted
* into the string before it is logged.
* For example "the first additional parameter was {0} the second was {1}"
* will be translated into "the first additional parameter was 10 the
* second was 15" when called with 10 and 15 as parameters.</p>
*
* @param category The category for which this log sends messages.
*
* @param message The information to log.
* This String can contain special marker characters of the form {x},
* where x is a zero based index that will be replaced with
* the additional parameters found at that index if specified.
*
* @param rest Aadditional parameters that can be subsituted in the str
* parameter at each "{<code>x</code>}" location, where <code>x</code>
* is an integer (zero based) index value into the Array of values
* specified.
*
*/
public static function warn(category:String, message:String, ... rest):void
{
initLogging(); if (Log.isWarn())
{
var logger:ILogger = getLogger(category);
logger.warn(generateMessage(message,rest));
}
} /**
* Logs the specified data using the <code>LogEventLevel.ERROR</code>
* level.
* <code>LogEventLevel.ERROR</code> designates error events
* that might still allow the application to continue running.
*
* <p>The string specified for logging can contain braces with an index
* indicating which additional parameter should be inserted
* into the string before it is logged.
* For example "the first additional parameter was {0} the second was {1}"
* will be translated into "the first additional parameter was 10 the
* second was 15" when called with 10 and 15 as parameters.</p>
*
* @param category The category for which this log sends messages.
*
* @param message The information to log.
* This String can contain special marker characters of the form {x},
* where x is a zero based index that will be replaced with
* the additional parameters found at that index if specified.
*
* @param rest Additional parameters that can be subsituted in the str
* parameter at each "{<code>x</code>}" location, where <code>x</code>
* is an integer (zero based) index value into the Array of values
* specified.
*
*/
public static function error(category:String, message:String, ... rest):void
{
initLogging(); if (Log.isError())
{
var logger:ILogger = getLogger(category);
logger.error(generateMessage(message,rest));
}
} /**
* Logs the specified data using the <code>LogEventLevel.FATAL</code>
* level.
* <code>LogEventLevel.FATAL</code> designates events that are very
* harmful and will eventually lead to application failure
*
* <p>The string specified for logging can contain braces with an index
* indicating which additional parameter should be inserted
* into the string before it is logged.
* For example "the first additional parameter was {0} the second was {1}"
* will be translated into "the first additional parameter was 10 the
* second was 15" when called with 10 and 15 as parameters.</p>
*
* @param category The category for which this log sends messages.
*
* @param message The information to log.
* This String can contain special marker characters of the form {x},
* where x is a zero based index that will be replaced with
* the additional parameters found at that index if specified.
*
* @param rest Additional parameters that can be subsituted in the str
* parameter at each "{<code>x</code>}" location, where <code>x</code>
* is an integer (zero based) index value into the Array of values
* specified.
*
*/
public static function fatal(category:String, message:String, ... rest):void
{
initLogging(); if (Log.isFatal())
{
var logger:ILogger = getLogger(category);
logger.fatal(generateMessage(message,rest));
}
} /**
* Clear all logs.
*/
public static function clear():void
{
initLogging();
_fileTarget.clear();
}
}
}

需要依赖:as3corelib库

Flex桌面AIR软件日志添加的更多相关文章

  1. Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式

    Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式 1.1. Kiosk Software广泛用于公共电脑或者嵌入系统,最常用的就是ATM机.自动服务机之类的系统了.,1 ...

  2. 给日志添加“复制”效果

    给日志添加如上效果的实现方法: 在日志编辑页面,源代码中,添加如下代码,包裹住 目标内容style1: <div class="cnblogs_code"><di ...

  3. c#桌面小软件

    这是以前练习时用c#做的桌面小软件,今天回顾下. 这是设计界面 可以看出该程序能够播放网络歌曲及浏览新闻. 实现:歌曲来源百度API,播放WindowsMediaPlayer api地址:string ...

  4. Remote Desktop Organizer远程桌面管理软件的基本使用和介绍

    <Remote Desktop Organizer>是一款用于远程桌面管理的软件.软件支持windows平台运行. Remote Desktop Organizer 是一款 Windows ...

  5. 飞雪桌面日历软件 V8.6 免费绿色版

    软件名称: 飞雪桌面日历软件软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP / Win2008软件大小: 4MB图片预览: 软件简介: ...

  6. Win7系统桌面便签怎么添加?

    参考:http://jingyan.baidu.com/article/ab69b270c207432ca7189f99.html Win7系统桌面便签怎么添加?有时候工作.学习忙起来就会忘记要办的事 ...

  7. 火狐删除配置文件 会删除目录下所有文件 切记不要把配置文件建立在桌面 恢复软件:易我数据恢复向导 9.0 DiskGenius500

    火狐删除配置文件 会删除目录下所有文件 切记不要把配置文件建立在桌面 恢复软件:易我数据恢复向导 9.0  DiskGenius500 结果:由于时间比较常 恢复文件均失败了~

  8. Python3的日志添加功能

    python日志添加功能,主要记录程序运行中的日志,统一收集并分析 一.日志的级别 debug(调试信息) info() warning(警告信息)error(错误信息) critical(致命信息) ...

  9. 强烈推荐一个和朋友远程桌面的软件teamviewer

    强烈推荐一个和朋友远程桌面的软件teamviewer个人认为:贼溜

随机推荐

  1. Django开发流程及实例

    创建虚拟环境 创建:mkvirtualenv [虚拟环境名称] 删除:rmvirtualenv [虚拟环境名称] 进入:workon [虚拟环境名称] 退出:deactivate 所有的虚拟环境,都位 ...

  2. ShopNC B2B2C多用户商城2014商业版,带微商城

    据说价值7000RMB,咱们好站长资源网友分享出来的,非常感谢分享这么好的源码.此套ShopNC B2B2C多用户商城源码是2014版的,带有微商城,源码我们安装测试基本没发现啥问题,这两天将会完全免 ...

  3. RTP 时间戳的处理

    RTP 时间戳的处理   在RTP传输音频数据时,一般选定逻辑时间戳速率与采样速率相同, 但是在传输视频数据时,必须使时间戳速率大于每帧的一个滴答(这样才能使图像回放更为平滑--<用TCP/IP ...

  4. 在xcode5下利用Source Control 做 git 项目管理

    xcode5做了很大的更新,其中一点非常实用的功能是集成了Source control项目管理,而且和git做了完美的结合:非常实用: 使用: 在新建项目时,选择 下面的 Create a git r ...

  5. 学会使用简单的MySQL操作

    第十八章 学会使用简单的MySQL操作 在前面两个章节中已经介绍过MySQL的安装了.可是光会安装还不够.还须要会一些主要的相关操作.当然了,关于MySQL的内容也是非常多的.仅仅只是对于linux系 ...

  6. 01-spring安装,hello word

    环境搭建 第一步:安装spring 可以参考这个:http://blog.csdn.net/boredbird32/article/details/50932458 安装成功后,重启后有下面这个Spr ...

  7. 自己Cookie写的自动登录功能 包含BASE64 和MD5的使用

    sql表 username  password字段 User类 有 id username password等字段 Service有一函数 @Override public User findUser ...

  8. 我眼中的PageRank算法详解

    随着互联网的发展,网络上已有的网页数量庞大,并且每天都会有很多网页发布,如何权衡这些重要度的排名是一个很重要的问题.我们今天就来了解一下PageRank算法. 首先我们要来了解一下图的概念,请看图1. ...

  9. Python 代码块左移或右移

    (就 IDE 是  PyCharm 来说) 选中代码块: 1)右移:直接 Tab 2)左移:Shift + Tab Python 对代码对齐要求很严格的. Python的对齐方式很重要,对齐方式决定了 ...

  10. linux ps查看进程命令详解

    http://linux.net527.cn/Linuxwendang/xitongguanliyuan/39094.htmlLinux操作系统PS命令详细解析 要对系统中进程进行监测控制,用 ps ...