当前位置:  开发笔记 > 编程语言 > 正文

我应该使用哪个记录器来获取Cloud Logging中的数据

如何解决《我应该使用哪个记录器来获取CloudLogging中的数据》经验,为你挑选了1个好方法。

我正在使用Cloud Dataproc运行PySpark作业,并希望使用loggingPython模块记录信息.目标是将这些日志推送到Cloud Logging.

从这个问题,我了解到我可以通过向流畅的配置添加日志文件来实现这一点,该配置位于/etc/google-fluentd/google-fluentd.conf.

但是,当我查看日志文件时/var/log,我找不到包含我的日志的文件.我已经尝试使用默认的python记录器和'py4j'记录器.

logger = logging.getLogger()
logger = logging.getLogger('py4j')

任何人都可以了解我应该使用哪个记录器,以及应该将哪个文件添加到流畅的配置中?

谢谢



1> 小智..:

TL;博士

现在不支持本机,但将在Cloud Dataproc的未来版本中本机支持.也就是说,在此期间有一个手动解决方法.

解决方法

首先,确保将python日志从spark上下文发送到正确的log4j记录器.为此,请将您的记录器声明为:

import pyspark
sc = pyspark.SparkContext()
logger = sc._jvm.org.apache.log4j.Logger.getLogger(__name__)

第二部分涉及一种原生支持的解决方法.如果你看下面的spark属性文件

/etc/spark/conf/log4j.properties

在群集的主服务器上,您可以看到如何为spark配置log4j.目前它看起来如下:

# Set everything to be logged to the console
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Settings to quiet third party logs that are too verbose
...

请注意,这意味着log4j日志仅发送到控制台.dataproc代理将获取此输出并将其作为作业驱动程序输出返回.但是,为了能够流畅地获取输出并将其发送到Google Cloud Logging,您需要使用log4j写入本地文件.因此,您需要修改log4j属性,如下所示:

# Set everything to be logged to the console and a file
log4j.rootCategory=INFO, console, file
# Set up console appender.
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Set up file appender.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/var/log/spark/spark-log4j.log
log4j.appender.file.MaxFileSize=512KB
log4j.appender.file.MaxBackupIndex=3
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Settings to quiet third party logs that are too verbose
...

如果您将文件设置为/var/log/spark/spark-log4j.log,如上所示,Dataproc群集上的默认流畅配置应该将其拾取.如果您想将文件设置为其他内容,可以按照此问题中的说明轻松获取该文件.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有