Spark日志填坑记

1. 如何在Spark程序中加入日志?

S1:和普通的应用程序一样,想要优雅的使用日志,肯定要加入经典组合的依赖:

 
        
            org.slf4j
            slf4j-api
            1.7.21
        
        
            ch.qos.logback
            logback-classic
            1.1.2
        
        
            ch.qos.logback
            logback-core
            1.1.2
        

S2: 配置对应的properties文件

log4j.rootLogger=INFO, ServerDailyRollingFile, stdout
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.ServerDailyRollingFile.File=logs/notify-subscription.log
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n
log4j.appender.ServerDailyRollingFile.Append=true
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n

S3:进而,在程序中如此声明一个日志对象来操作日志。此时,一般的程序就可以使用logger对象愉快的打日志了。

private static final Logger logger = LoggerFactory.getLogger(App.class);

2. Spark提交任务后打不出日志??

实验发现,warn以下级别的日志根本打不出来,无论是在提交任务的客户端界面还是yarn等在线日志中,打出来的都是没啥用的Spark系统日志。反而,error等级别的日志却打出来了。

3. 问题的解决

org.apache.log4j.Logger.getLogger(FemaleInfoCollectionPrint1.class).setLevel(Level.INFO);

Spark程序中,需要主动设置日志级别!

你可能感兴趣的:(Spark日志填坑记)