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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章