FLEX Slf4Fx 日志框架使用

Flex本身自带了一套日志API,但是这个日志太死板了,针对不同操作系统,日志路径还不一样,并且日志文件中的日志每次都刷新掉了

(我是在Win7下的,之前一直找不到appData这个文件夹,后面才发现这个文件夹隐藏了)

所以后面就找到了slf4fx这个日志框架,功能还比较强大,也比较符合自己,因为自己本身是做java的,控制台一开,就像linux下那样打印日志,

它的大致流程就是,服务器开一个监听Socket的端口,然后在flex中获取sfl4fx引用,再将日志通过Socket发送到服务器,服务器再显示出来

下面是具体使用方法

下载地址:https://code.google.com/p/slf4fx/downloads/list

下载完之后解压到一个目录,如下图

这个就是slf4fx的服务器了,注意一点(你需要安装java环境,因为服务器是java开发的)

下载完之后怎么使用呢?

1.首先你可以看下lib目录下有个 slf4fx_client.swc文件,将这个文件引入到你的flashbuilder的web工程,怎么引入应该知道吧,不知道自己查下

2.然后在你的工程初始化那里加上对这个框架的支持

3.打开 slf4fx.cmd运行服务,你也可以用java -jar 目录/slf4fx-server-deps.jar运行,然后再打开你的web,就有日志打印到命令台了


上面只是说明相关步骤

下面看具体使用方法:

<?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; 
			//获取sfl4fx日志的引用
			private var _log : ILogger = Log.getLogger("org.room13.slf4fx.MyApplication"); 
			private function init() : void { 
				//myApplication是在命令台显示的应用名称
				//mySecret用于验证
				Log.addTarget(new Slf4FxLoggingTarget("myApplication", "mySecret")); 
			} 
			
			private function generateMXMLLogRecords() : void { 
				//level={0} {1} 表示后面参数在命令台的输出位置,如第一个,把{1}放在前面,那就说明
				//输出"**DEBUG**"LogEventLevel.DEBUG
				_log.debug("level={1} {0}", 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**");  
				Log.flush();
			} 
		]]>
	</fx:Script> 
	<s:HGroup>
		<s:Button label="日志输出" x="20" y="20" click="generateMXMLLogRecords()"/> 
	</s:HGroup>
</s:Application> 
你先运行 slf4fx.cmd打开服务,然后再运行程序,点击按钮,就可以在命令台看到相关输出内容了

网上仅有的几篇关于flex slf4fx日志框架的博客写的内容跟我上面差不多,但是还有一些知识,请看下面:


当我这样配置成功的时候,觉得很赞了,因为我可以看到日志了。但是没过一会儿,就提示 服务器session关闭,我还得重新开

这多难为情啊,后来看启动日志里面有句 session timeout:60 seconds,意思就是说session60秒之后就关闭了,于是在刚刚解压的哪个目录下一直翻

看下有没有什么配置文件可以配置这个session值的,真是每个文件都翻遍了,jar包里面也打开看了,硬是没找到,后来还是在slf4fx主页中找到了方法

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

java -jar slf4fx-server-deps.jar --help,可以显示上面的帮助命令,意思后面都有,就不想翻译了,英文不好

所以我们就可以 这样来运行 java -jar slf4fx-server-deps.jar -t 18000 就设置半小时吧,这下就再也不用担心session关闭了

也可以用编辑器打开slf4fx.cmd,在后面添加 -t 18000,保存,再运行,可以看到控制台的session timeout 改为18000 seconds了

再提下关于slf4fx在程序中的使用问题,在上面例子主程序中

private var _log : ILogger = Log.getLogger("org.room13.slf4fx.MyApplication"); 

大家可以把private改成public,然后在其他组件或者是as文件也可以使用,使用方法:

FlexGlobals.topLevelApplication._log.info("level={0} {1}", LogEventLevel.INFO, "log信息");

将程序部署到tomcat,日志也会发送到slf4fx服务器,所以使用还是很方便的,对于是java程序员来说。


请注明:http://blog.csdn.net/songanling/article/details/22863529

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值