【问题标题】:heroku deploy with Log4Jheroku 使用 Log4J 部署
【发布时间】:2013-12-13 01:48:49
【问题描述】:

是否可以在启用 Log4J 的情况下将基于 Java 的应用程序部署到 Heroku?根据他们的docs

任何写入标准输出 (stdout) 或标准错误 (stderr) 的内容 被捕获到您的日志中。这意味着您可以从任何地方登录 在您的应用程序代码中使用简单的输出语句。

在 Ruby 中,你可以使用类似的东西:

puts "Hello, logs!"

在 Java 中:

System.err.println("Hello, logs!"); 
System.out.println("Hello, logs!");

【问题讨论】:

    标签: java logging heroku


    【解决方案1】:

    这实际上取决于您想要执行哪种日志记录(或您尝试使用的附加程序)。请注意,由于 Heroku 的 ephemeral filesystemfile 附加程序将毫无用处。但是,我假设附加到 stdout 也会输出到您的 Heroku 日志,因为您给出的原因。

    这是一个名为 Airbrake 的附加组件上的 Heroku 文档,它充当 Log4J 的附加器: https://devcenter.heroku.com/articles/airbrake#java

    编辑:我已经测试了记录到标准输出,它确实记录到 Heroku 日志。

    我的log4j.properties,如果你有兴趣(相当标准):

    log4j.rootLogger= error, stdout
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%p @ %l > %m%n
    

    【讨论】:

    • 值得注意的是:Heroku 鼓励应用程序遵循“12 因子”设计,该设计特别呼吁将日志记录到标准输出(请参阅12factor.net/logs)。这个想法是,这样更容易将日志信息聚合到单个流中 - 跨服务器和服务。
    猜你喜欢
    • 2013-06-20
    • 2013-07-16
    • 2011-06-05
    • 2017-08-28
    • 1970-01-01
    • 2014-08-25
    • 2021-08-12
    • 2015-11-13
    • 2017-10-17
    相关资源
    最近更新 更多