log4j 相关问题

log4j是一种流行的基于Java的日志记录实用程序。它是Apache Software Foundation的一个项目,并根据Apache软件许可证2.0版获得许可

如何配置log4j为同一个记录器将不同的日志级别记录到不同的文件

我有一个正常的INFO级别日志用于应用程序。我需要的是另外将所有错误级别事件记录到单独的错误日志中。我正在使用这样的配置: 我有一个正常的 INFO 级别的应用程序日志。我需要的是另外将所有错误级别事件记录到单独的错误日志中。我正在使用这样的配置: <logger name="com.acme"> <level value="error"/> <appender-ref ref="error"/> </logger> <logger name="com.acme"> <level value="info"/> </logger> <root> <level value="warn"/> <appender-ref ref="general"/> </root> 此配置仅记录错误。如果我首先放置信息级别记录器,那么它将仅记录到通用附加程序,但错误记录器将不起作用。我想让他们俩都工作。 您需要做的是拥有一个具有定义的 INFO 级别的 <logger> 定义,但在两个附加程序定义中,您可以相应地设置它们的阈值,例如 <appender name="ERROR_FILE"> <param name="Threshold" value="ERROR"/> </appender> <appender name="GENERAL"> <param name="Threshold" value="INFO"/> </appender> 然后将两个附加程序添加到记录器中: <logger name="com.acme"> <level value="INFO"/> <appender-ref ref="ERROR_FILE"/> <appender-ref ref="GENERAL"/> </logger> 现在进入记录器的日志条目将被发送到两个附加程序,但由于它们具有不同的独立阈值,因此 ERROR_FILE 附加程序将仅记录错误及以上错误。 完整的工作解决方案,包括文件名中的日期: <appender name="InfoFileAppender" class="org.apache.log4j.rolling.RollingFileAppender"> <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> <param name="FileNamePattern" value="/var/output/Info_%d{ddMMyyyy}.log" /> </rollingPolicy> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{HH:mm:ss} %-5p %t %c{2} - %m%n" /> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="INFO" /> <param name="levelMax" value="INFO" /> </filter> </appender> <appender name="ErrorFileAppender" class="org.apache.log4j.rolling.RollingFileAppender"> <param name="Threshold" value="ERROR" /> <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> <param name="FileNamePattern" value="/var/output/Error_%d{ddMMyyyy}.log" /> </rollingPolicy> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{HH:mm:ss} %-5p %t %c{2} - %m%n" /> </layout> </appender> <root> <level value="INFO" /> <appender-ref ref="InfoFileAppender" /> <appender-ref ref="ErrorFileAppender" /> </root> 您需要使用log4j过滤器: <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="ERROR" /> <param name="levelMax" value="ERROR" /> </filter> 这样,您可以为每个级别单独创建日志文件。 如果您使用 log4j2 并使用 XML 格式进行配置,ThresholdFilter 是一个很好的解决方案。 这是一个示例: <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout> <Pattern>%d %-5p %m%n</Pattern> </PatternLayout> <ThresholdFilter level="DEBUG"/> </Console> <RollingFile name="RollingDebugLogFile" fileName="logs/app-debug.log" filePattern="logs/$${date:yyyy-MM}/app-debug-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout> <Pattern>%d %-5p %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="20MB"/> </Policies> <ThresholdFilter level="DEBUG"/> </RollingFile> <RollingFile name="RollingErrorLogFile" fileName="logs/app-error.log" filePattern="logs/$${date:yyyy-MM}/app-error-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout> <Pattern>%d %-5p %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="20MB"/> </Policies> <ThresholdFilter level="ERROR"/> </RollingFile> <RollingFile name="RollingInfoLogFile" fileName="logs/app-info.log" filePattern="logs/$${date:yyyy-MM}/app-info-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout> <Pattern>%d %-5p %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="20MB"/> </Policies> <ThresholdFilter level="INFO"/> </RollingFile> </Appenders> <Loggers> <Logger name="testLogger" level="DEBUG" additivity="false"> <AppenderRef ref = "Console" /> <AppenderRef ref="RollingErrorLogFile" /> <AppenderRef ref="RollingInfoLogFile" /> <AppenderRef ref="RollingDebugLogFile" /> </Logger> <Root level="INFO"> <AppenderRef ref = "Console" /> <AppenderRef ref="RollingErrorLogFile" /> <AppenderRef ref="RollingInfoLogFile" /> <AppenderRef ref="RollingDebugLogFile" /> </Root> </Loggers> </Configuration> 实际上,您可以使用 .properties 文件来做到这一点;您不必使用 .xml 文件: 仅记录警告 log4j.appender.appenderName.filter.a=org.apache.log4j.varia.LevelRangeFilter log4j.appender.appenderName.filter.a.LevelMin=WARN log4j.appender.appenderName.filter.a.LevelMax=WARN 从 INFO 登录到 WARN log4j.appender.appenderName.filter.a=org.apache.log4j.varia.LevelRangeFilter log4j.appender.appenderName.filter.a.LevelMin=INFO log4j.appender.appenderName.filter.a.LevelMax=WARN

回答 5 投票 0

Log4j ThreadContext MultiThread 不会继承

