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
FLEX Slf4Fx 日志框架使用,布布扣,bubuko.com
原文:http://blog.csdn.net/songanling/article/details/22863529