我试图建立一个应用程序,使用log4j使日志文件。日志文件的位置通过log4j.properties文件提供。
到目前为止,它运行良好,但我想将spark日志与我从代码生成的日志分开。或者至少在日志文件中打印我的日志消息。
有办法吗?
log4j.properties
# 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
不幸的是,我不知道如何使用属性文件。我只使用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的文件中。日志然后使用它:
<logger name="org.apache.spark" additivity="false">
<level value="INFO" />
<appender-ref ref="spark-file" />
</logger>
我希望通过文档了解如何将其转换为属性格式“不应该”太难。
您可以轻松地为不同的包定义不同的appender,这些包需要以不同的方式登录,或者使用不同的log4j
appender。
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
appenderlog4j
将所有日志记录到文件log/spark日志中。日志
。包org中非类生成的所有日志。阿帕奇。spark
或组织。apache_项目。jetty
已登录控制台。这些包也有不同的日志级别,但相同的log4j appender-sparkappender
在您的示例中,您可以保留file
log appender,并定义日志级别和sparkappender
到log4j。记录器
如上述示例所示。
从其他问题中,我发现WebSphere和Spark都在内部使用SLF4J。如何防止Spark中的SLF4J通过自身重定向来自其他应用程序的所有日志记录? 我使用的是WebSphere Application Server V8.5.5.6和Apache Spark V1.4.1 CHD4二进制发行版。
请帮助我plz为Apache日志添加一个自定义部分,我希望在Apache access中获得以下代码片段的结果。日志,不仅在UI上: 现在我有以下的外出日志 (IP)-[24/Apr/2016:16:55:31 0000]“GET/tt.php?cmd=ls HTTP/1.1“200 331”-“Mozilla/5.0(Macintosh;英特尔Mac OS X 10_10_5)AppleWebK
问题内容: 使用pyspark on访问Spark的log4j记录器的正确方法是什么 遗嘱执行人? 在驱动程序中这样做很容易,但我似乎不明白如何访问 executor上的日志记录功能,以便我可以在本地进行日志记录并 纱线收集当地的原木。 有什么方法可以访问本地记录器吗? 标准的日志记录过程是不够的,因为我无法访问spark 执行器的上下文。 问题答案: 不能对执行器使用本地log4j记录器。Pyt
日志采集配置 在应用详情页中间有一个叫作“日志采集”的模块 点击右边的“添加”按钮,在弹出的对话框中选择日志的路径及正则规则 文件路径:你日志文件的位置 日志规则:如果没有特殊需求的话默认就好 提交后服务会自动重启动。 日志采集 如果配置了上面采集器,那么它会向服务所在的Pod注入一个Filebeat采集器对应用服务的业务日志进行采集。把采集到的日志入到kafka集群,然后logstash进行消息
问题内容: 我是ELK堆栈的新手。我有一个文件拍服务,将日志发送到logstash,并在logstash中使用过滤器,将数据推送到索引。 我正在使用筛选器来解析数据。 我的问题是,我希望将字段名称及其值存储在elasticsearch索引中。我的日志的不同版本如下: 我想要的弹性索引字段如下: client_ip => type必须与kibana用于IP映射的内容兼容。 时间戳=>日期时间格式。=
我有一个要求,其中写入日志文件的日志条目需要具有特定格式。 例如: 2016-01-28 21:42:48,399 INFO field d1: value e1;字段2: value e2;字段3: value e3;字段4: value e4 我们正在使用日志返回进行日志记录。字段的值存储在 java 对象中。有关如何使用自定义附加器/布局或任何其他方法实现这一点的任何建议或指针都将有很大的帮