首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将消息写入AWS Glue上的输出日志?

如何将消息写入AWS Glue上的输出日志?
EN

Stack Overflow用户
提问于 2018-02-21 19:51:48
回答 7查看 42.6K关注 0票数 35

默认情况下,AWS作业日志输出和两个不同的CloudWatch日志( /aws-glue/jobs/error/aws-glue/jobs/output )的错误。当我在脚本中包含用于调试的print()语句时,它们会被写入错误日志(/aws-glue/jobs/error)。

我试过使用:

代码语言:javascript
复制
log4jLogger = sparkContext._jvm.org.apache.log4j 
log = log4jLogger.LogManager.getLogger(__name__) 
log.warn("Hello World!")

但是“你好世界!”没有出现在我运行的测试任务的任何日志中。

有人知道如何将调试日志语句写入输出日志(/aws-glue/jobs/output)吗?

蒂娅!

编辑:

事实证明,上述事实确实有效。发生的情况是,我在AWS Glue脚本编辑器窗口中运行该作业,该窗口捕获Command-F键组合,并且只在当前脚本中进行搜索。因此,当我试图在页面中搜索日志输出时,它似乎没有被记录。

注意:通过测试第一个响应者的建议,我发现AWS Glue脚本似乎没有输出任何级别低于警告的日志消息!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-02-22 07:12:25

尝试使用来自logging模块的内置python记录器,默认情况下它会将消息写入标准输出流。

代码语言:javascript
复制
import logging

MSG_FORMAT = '%(asctime)s %(levelname)s %(name)s: %(message)s'
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
logging.basicConfig(format=MSG_FORMAT, datefmt=DATETIME_FORMAT)
logger = logging.getLogger(<logger-name-here>)

logger.setLevel(logging.INFO)

...

logger.info("Test log message")
票数 29
EN

Stack Overflow用户

发布于 2019-07-09 11:29:17

我知道这篇文章并不新鲜,但可能会对某些人有所帮助:对我来说,登录胶水可以使用以下代码行:

代码语言:javascript
复制
# create glue context
glueContext = GlueContext(sc)
# set custom logging on
logger = glueContext.get_logger()
...
#write into the log file with:
logger.info("s3_key:" + your_value)
票数 28
EN

Stack Overflow用户

发布于 2020-04-26 21:42:19

我注意到上面的答案是用python写的。对于Scala,您可以执行以下操作

代码语言:javascript
复制
import com.amazonaws.services.glue.log.GlueLogger

object GlueApp {
  def main(sysArgs: Array[String]) {
    val logger = new GlueLogger
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
  }
}

您可以从官方的这里文档中找到Python解决方案。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48914324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档