Flex桌面AIR软件日志添加
日志包装类
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软件日志添加的更多相关文章
- Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式
Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式 1.1. Kiosk Software广泛用于公共电脑或者嵌入系统,最常用的就是ATM机.自动服务机之类的系统了.,1 ...
- 给日志添加“复制”效果
给日志添加如上效果的实现方法: 在日志编辑页面,源代码中,添加如下代码,包裹住 目标内容style1: <div class="cnblogs_code"><di ...
- c#桌面小软件
这是以前练习时用c#做的桌面小软件,今天回顾下. 这是设计界面 可以看出该程序能够播放网络歌曲及浏览新闻. 实现:歌曲来源百度API,播放WindowsMediaPlayer api地址:string ...
- Remote Desktop Organizer远程桌面管理软件的基本使用和介绍
<Remote Desktop Organizer>是一款用于远程桌面管理的软件.软件支持windows平台运行. Remote Desktop Organizer 是一款 Windows ...
- 飞雪桌面日历软件 V8.6 免费绿色版
软件名称: 飞雪桌面日历软件软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP / Win2008软件大小: 4MB图片预览: 软件简介: ...
- Win7系统桌面便签怎么添加?
参考:http://jingyan.baidu.com/article/ab69b270c207432ca7189f99.html Win7系统桌面便签怎么添加?有时候工作.学习忙起来就会忘记要办的事 ...
- 火狐删除配置文件 会删除目录下所有文件 切记不要把配置文件建立在桌面 恢复软件:易我数据恢复向导 9.0 DiskGenius500
火狐删除配置文件 会删除目录下所有文件 切记不要把配置文件建立在桌面 恢复软件:易我数据恢复向导 9.0 DiskGenius500 结果:由于时间比较常 恢复文件均失败了~
- Python3的日志添加功能
python日志添加功能,主要记录程序运行中的日志,统一收集并分析 一.日志的级别 debug(调试信息) info() warning(警告信息)error(错误信息) critical(致命信息) ...
- 强烈推荐一个和朋友远程桌面的软件teamviewer
强烈推荐一个和朋友远程桌面的软件teamviewer个人认为:贼溜
随机推荐
- tensorflow c++ API加载.pb模型文件并预测图片
tensorflow python创建模型,训练模型,得到.pb模型文件后,用c++ api进行预测 #include <iostream> #include <map> # ...
- 批处理命令中set定义的两种变量介绍 计算机基础知识
摘自: http://www.amhl.net/wenzhang/DianNaoChangShi/20101201/127422.html 所谓的自定义变量,就是由我们来给它赋予值的变量. ①赋值变量 ...
- python安装包是出现错误解决
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed/limits.h:168:61: fatal error: limits.h: No such file ...
- Razor语法(二)
I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境 ...
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
http://blog.163.com/kingmax_res/blog/static/77282442201031712216508/ 先介绍一些基本函数(具体用法自己查文档):---------- ...
- mysql创建用户、授权,revoke
use mysql;set password for root =password('haowumz');select host,user,password from user ;show gran ...
- js实现回放拖拽轨迹-------Day48
今天有点小高兴,csdn博客浏览量过万了,在过去还从来没有过这么高的浏览量呢.不得不说.太多时候还是有些矫情.可看到这些鼓舞还是忍不住高兴啊,至少,这样让我有一种行内人员的感觉,吾道不孤啊. 闲话不多 ...
- javascript Date日期类
四.Date日期类 迁移时间:2017年5月27日18:43:02 Author:Marydon (一)对日期进行格式化(日期转字符串) 自定义Date日期类的format()格式化方法 方式一: ...
- struts 类型转换器
类型转换 (来自尚学堂) a) 默认转换 i. 日期处理 b) 写自己的转换器: public class MyPointConverter extends Defau ...
- AngularJS实现简单的分页功能
本篇文章由:http://xinpure.com/angularjs-simple-paging-functionality/ 初学 AngularJS, 尝试着写一些小功能 代码逻辑写得略粗糙,仅仅 ...