【问题标题】:Logentries + AWS incompatbilityLogentries + AWS 不兼容
【发布时间】:2014-09-23 04:11:09
【问题描述】:

我正在使用 Wildfly(和 maven)开发 Java Web 应用程序,我想将 logentries 与 Logback 一起使用,如 https://logentries.com/doc/java/#logback 中所述。

我也在使用 AWS SDK 进行一些操作,这似乎是 logentries 和 AWS SDK 之间的不兼容。

如果我删除 aws-java-sdk (1.7.11) logentries 就像一个魅力。但是一旦我添加它,我就会收到以下错误:

14:36:25,329 INFO  [stdout] (default task-32) DEBUG: JavaMail version 1.5.1
14:36:25,330 INFO  [stdout] (default task-32) DEBUG: URL vfs:/home/lucasferreira/Desenvolvimento/2.Servidores/wildfly-8.1.0.Final/standalone/deployments/server-1.0-SNAPSHOT.war/WEB-INF/lib/aws-java-sdk-1.7.11.jar/META-INF/javamail.providers
14:36:25,330 INFO  [stdout] (default task-32) DEBUG: Bad provider entry: 
14:36:25,330 INFO  [stdout] (default task-32) DEBUG: successfully loaded resource: vfs:/home/lucasferreira/Desenvolvimento/2.Servidores/wildfly-8.1.0.Final/standalone/deployments/server-1.0-SNAPSHOT.war/WEB-INF/lib/aws-java-sdk-1.7.11.jar/META-INF/javamail.providers
14:36:25,331 INFO  [stdout] (default task-32) DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
14:36:25,331 INFO  [stdout] (default task-32) DEBUG: Tables of loaded providers
14:36:25,331 INFO  [stdout] (default task-32) DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], com.amazonaws.services.simpleemail.AWSJavaMailTransport=javax.mail.Provider[TRANSPORT,aws,com.amazonaws.services.simpleemail.AWSJavaMailTransport,Amazon Web Services LLC]}
14:36:25,331 INFO  [stdout] (default task-32) DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], aws=javax.mail.Provider[TRANSPORT,aws,com.amazonaws.services.simpleemail.AWSJavaMailTransport,Amazon Web Services LLC]}
14:36:25,332 INFO  [stdout] (default task-32) DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map

14:36:25,339 INFO  [stdout] (default task-32) 14:36:25.338 [default task-32] INFO  logentries - Test message

我的logentries帐户没有收到该消息。

经过一番研究,我发现亚马逊 SDK 与 javamail 配置混在一起,并且在过去有一些问题 (http://www.thebuzzmedia.com/javamail-smtp-on-localhost-fails-with-amazon-aws-sdk-in-classpath/)。 我可以采用任何解决方法或修复方法吗?这是 AWS SDK 问题还是 logentries 问题?

【问题讨论】:

    标签: java amazon-web-services jakarta-mail logentries


    【解决方案1】:

    假设 AWS 分析是正确的(听起来是正确的),您应该能够通过明确要求“smtp”传输并使用它来发送您的消息来解决此问题。 This JavaMail FAQ entry 展示了基本方法。

    【讨论】:

    • 该解决方案的问题是我不直接调用 jamail。我调用了一个配置为使用 logentries 的日志函数,并且内部 logentries 使用 javamail 将我的数据发送到他们的服务器。所以我无权访问该代码来明确要求 smtp。
    • 只是添加了一个使用我自己制作的 jamail 函数的解决方案的概念测试确实有效,从而证实了 AWS 确实与 javamail 配置混淆的假设,尽管他们应该已经修复了它。更新日志。
    【解决方案2】:

    我从 Logentries 支持工程师那里得到了答复:


    斯蒂芬·海因斯 (Logentries) 9 月 22 日 12:04 下午

    嗨卢卡斯,

    在我们进一步研究此问题时,我们可以采取以下解决方法。我们可以登录到文件并使用我们的代理 (https://logentries.com/doc/agent/) 将日志发送到 Logentries。否则我们可以做的是使用另一个 API 将日志发送到 Logentries。此 API 目前没有文档记录,但是如果您想尝试,可以按照示例进行操作(参见此处 https://github.com/BrightcoveOS/Diamond/blob/master/src/diamond/handler/logentries_diamond.py#L91

    本质上,您向给定地址发送 POST 请求,该地址使用您的日志令牌作为 URL 的一部分。然后,您需要确保将日志包含在包含字段“事件:”的 JSON 对象中。如果你不这样做,你会得到一个错误(但是日志仍然会通过)。

    问候, 斯蒂芬

    支持工程师


    Post 解决方案通过在 events 字段中添加信息来发挥作用。

    发帖到https://js.logentries.com/v1/logs/logentries_TOKEN

    在正文中使用以下 JSON:

      {
        "event":{
          "key":"value",
          "key2":"value2",
          "key3" : "value3"
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2021-05-28
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多