Spark应用中的日志

来源:互联网 发布:火球理财java面试题 编辑:程序博客网 时间:2024/06/05 03:53
公司大牛同事的指点:
方法1. 针对Spark应用的日志,使用Spark自己的那套,extends Logging,用的时候直接用 ,如 log.info("Starting Streaming Processor."),在spark-submit时加上参数
./spark-submit --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:/opt/workspaces/apps/stream-procoessor/log4j-executor.properties",
log4j-executor.properties是自定义的日志文件:
log4j.rootCategory=INFO, console, file
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{1}: %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=/opt/workspaces/apps/stream-procoessor/logs/log.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] [%C{3}:%M:%L] %m%n
log4j.appender.file.encoding=UTF-8

log4j.logger.com.asto.dop=DEBUG
关键的两点是root是INFO级别,项目包(这里是com.asto.dop)级别用DEBUG这样可避免过多DEBUG的干扰,需要注意的是这里指定了DailyRollingFile路径,这会短路它自己的日志文件(work下的那个)即web ui上不会输入日志。

方法2.针对普通scala应用的日志,使用scala-logging-slf4j+logback,使用上很简单extends LazyLogging,然后也直接用,如logger.trace(s"Thread [${Thread.currentThread().getId}] produce log : ${message.toString}")



如果不想自定义日志文件又想改日志级别可以用编程的方式,在启动时加上Logger.getRootLogger.setLevel(Level.TRACE),但这个编程的方式好像只能改全局日志级别,如果是DEBUG的话,框架打印出来的日志很巨量,你的业务代码日志完全被淹没了…… 
0 0
原创粉丝点击