spark:将spark日志与自定义日志分开

brccelvz  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(719)

我正在尝试构建一个应用程序,它使用log4j来生成日志文件。日志文件的位置通过log4j.properties文件提供。
到目前为止,它工作得很好,但是我想将spark日志与从代码生成的日志分开。或者至少在日志文件中打印我的日志消息。
有什么办法吗?
log4j.属性


# Root logger option

log4j.rootLogger=INFO, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file

log4j.appender.file=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.file.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.file.rollingPolicy.fileNamePattern=../log/abc%d{yyyyMMdd_HHmmss}.log
    log4j.appender.file.TriggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy
log4j.appender.file.TriggeringPolicy.maxFileSize=5000000
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
llycmphe

llycmphe1#

不幸的是,我不知道如何使用属性文件。我只使用xml配置了log4j。
但是,在xml中,可以将以下内容添加到“标准”配置中:

<appender name="spark-file" class="org.apache.log4j.FileAppender">
    <param name="File" value="spark.log" />
    <param name="Append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
</appender>

这定义了一个appender,它将日志输出到一个名为spark.log的文件中。然后使用它:

<logger name="org.apache.spark" additivity="false">
    <level value="INFO" />
    <appender-ref ref="spark-file" />
</logger>

我希望在文档中查找如何将其转换为使用属性格式“不应该”会太困难。

cl25kdpy

cl25kdpy2#

您可以很容易地为不同的包定义不同的附加器,这些包要以不同的方式登录或使用不同的方法登录 log4j 附加物。
示例 log4j.properties :


# Set root logger level to DEBUG and its only appender to A1.

log4j.rootLogger=INFO, A1, sparkappender

# A1 is set to be a ConsoleAppender.

log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.

log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t]%-5p %c %x - %m%n

# org.apache.spark package will log TRACE logs

log4j.logger.org.apache.spark=TRACE, sparkappender
log4j.logger.org.spark_project.jetty=ERROR, sparkappender
log4j.additivity.org.apache.spark=false

log4j.appender.sparkappender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.sparkappender.datePattern='-'dd'.log'
log4j.appender.sparkappender.File=log/spark-logs.log
log4j.appender.sparkappender.layout=org.apache.log4j.PatternLayout
log4j.appender.sparkappender.layout.ConversionPattern=%-4r [%t]%-5p %c %x - %m%n

快速解释上述文件:
sparkappender 附加器 log4j 将所有日志记录到文件中 log/spark-logs.log . 包中的类未生成的所有日志 org.apache.spark 或者 org.apache_project.jetty 登录到控制台。这些包也有不同的日志级别,但相同的log4j appender- sparkappender 在你的例子中,你可以 file 日志追加器并定义日志级别和 sparkappenderlog4j.logger 就像上面的例子。

相关问题