Pyflink应用程序的格式日志,具有不同模式的Python部分

发布于 2025-01-31 02:29:26 字数 2184 浏览 2 评论 0原文

我有一个在Pyflink中运行的Python应用程序。

是否有一种方法可以说“将此模式应用于Python代码产生的日志,而将其他模式应用于其他所有日志?”

我想格式化来自我的日志消息的格式化python代码仅显示应用程序打印的消息(log4j datternlayout 呼叫%m%n),但请保留其他不是我的代码的其他Java类打印的日志消息...基本上,此布局%d {yyyy-mm-dd HH:MM:SS,SSS}%-5P%-60C%x-%m%n

我想要终端看起来像:

2022-05-19 16:48:31,765 INFO  org.apache.flink.api.SinkFunction [] - Hello from Java

This line is python logging (no date, no priority info, no logname)...

我正在为根记录器使用consoleappender,我可以将格式更改为仅>%m%n,并且可以正常使用,并且它仅显示消息中的消息” python方面“ ...但是它也适用于“爪哇一侧”。我的意思是:如果这样做,我将失去Java的额外信息。它看起来像:

Hello from Java

This line is python logging (no date, no priority info, no logname)...

从java“糟糕”输出(没有日期,没有记录器名称...),

如果我将根记录器的模式保留为%d { YYYY-MM-DD HH:MM:SS,SSS}%-5p%-60C%x-%m%n,我的日志看起来像:

2022-05-19 16:48:31,765 INFO  org.apache.flink.api.SinkFunction [] - Hello from Java

2022-05-19 16:48:41,470 INFO  /app/borrajax/my_python_file.py:290  [] - This line is python logging (no date, no priority info, no logname)...

java“良好”的输出,来自python“ python”的输出,不好”(左侧的额外信息)

这是我的...当前的log4j(与其他许多其他信息):

appenders=borrajax_console,console

# This affects logging for both user code and Flink
rootLogger.level = INFO
rootLogger.appenderRef.console.ref = ConsoleAppender

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

# Console appender JUST FOR PYTHON:
appender.borrajax_console.name=BorrajaxConsoleAppender
appender.borrajax_console.type=CONSOLE
appender.borrajax_console.layout.type = PatternLayout
appender.borrajax_console.layout.pattern =%m%n

logger.app.name = org.apache.flink.streaming.api
logger.app.appenderRef.borrajax_console.ref = BorrajaxConsoleAppender

I have a Python application running in PyFlink.

Is there a way of saying "Apply this pattern to the logs produced by the python code, and this other pattern to every other log?"

I'd like to format the log messages that are coming from my Python code to show just the message printed by the app (what the Log4j PatternLayout calls %m%n) but keep log messages printed by other Java classes that are not my code with some extra information (the logger's name that printed the message, the time... basically, this layout %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n)

I'd like the terminal to look something like:

2022-05-19 16:48:31,765 INFO  org.apache.flink.api.SinkFunction [] - Hello from Java

This line is python logging (no date, no priority info, no logname)...

I am using a ConsoleAppender for the root logger, and I could change the format in there to be just %m%n, and that works and it shows just the message in the "Python side"... BUT it'd also apply to the "Java side" as well. I mean: if I do that, I lose the Java extra information. It would look like:

Hello from Java

This line is python logging (no date, no priority info, no logname)...

Output from Java "bad" (no date, no logger name...), output from Python "good"

If I keep the root logger's pattern as %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n, my logs look like:

2022-05-19 16:48:31,765 INFO  org.apache.flink.api.SinkFunction [] - Hello from Java

2022-05-19 16:48:41,470 INFO  /app/borrajax/my_python_file.py:290  [] - This line is python logging (no date, no priority info, no logname)...

Output from Java "good", output from Python "bad" (extra information to the left)

This is my... current config file for log4j (unsuccessful, as many others):

appenders=borrajax_console,console

# This affects logging for both user code and Flink
rootLogger.level = INFO
rootLogger.appenderRef.console.ref = ConsoleAppender

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

# Console appender JUST FOR PYTHON:
appender.borrajax_console.name=BorrajaxConsoleAppender
appender.borrajax_console.type=CONSOLE
appender.borrajax_console.layout.type = PatternLayout
appender.borrajax_console.layout.pattern =%m%n

logger.app.name = org.apache.flink.streaming.api
logger.app.appenderRef.borrajax_console.ref = BorrajaxConsoleAppender

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甚是思念 2025-02-07 02:29:26

您可以尝试将root Logger的模式设置为%m%n和Java Logger的模式为>%d {yyyy-mm-dd HH:MM:MM:SS,SSS}%-5p% - 60c%x -%m%n,例如

appenders=borrajax_console,console

# This affects logging for both user code and Flink
rootLogger.level = INFO
rootLogger.appenderRef.console.ref = ConsoleAppender

# Log all infos to the console
appender.console.name = ConsoleAppender
appender.console.type = CONSOLE
appender.console.layout.type = PatternLayout
appender.console.layout.pattern =%m%n

# Console appender JUST FOR JAVA:
appender.borrajax_console.name=BorrajaxConsoleAppender
appender.borrajax_console.type=CONSOLE
appender.borrajax_console.layout.type = PatternLayout
appender.borrajax_console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n

logger.app.name = org.apache
logger.app.appenderRef.borrajax_console.ref = BorrajaxConsoleAppender

You could try to set the root logger's pattern as %m%n and Java logger's pattern as %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n, e.g.

appenders=borrajax_console,console

# This affects logging for both user code and Flink
rootLogger.level = INFO
rootLogger.appenderRef.console.ref = ConsoleAppender

# Log all infos to the console
appender.console.name = ConsoleAppender
appender.console.type = CONSOLE
appender.console.layout.type = PatternLayout
appender.console.layout.pattern =%m%n

# Console appender JUST FOR JAVA:
appender.borrajax_console.name=BorrajaxConsoleAppender
appender.borrajax_console.type=CONSOLE
appender.borrajax_console.layout.type = PatternLayout
appender.borrajax_console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n

logger.app.name = org.apache
logger.app.appenderRef.borrajax_console.ref = BorrajaxConsoleAppender
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文