我遇到这个帖子的问题 这是我的代码示例 公共类 StackOverflow 实现 RequestHandler, ApiGatewayResponse> { 私有静态最终记录器 LO...

回答 3 投票 0

如何在 log4j2 中为自定义记录器编写单元测试

我创建了几个自定义记录器,其某些级别覆盖了 Log4J2 中的自定义记录器。我已按照 http://logging.apache.org/log4j/2.x/manual/customloglevels.html 上的指南进行操作。 我需要...

回答 4 投票 0

如何禁用 TestNG 控制台日志记录 [main] INFO org.testng.internal.Utils -

我有一个使用 Selenium、TestNG 和 Log4j 进行日志记录的自动化框架。运行测试时,TestNG 会在控制台生成一个我想禁止的特定日志。日志消息是: [...

回答 1 投票 0

如何确保log4j2与jboss服务器一起工作?

我正在将 log4j 从 v1.2.12 升级到 v2.17.2,以用于在 jboss-esp-7.2 服务器上运行的应用程序。更新依赖项和类后,如果我部署在服务器上,我看到日志不是

回答 1 投票 0

Spark Streaming 和集中式日志记录:将 executorId 添加到日志中

我正在尝试为 Spark 流应用程序设置集中式日志记录。我的具体用例是将驱动程序和执行程序日志导出到 AWS CloudWatch 日志,但我认为我的部分问题是

回答 1 投票 0

导入org.apache.log4j无法解析

Eclipse、Selenium、Windows 导入org.apache.log4j无法解析 我已遵循我能找到的所有记录步骤,即: 1)以下两个jar文件位于项目构建路径中:

回答 3 投票 0

Log4j StringMatchFilter 和 DenyAll 过滤器属性配置

任何人都可以告诉我要使用哪些过滤器属性吗? 我想将日志消息分成两个不同的日志文件。下面是我尝试使用的配置,但它不起作用......

回答 2 投票 0

未找到默认构造函数;嵌套异常是 Log4J 的 java.lang.NoSuchMethodException?

我是Java新手。我正在构建一个 Selenium 应用程序来从某些站点收集数据,并使用 log4j 来记录异常、问题等。我正在使用 Microsoft Visual Code 来构建此应用程序...

回答 1 投票 0

使用 log4j.xml,在调试错误时记录特定文件或包

我想设置 log4j.xml 文件以在 DEBUG 级别记录特定的类/包,并在 ERROR 级别记录其余的类/包。 正如您在下面看到的,我将日志记录级别更新为 gov.xxxx.app.batch.thr 的信息...

回答 2 投票 0

如何使用 Log4j 更改包的日志级别?

我遇到了以下错误: http://issues.apache.org/jira/browse/AXIS2-4363 它规定如下: 仅当日志级别 对于 org.apache.axiom 是 DEBUG 所以 工作...

回答 6 投票 0

仅指定某些包有调试输出

我想记录我的Web应用程序的一些行为,它也实现了hibernate、spring等。当我尝试从 apache 实现 log4j 记录器时,我遇到了一些麻烦。 当我打开记录器时...

回答 3 投票 0

log4j-api 2.20.0 导致:java.lang.NoClassDefFoundError:无法初始化类 org.apache.logging.log4j.util.PropertiesUtil

我的java:17.0.5应用程序基于struts2-core:6.3.0.2,我使用log4j-api:2.17.2作为依赖项,并且应用程序运行良好。 当log4j-api提升到2.20.0时(

回答 1 投票 0

如何理解我们应用程序中的日志记录

我们的应用程序使用, 对于普通日志记录 (.log):log4j2 由 log4j-core.jar、log4j-api.jar、log4j2-extensions.jar 支持 对于控制台日志记录(.out):log4j(1.2),因为我们有使用l的jboss...

回答 1 投票 0

Hadoop log4j 找不到 KafkaLog4JAppender.class

我在 MR 作业中添加了 KafkaLog4JAppender 功能。 该作业正在本地运行并将格式化日志发送到我的 Kafka 集群中。 当我尝试从纱线服务器运行它时,使用: 罐子[罐子-...

回答 2 投票 0

升级Struts到2.5.10.1后没有这样的方法错误

我将Struts jar升级到2.5.10.1。但我收到以下错误。最初我有 Log4J 2.5 jar,然后将其迁移到 Log4j 2.7。 严重:启动过滤器 struts2 时出现异常 java.lang.

回答 1 投票 0

请正确初始化log4j系统。运行网络服务时

也许问这个看起来很傻,但我很困惑。我提到配置 Log4j 属性,但它似乎没有帮助。 我编写了一个简单的 Web 服务 HelloWorld。当我运行它时

回答 7 投票 0

协程不使用配置的记录器

以某种方式启动协程时,我注意到,当它失败时,它不会使用配置的 Log4j 记录器来记录异常,而是将其记录到 stderr。尽管距离很远...

回答 1 投票 0

Alfresco Community 5.2.0 上的 log4j 1.x EOL 漏洞?

我们注意到Alfresco Community 5.2.0版本附带了Log4j 1.x,我们知道log4j 1.x已经结束生命,请确认这些何时会从产品中删除? 我们尝试删除过滤器...

回答 1 投票 0

我收到“NoClassDefFoundError:org/apache/logging/log4j/util/ReflectionUtil”

我的 build.gradle 文件中有以下依赖项。 编译 'org.slf4j:slf4j-api:1.7.25' 编译组:'org.apache.logging.log4j',名称:'log4j-core',版本:'2.11.1' 编译组:'org.

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.