TL; DR是否有可能在不破坏所有日志的情况下抑制单个Spark日志消息?
我正在EMR上运行火花流作业,并获得日志消息,如:
17/08/17 21:09:00信息任务集经理:在ip-172-31-37-216上以17毫秒的时间完成了5259.0阶段(TID 315581)中的任务101.0。ec2。内部(107/120)17/08/17 21:09:00信息映射分区DD:从持久性列表中删除RDD 31559 17/08/17 21:09:00信息DAG计划程序:作业2629已完成:StreamingSparkJob处的foreachPartition。scala:52,采取0.080085 s 17/08/17 21:09:00信息调度程序:结果阶段5259(StreamingSparkJob.scala:52)在0.077 s 17/08/17 21:09:00完成信息作业调度程序:总延迟:0.178 s时间1503004140000 ms(执行:0.084 s)
在开发的这个阶段,没有一个是有用的,它掩盖了我的应用程序故意发出的真实日志。我想阻止Spark发出这些日志消息,或者禁止它们的记录。
AWS客户支持和各种答案(例如)表明,这可以通过在集群创建时传递一些JSON配置来实现。然而,由于这是一个流式作业(理想情况下,群集将永远保持不变,并且只是被重新部署到),我想找到一些方法来通过火花提交
选项来配置它。
其他回复(例如)表明,这可以通过提交log4j来实现。属性
设置log4j的文件。rootCategory=WARN,
我注意到这里的最后一段说“Spark使用log4j进行日志记录。您可以通过在
conf
目录中添加log4j.properties
文件来配置它。一种开始的方法是复制位于那里的现有log4j.properties.template
。”。我将对此进行实验,看看这是否会抑制填充日志的INFO
日志。但是,这仍然不是一个理想的解决方案,因为Spark发出的一些INFO
日志非常有用,例如,当它记录每个流式迭代从S3中拾取的文件数时。因此,我理想的选择是:
配置标志,可以切换到禁用Spark日志消息的特定类,而不会抑制所有INFO
日志
- 一个"抑制与此正则表达式匹配的所有日志记录"选项,我们可以根据需要更新该选项以过滤掉我们不感兴趣的消息
这两种情况都存在吗?
(为了解决可能的响应-我不愿意只从我自己的应用程序在
WARN
及更高版本发出日志)
您可以通过log4j中的记录器namesparce来控制日志。属性,下面是一个示例:
log4j.rootLogger=WARN, console
# add a ConsoleAppender to the logger stdout to write to the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# use a simple message format
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# set the log level for these components
log4j.logger.org.apache.spark=WARN
log4j.logger.org.spark-project=ERROR
log4j.logger.org.apache.hadoop=ERROR
log4j.logger.io.netty=ERROR
log4j.logger.org.apache.zookeeper=ERROR
问题内容: 我需要从Graylog删除特定的日志消息,但是似乎没有任何公共API可以做到这一点(由Graylog API浏览器进行)。 关于如何执行此操作的文档很少。我发现一些随机文章暗示可以通过curl和查询API来实现,但是没有实质性意义。 鉴于可以通过“ http://1.2.3.4:5678 ” 访问灰色日志,并且我在索引“ graylog_0”中收到一条ID为“ 94c84300-d3c
问题内容: 所以我有以下格式的日志消息: 现在,我想删除所有不包含特定字符串“ xyz”的日志,并保留其余所有日志。我也想索引时间戳。 grokdebug没有太大帮助。 这是我的尝试: 我是新手,所以上面的模式可能没有意义。请帮忙。 问题答案: 要删除不包含字符串的消息: 您的骗子模式没有抓住日志的日期部分。 一旦在grok模式中有一个包含日期的字段,就可以在该字段上调用日期过滤器。 因此,您的g
在我的Android应用程序中,我收到使用Firebase发送的消息,问题不是所有消息都到达,有时消息到达非常慢。 在我的服务器端,我跟踪我发送到FCM的消息,我总是收到成功:来自FCM的1个响应,仍然有我在Android应用程序中没有收到的消息。 我认为FCM消息日志在上面描述的情况下会有很大的帮助,但我不确定是否存在此选项。 有办法浏览Firebase消息日志吗?
我试图建立一个应用程序,使用log4j使日志文件。日志文件的位置通过log4j.properties文件提供。 到目前为止,它运行良好,但我想将spark日志与我从代码生成的日志分开。或者至少在日志文件中打印我的日志消息。 有办法吗? log4j.properties
我试图将日志文件索引到弹性搜索。所有日志条目都被索引到一个名为消息的字段中。@时间戳字段显示条目被索引的时间,而不是日志条目的时间戳。 我用grok processor创建了一个摄取管道来定义日志条目的模式。我尝试了几种模式,但都无法实现,尤其是因为我是新手。 日志样本 用grok吞食管道 我想要的就是能够从日志消息中提取时间戳,其他所有内容都可以被忽略、通配符或存储在一个变量中,比如消息。因此,
嗨,我已经在不和谐的py日志删除消息,但现在它是这样的,当消息被删除的机器人什么都没有显示,我可以以某种方式使没有消息发送时,机器人删除消息