当前位置: 首页 > 知识库问答 >
问题:

使用Python部分的不同模式格式化PyFlink应用程序的日志

薛兴德
2023-03-14

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

有没有一种说法是“将此模式应用于python代码生成的日志,而将其他模式应用于其他所有日志?”

我想格式化来自我的Python代码的日志消息,以仅显示应用程序打印的消息(Log4j PatternLayout调用%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)...

我对root logger使用了ConsoleAppender,我可以将其中的格式更改为< code>%m%n,这很有效,它只显示“Python端”的消息...但是它也适用于“Java端”。我的意思是:如果我这样做,我会丢失Java的额外信息。它看起来像是:

Hello from Java

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

< sup > Java输出“错误”(无日期,无记录器名称...),从Python "good "输出

如果我将根日志记录器的模式保持为< code>%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坏(额外的信息在左边)

这是我的...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

共有1个答案

濮阳和泰
2023-03-14

您可以尝试将根记录器的模式设置为< code>%m%n,将Java记录器的模式设置为< code>%d{yyyy-MM-dd HH: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
 类似资料:
  • 我得到了一个日期字段格式为的对象,我将其映射到一个对象中,如下所示: 现在我需要将这个对象作为json响应发送,但我需要它采用不同的格式: 如果我更改字段,反序列化失败: 如何使用不同的模式进行序列化

  • 问题内容: 我尝试将这行添加到logging.properties中,但是输出不会改变 我也尝试了System.setProperty,但仍然无法正常工作,我在做什么错? 问题答案: 一堆东​​西可能在这里出错。首先,请确保您正在运行的Java版本(7 b138)已修复了JDK-6381464的问题:SimpleFormatter应该使用一种单行格式。 文档中未解释的一件事是,仅当您通过命令行设置

  • 问题内容: 我需要在C#中创建一个SQL格式化程序。谁能指出我在网上的一些资源?我需要实现一个成熟的解析器,还是有一个更简单的方法来实现呢? 问题答案: 看一下 在C#中解析SQL代码 也看一下 SQL漂亮打印机

  • 我有一个关于格式化程序的问题。 在SWAPI(https://SWAPI.co/documentation#people)中,您可以读取和日期,其格式如下: 但是在预定义格式化程序中的类DateTimeFormatter的文档一节中,我看不到任何与SWAPI日期示例匹配的格式化程序。

  • 问题内容: 我的python脚本中有一个数字,希望用作matplotlib中图形标题的一部分。是否有将浮点数转换为格式化的TeX字符串的函数? 基本上, 退货 但是我想要 或至少让matplotlib格式化浮点格式,就像格式化第二个字符串一样。我也一直使用python 2.4,因此特别喜欢在旧版本中运行的代码。 问题答案: 您可以执行以下操作: 在旧样式中:

  • 本文向大家介绍使用SimpleDateFormat格式化日期,包括了使用SimpleDateFormat格式化日期的使用技巧和注意事项,需要的朋友参考一下 SimpleDateFormat是一个具体的类,用于以对语言环境敏感的方式来格式化和解析日期。SimpleDateFormat允许您从选择任何用户定义的日期时间格式模式开始。 示例 这将产生以下结果- 输出结果 简单的DateFormat格式代