Sure, /opt/flink/conf is mounted as a volume from the configmap.

Best
Yun Tang

From: Li Peng <li.p...@doordash.com>
Date: Wednesday, December 11, 2019 at 9:37 AM
To: Yang Wang <danrtsey...@gmail.com>
Cc: vino yang <yanghua1...@gmail.com>, user <user@flink.apache.org>
Subject: Re: Flink on Kubernetes seems to ignore log4j.properties

1. Hey Yun, I'm calling /opt/flink/bin/standalone-job.sh and 
/opt/flink/bin/taskmanager.sh on my job and task managers respectively. It's 
based on the setup described here: 
http://shzhangji.com/blog/2019/08/24/deploy-flink-job-cluster-on-kubernetes/ . 
I haven't tried the configmap approach yet, does it also replace the conf files 
in /opt/flink/conf?

2. Hey Vino, here's a sample of the kubernetes: https://pastebin.com/fqJrgjZu  
I didn't change any patterns from the default, so the string patterns should 
look the same, but as you can see it's full of info checkpoint logs that I 
originally was trying to suppress. Based on my log4j.properties, the level 
should be set to WARN. I couldn't actually find any .out files on the pod, this 
is from the kubectl logs command. I also didn't see any files in 
/opt/flink/log, which I thought my log4j was specified to do, hence me thinking 
that the properties weren't actually being consumed. I also have the same 
properties in my src/main/resources folder.

3. Hey Yang, yes this is a standalone session cluster. I did specify in the 
docker file to copy the log4j.properties to the /opt/flink/conf folder on the 
image, and I confirmed that the properties are correct when I bash'd into the 
pod and viewed them manually.

Incidentally, I also tried passing the -Dlog4j.configuration argument to the 
programs, and it doesn't work either. And based on what I'm reading on jira, 
that option is not really supported anymore?

Thanks for your responses, folks!
Li

On Mon, Dec 9, 2019 at 7:10 PM Yang Wang 
<danrtsey...@gmail.com<mailto:danrtsey...@gmail.com>> wrote:
Hi Li Peng,

You are running standalone session cluster or per-job cluster on kubernetes. 
Right?
If so, i think you need to check your log4j.properties in the image, not local. 
The log is
stored to /opt/flink/log/jobmanager.log by default.

If you are running active Kubernetes integration for a fresh taste. The 
following cli option
could be used to remove the redirect.
-Dkubernetes.container-start-command-template="%java% %classpath% %jvmmem% 
%jvmopts% %logging% %class% %args%"

Best,
Yang

vino yang <yanghua1...@gmail.com<mailto:yanghua1...@gmail.com>> 于2019年12月10日周二 
上午10:55写道:
Hi Li,

A potential reason could be conflicting logging frameworks. Can you share the 
log in your .out file and let us know if the print format of the log is the 
same as the configuration file you gave.

Best,
Vino

Li Peng <li.p...@doordash.com<mailto:li.p...@doordash.com>> 于2019年12月10日周二 
上午10:09写道:
Hey folks, I noticed that my kubernetes flink logs (reached via kubectl logs 
<pod-name>) completely ignore any of the configurations I put into 
/flink/conf/. I set the logger level to WARN, yet I still see INFO level 
logging from flink loggers like 
org.apache.flink.runtime.checkpoint.CheckpointCoordinator. I even made copied 
the same properties to /flink/conf/log4j-console.properties and 
log4j-cli.properties.

From what I can tell, kubernetes just listens to stdout and stderr, so 
shouldn't the log4j.properties control output to them? Anyone seen this issue 
before?

Here is my log4j.properties:

# This affects logging for both user code and Flink
log4j.rootLogger=WARN, file, console, stdout

# Uncomment this if you want to _only_ change Flink's logging
log4j.logger.org.apache.flink=WARN

# The following lines keep the log level of common libraries/connectors on
# log level INFO. The root logger does not override this. You have to manually
# change the log levels here.
log4j.logger.akka=INFO
log4j.logger.org.apache.kafka=INFO
log4j.logger.org.apache.hadoop=INFO
log4j.logger.org.apache.zookeeper=INFO

# Log all infos in the given file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.file=${log.file}
log4j.appender.file.append=false
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p 
%-60c %x - %m%n

# Log all infos to the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} 
%-5p %-60c %x - %m%n

# Suppress the irrelevant (wrong) warnings from the Netty channel handler
log4j.logger.org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline=ERROR,
 file, console
log4j.logger.org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction=WARN
log4j.logger.org.apache.flink.runtime.checkpoint=WARN
Thanks,
Li

Reply via email to