【问题标题】:xmppframework - enable log for send / receivexmppframework - 启用发送/接收日志
【发布时间】:2014-06-25 17:53:31
【问题描述】:

我正在使用 iOS 中的 xmppframework 开发聊天应用程序。该框架包含为 xml 打印发送和接收日志的示例演示。现在我在我的应用程序中实现了相同的东西,但没有显示日志。

示例应用的日志示例

2014-05-08 16:34:15:993 iPhoneXMPP[4839:1403] SEND: <?xml version='1.0'?>
2014-05-08 16:34:15:994 iPhoneXMPP[4839:1403] SEND: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' to='meinantrieb.net'>
2014-05-08 16:34:16:384 iPhoneXMPP[4839:3503] RECV: <stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" id="1364620848" from="meinantrieb.net" version="1.0" stream1:lang="en"/>
2014-05-08 16:34:16:384 iPhoneXMPP[4839:3503] RECV: <stream:features xmlns:stream="http://etherx.jabber.org/streams"><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>SCRAM-SHA-1</mechanism><mechanism>ANONYMOUS</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism></mechanisms><c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.process-one.net/en/ejabberd/" ver="GgBjinftMQ4H81m+4jSVXMg/dVU="/><register xmlns="http://jabber.org/features/iq-register"/></stream:features>

在 AppDelegate.m 中添加日志的代码

#import "DDLog.h"
#import "DDTTYLogger.h"

// 日志级别:off、error、warn、info、verbose
#如果调试
静态常量 int ddLogLevel = LOG_LEVEL_VERBOSE;
#别的
静态常量 int ddLogLevel = LOG_LEVEL_INFO;
#endif
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Configure logging framework
    [DDLog addLogger:[DDTTYLogger sharedInstance]];
}

任何帮助或建议将不胜感激。

【问题讨论】:

  • 您是否真的在执行任何应该打印到日志的 XMPP 操作?您的设置似乎正确。
  • 是的。我已经使用 cocoapods 添加了 CocoaLumberjack 库
  • 我的意思是连接到 xmpp 服务器,发送消息或类似的东西。否则日志中不会显示任何内容
  • 是的。我想打印在服务器和客户端之间发送/接收的 xml 字符串

标签: ios xmppframework


【解决方案1】:

用这一行替换配置日志框架的代码

[DDLog addLogger:[DDTTYLogger sharedInstance] withLogLevel:XMPP_LOG_FLAG_SEND_RECV]

复制自XMPPFramework的demo代码

【讨论】:

    【解决方案2】:

    在 Swift 3.x 中,DDLog 日志级别是一个枚举,因此无法立即应用 XMPPFramework 日志级别。

    可以启用所有日志消息:

    DDLog.add(DDTTYLogger.sharedInstance, with: .all)
    

    【讨论】:

    • 开启所有日志后是否会开启XMPP_LOG_FLAG_SEND_RECV?
    • @FlorisM 我猜是这样,我看到了这样的日志消息。但是,我不能 100% 确定 XMPPFramework 对 DDTTYLogger 的 hacky (?) 扩展如何转换为 Swift。
    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2013-05-06
    • 1970-01-01
    • 2011-10-03
    • 2023-03-31
    • 2012-02-11
    • 2020-01-18
    • 1970-01-01
    相关资源
    最近更新 更多