【问题标题】:Prevent twitter4j from printing output when displaying a Twitter stream显示 Twitter 流时防止 twitter4j 打印输出
【发布时间】:2014-12-17 22:27:07
【问题描述】:

如果不让 twitter4j 将所有内容打印到控制台输出,我将如何使用 twitter4j 获取实时 Twitter 提要(或 Twitter 提供的任何部分,占我听到的 1%)?虽然我最初认为这意味着必须关闭日志记录,但尝试关闭日志记录并没有帮助。我更喜欢“代码内”解决方案,而不是需要我传递 VM 参数的解决方案。

我面临的问题的 SSCCE 是:

import twitter4j.*;

public class StreamTweets {    
    public static void main(String[] args) {            
        StatusListener listener = new StatusListener(){
            public void onStatus(Status status) {
                // do whatever I want here
            }
            public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {}
            public void onTrackLimitationNotice(int numberOfLimitedStatuses) {}
            public void onException(Exception ex) {
                ex.printStackTrace();
            }
            public void onScrubGeo(long arg0, long arg1) {}
            public void onStallWarning(StallWarning arg0) {}
        };

        TwitterStream twitterStream = new TwitterStreamFactory().getInstance();
        twitterStream.addListener(listener);
        twitterStream.sample();
    }
}

注意:无论我需要做什么,包括将所有内容存储到数据库中,我都将在 StatusListener() 的 onStatus() 方法中进行。不确定这是否非常相关,但我想我会把它放在那里以防万一。

【问题讨论】:

  • 所以只是为了确认一下:使用 vm arg -Dtwitter4j.loggerFactory=twitter4j.NullLoggerFactory 运行后,您仍然看到一些控制台输出吗?请问可以在问题中添加输出示例吗?谢谢。

标签: java twitter twitter4j


【解决方案1】:

如果您通过 twitter4j.properties 提供 Twitter 凭据,如提到的 here,则将 twitter4j.properties 文件的第一行更改为

debug=false

这将在接收 Twitter 流时停止打印到控制台!

【讨论】:

  • 这行得通。记得把debug设置为‘false’后刷新项目(右键项目名->刷新),这样‘twitter4j.properties’的内容就会重新加载。
  • 是否必须使用twitter4j.properties 才能使其工作?我正在使用ConfigurationBuilder,但它不起作用。也没有添加属性文件...
  • @hello_its_me 即使在使用 twitter4j.properties 文件后我也遇到了同样的问题。为我解决的问题是正确配置日志记录。我为此使用了logback。我的猜测是,如果未配置日志记录,则 twitter 流默认为它所做的所有事情都使用标准输出。
猜你喜欢
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 2018-12-14
相关资源
最近更新 更多