日志包装类

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. <input type = "submit"> 提交方式和用js的form.submit()有什么区别?

    假设: A表单内有<input type="submit">,通过点击这个input来提交表单 B表单内没有<input type="submit&qu ...

  2. URLRewrite地址重定向的实现

    URLRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址.其优点有: (1)提高安全性,可以有效的避免一些参数名.ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规 ...

  3. [置顶] struts2+hibernate+spring整合(annotation版)

    本博文使用struts2,hibernate,spring技术整合Web项目,同时分层封装代码,包含model层,DAO层,Service层,Action层. 在整合hibernate时使用annot ...

  4. .css()与.addClass()设置样式的区别

    对于样式的设置,addClass与css方法两者之间有什么区别? 可维护性: .addClass()的本质是通过定义个class类的样式规则,给元素添加一个或多个类.css方法是通过JavaScrip ...

  5. 使用HTML5画布(canvas)生成阴影效果

    来源:GBin1.com 使用HTML5的画布特性,我们可以创建图形,在这片文章中,我们将创建图形的阴影. var canvas = document.getElementById('shadowca ...

  6. Android模糊演示样例-RenderScript-附效果图与代码

    本文链接    http://blog.csdn.net/xiaodongrush/article/details/31031411 參考链接    Android高级模糊技术    http://s ...

  7. Java调用本地接口:java.lang.UnsatisfiedLinkError

    Java调用本地接口:java.lang.UnsatisfiedLinkError 我的问题不在这篇文章描述中, 而是因为jni原来是c实现, 现在切换到cpp了, 需要在对应的cpp文件中加入ext ...

  8. java中接口与抽象类的区别

    接口和抽象类的共同特征如下: 接口和抽象类都不能被实例化,位于继承树的顶端,用于被其他类实现和继承. 接口和抽象类都可以包含抽象的方法,实现接口的类或者继承抽象类的类都必须实现这些抽象的方法. 区别: ...

  9. 解决安装完Ubuntu系统后启动项中没有Ubuntu的问题

    问题出现的原因是你没有把grub安装到硬盘的起始扇区里,按理说Ubuntu在安装的时候应该能很好的处理这个问题,但有个别电脑还是会出问题.不过我们可以通用命令解决 问题. 使用U盘进入Ubuntu系统 ...

  10. 算法笔记_078:蓝桥杯练习 最大最小公倍数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式 输入一个正整数N. 输出格式 输出一个整数,表示你 ...