`
bj_sunny
  • 浏览: 26666 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex日志框架slf4fx使用浅谈

阅读更多
  Flex中自带有自己的日志功能,但是限制比较多比如:日志路径不能修改,在重新加载flex程序时日志文件的会被清空。针对这两个要求公司内部采用了SLF4FX日志框架。
    此组件的下载路径及介绍见 http://code.google.com/p/slf4fx/;
使用说明:
   第一步:
将slf4fx-1.11-bin解压放在任意目录下,将slf4fx-1.11-bin\lib目录下的slf4fx_client.swc文件引入到项目中。
第二部:启动服务,路径\slf4fx-1.11-bin\slf4fx.cmd.
第三部:
编写示例:
MXML文件:
 
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"  initialize="init()">	
	<fx:Script>
		<![CDATA[ 
			import logging.Logging;
			import mx.logging.ILogger;
			import mx.logging.Log;
			import mx.logging.LogEventLevel;
			import org.room13.slf4fx.Slf4FxLoggingTarget; 
		private var _log : ILogger = Log.getLogger("org.room13.slf4fx.MyApplication"); 
		private function init() : void { 
			Log.addTarget(new Slf4FxLoggingTarget("myApplication", "mySecret")); 
		} 
		 
		private function generateMXMLLogRecords() : void { 
			_log.debug("level={0} {1}", LogEventLevel.DEBUG, "**DEBUG**"); 
			_log.info("level={0} {1}", LogEventLevel.INFO, "**INFO**"); 
			_log.warn("level={0} {1}", LogEventLevel.WARN, "**WARN**"); 
			_log.error("level={0} {1}", LogEventLevel.ERROR, "**ERROR**"); 
			_log.fatal("level={0} {1}", LogEventLevel.FATAL, "**FATAL**");   
		} 
		private function generateASLogRecords() : void { 
			var obj:Logging=new Logging();
			obj.loggdebug();  
		} 
	]]>
	</fx:Script> 
	<s:HGroup>
		<s:Button label="mxml日志输出" x="20" y="20" click="generateMXMLLogRecords()"/> 
		<s:Button label="as日志输出" x="20" y="20" click="generateASLogRecords()"/> 
	</s:HGroup>
</s:Application> 

AS文件:
package logging
{
	import mx.logging.ILogger;
	import mx.logging.Log;
	import mx.logging.LogEventLevel;
	
	import org.room13.slf4fx.Slf4FxLoggingTarget; 
	
	public class Logging
	{
		private var _log:ILogger;
		public function Logging()
		{
			_log= Log.getLogger("org.room13.slf4fx.MyApplication"); 
			Log.addTarget(new Slf4FxLoggingTarget("myApplication", "mySecret")); 
		}
		public function loggdebug():void{
			//第一个参数用于设定输出顺序
			_log.debug("级别={0} {1}",LogEventLevel.DEBUG,"测试========33=============");
			//输出完毕后使用此方法清除所有记录程序记录,否则打印重复
			Log.flush();
		}
		
	}
}


启动程序点击按钮,日志将记录在\slf4fx-1.11-bin\slf4fx-client.log日志文件中。
日志的级别有:DEBUG,INFO,WARN,ERROR,FATAL,可以根据个人的需要进行设置。输出结果见点击“mxml日志输出”按钮后的输出结果。
注意:使用日志打印后需要调用flush()方法进行清理,否则输出数据重复。

如上述内容有误情况,望给出指正,也希望使用过Flex其他日志的朋友可以给出更好的推荐。

    
分享到:
评论
3 楼 niweiwei 2011-08-21  
这个服务器端如何集成到自己的应用程序中去,而不需要去手动的启动那个cmd窗口,谢谢
2 楼 liushen8002 2010-07-26  
能否在xml里配置slf4fx?我只找到了在命令行行配置,如下
Configuration is also easy - just provide additional options in server command line. The command java -jar slf4fx-server-deps.jar --helpprints list of available options

usage: java -jar slf4fx-server.jar [OPTIONS]
SLF4Fx simple server
-b,--bind <ADDRESS[:PORT]>        bind SLF4Fx server to this address
-d,--disable-policy               disable any socket policy for Adobe Flash
                                   Player
-h,--help                         print this message
-k,--known-applications <FILE>    known applications descriptor file(one pair
                                   APPLICATION=SECRET per line)
-p,--policy-file <FILE>           socket policy file for Adobe Flash Player
-r,--reader-buffer-size <BYTES>   protocol decoder buffer size
-t,--session-timeout <TIMEOUT>    session timeout in seconds
1 楼 liushen8002 2010-07-26  
您好!我初学Flex,对日志不是很清楚,slf4fx怎么配置服务器和端口号?怎么模块化?

相关推荐

Global site tag (gtag.js) - Google Analytics