清楚log的命令:echo "" > syslog
越獄環(huán)境下syslogd是ios中記錄系統(tǒng)日志的守護進程襟企。syslogd to var/log/syslog的作用是把日志寫入 var/log/syslog文件中
在安裝完syslogd這個插件后需要重啟一次ios(reboot也是一個系統(tǒng)進程),才會生成/var/log/syslog文件灶挟,在ios運行的全過程中這個文件會越來越大
可以通過cat /dev/null > /var/log/syslog來清空它
NSLog函數(shù)記錄日志對于開發(fā)人員來說很方便欺殿,對于測試人員來說很麻煩,通常記錄日志到文件惜姐,再通過email發(fā)出來掷酗,我一直覺得使用很不方便扛施。
而且又不能像android那樣連上USB,啟動DDMS就可以看日志涛菠,所見即所得莉御。
1. 配置日志服務(wù)器
日志本來是一個古老的技術(shù)撇吞,可是linux內(nèi)核就有日志服務(wù)了,那么我覺得可以直接使用linux 的syslogd服務(wù)作為日志服務(wù)器颈将。
syslogd默認配置是不支持收集遠程日志的梢夯,可以在linux 上打開 “/etc/sysconfig/syslog”配置,給SYSLOGD_OPTIONS加上 " -r " 參數(shù)即可
編輯配置文件??vi /etc/sysconfig/syslog
# Options to syslogd
# -m 0 disables 'MARK' messages.
# -r enables logging from remote machines
# -x disables DNS lookups on messages recieved with -r
# See syslogd(8) for more details
SYSLOGD_OPTIONS="-r -m 0"
# Options to klogd
# -2 prints all kernel oops messages twice; once for klogd to decode, and
#????once for processing with 'ksymoops'
# -x disables all klogd processing of oops messages entirely
# See klogd(8) for more details
KLOGD_OPTIONS="-x"
#
SYSLOG_UMASK=077
# set this to a umask value to use for all log files as in umask(1).
# By default, all permissions are removed for "group" and "other".
然后重啟日志服務(wù)?? sudo /etc/init.d/syslog restart
2. iOS 使用日志接口
iphone上也可直接syslog函數(shù)晴圾,但配置了iphone syslog服務(wù)把日志發(fā)到遠程服務(wù)器颂砸,所以不JB是不行的。更何iOS碼農(nóng)更新一直都很積極死姚。
只好另辟蹊蹺人乓。然后通過抓syslog協(xié)議的數(shù)據(jù)包,發(fā)現(xiàn)是直接以明文作為UDP包發(fā)送的都毒,那這個就好辦了色罚,不就是幾行代碼的問題么。
具體參見源碼
1
2#define LOG_SERVER_IP?????? "192.168.2.13"???? //設(shè)置你syslog服務(wù)器的IP
#define LOG_SERVER_PORT???? 514?????????????????? //設(shè)置syslog服務(wù)器的端口
然把logger.h及l(fā)ogger.m加到你的項目中账劲,在xcode的pch預(yù)編譯文件中加入 import "logger.h"即可
然后一句代都都不用寫戳护,自動把原有NSLog日志發(fā)送到遠程服務(wù)器上了
3. 查看日志
通ssh連接到日志服務(wù)器上面,通tail 命令查看日志瀑焦, grep來過濾日志內(nèi)容
1
2
3tail-f /var/log/message |grep<程序tail;
tail -f /var/log/messagrep| grep ]?&ntail(可以添加多個過濾條件)
tail -3000 /vgrepog/message [| grep <程序名>]??(顯示最近的3000條記錄)
P.S. 雖然代碼很簡單腌且,我覺得這個思路可以有助于大家測試程序,需者自取榛瓮。
假如你沒有l(wèi)inux服務(wù)器铺董,或者不會玩linux也沒有關(guān)系,可以試試windows上syslog server,http://sourceforge.net/projects/syslog-server/