默认情况下,AWS作业日志输出和两个不同的CloudWatch日志( /aws-glue/jobs/error和/aws-glue/jobs/output )的错误。当我在脚本中包含用于调试的print()语句时,它们会被写入错误日志(/aws-glue/jobs/error)。
我试过使用:
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脚本似乎没有输出任何级别低于警告的日志消息!
发布于 2018-02-22 07:12:25
尝试使用来自logging模块的内置python记录器,默认情况下它会将消息写入标准输出流。
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")发布于 2019-07-09 11:29:17
我知道这篇文章并不新鲜,但可能会对某些人有所帮助:对我来说,登录胶水可以使用以下代码行:
# 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)发布于 2020-04-26 21:42:19
我注意到上面的答案是用python写的。对于Scala,您可以执行以下操作
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解决方案。
https://stackoverflow.com/questions/48914324
复制相似问题