syslog 越狱环境下syslogd是ios中记录系统日志的守护进程。sy...">
美文网首页NSLog
IOS日志输出工具-syslogd

IOS日志输出工具-syslogd

作者: XX开发从开始到放弃 | 来源:发表于2017-08-25 18:09 被阅读66次

    清楚log的命令:echo "" > syslog

    越狱环境下syslogd是ios中记录系统日志的守护进程。syslogd to var/log/syslog的作用是把日志写入 var/log/syslog文件中

    在安装完syslogd这个插件后需要重启一次ios(reboot也是一个系统进程),才会生成/var/log/syslog文件,在ios运行的全过程中这个文件会越来越大

    可以通过cat /dev/null > /var/log/syslog来清空它

    安装源是http://apt.saurik.com

    NSLog函数记录日志对于开发人员来说很方便,对于测试人员来说很麻烦,通常记录日志到文件,再通过email发出来,我一直觉得使用很不方便。

    而且又不能像android那样连上USB,启动DDMS就可以看日志,所见即所得。

    1. 配置日志服务器

    日志本来是一个古老的技术,可是linux内核就有日志服务了,那么我觉得可以直接使用linux 的syslogd服务作为日志服务器。

    syslogd默认配置是不支持收集远程日志的,可以在linux 上打开 “/etc/sysconfig/syslog”配置,给SYSLOGD_OPTIONS加上 " -r " 参数即可

    编辑配置文件  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".

    然后重启日志服务   sudo /etc/init.d/syslog restart

    2. iOS 使用日志接口

    iphone上也可直接syslog函数,但配置了iphone syslog服务把日志发到远程服务器,所以不JB是不行的。更何iOS码农更新一直都很积极。

    只好另辟蹊跷。然后通过抓syslog协议的数据包,发现是直接以明文作为UDP包发送的,那这个就好办了,不就是几行代码的问题么。

    具体参见源码

    1

    2#define LOG_SERVER_IP       "192.168.2.13"     //设置你syslog服务器的IP

    #define LOG_SERVER_PORT     514                   //设置syslog服务器的端口

    然把logger.h及logger.m加到你的项目中,在xcode的pch预编译文件中加入 import "logger.h"即可

    然后一句代都都不用写,自动把原有NSLog日志发送到远程服务器上了

    3. 查看日志

    通ssh连接到日志服务器上面,通tail 命令查看日志, grep来过滤日志内容

    1

    2

    3tail-f /var/log/message |grep<程序tail;

    tail -f /var/log/messagrep| grep ] &ntail(可以添加多个过滤条件)

    tail -3000 /vgrepog/message [| grep <程序名>]  (显示最近的3000条记录)

    P.S. 虽然代码很简单,我觉得这个思路可以有助于大家测试程序,需者自取。

    假如你没有linux服务器,或者不会玩linux也没有关系,可以试试windows上syslog server,http://sourceforge.net/projects/syslog-server/

    相关文章

      网友评论

        本文标题:IOS日志输出工具-syslogd

        本文链接:https://www.haomeiwen.com/subject/vkhpdxtx.html