log4j2 相关问题

Log4j 2是Log4j的升级版,Log4j是一个基于Java的日志记录实用程序,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。

基于 Log4j2 大小的旋转是在用于日志记录的同一线程上执行的?

log4j2 基于大小的日志文件轮换是在用于日志记录的同一线程上执行的?此文件旋转延迟是否会导致应用程序出现性能问题?频繁的文件轮换会影响应用程序吗?

回答 0 投票 0

Log4j 2.9.1 以编程方式将 ThresholdFilter 添加到 Appender

我对 log4j 2.9.x 有一个严重的问题 我写“严重”是因为 log4j 的文档真的很垃圾! 此版本没有清晰且最新的文档。甚至现有的

回答 1 投票 0

GraphTraversalSource Causing log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter)

问题 如何修复 Log4j2 警告 何时使用 Tinkerpop-3-Gremlin(语言)-GraphTraveralSource? 尝试过 源代码/main/java/main.java 导入 org.apache.logging.log4j.LogManager; 导入 org.apache.logging...

回答 1 投票 0

如何在 log4j2.20 中添加自定义错误处理程序?

我已经创建了 appendercomponentbuilder,我想添加自定义错误处理程序,所以我如何在 log4j2 的 2.20 版本中以编程方式添加它。还有相应的 log4j2.xml 应该如何看 l...

回答 0 投票 0

找不到类 org.apache.logging.log4j.mongodb4.MongoDb4DocumentObject 的编解码器

ERROR处理Appender Mongo4 org.apache.logging.log4j.core.appender.AppenderLoggingException发生异常:无法在appender中写入数据库:找不到类org.apa的编解码器...

回答 1 投票 0

How to show ip address from code in Log4j file variable placeholder [关闭]

在 log4j.Xml 文件中我有 ${ipaddress},占位符,需要从 java 代码设置这个值。注意:我没有使用休息服务。有多个线程的 springboot 应用程序主类是

回答 0 投票 0

log4j2升级中的等价类

任何人都可以告诉我 log4j2.x.x 版本中的等效类。 这是一段代码,这里他们使用了LoggerRepository,它是包org.apache.log4j.spi下的一个接口; 尝试{

回答 0 投票 0

Log4J2 动态附加程序不适用于 maven-shade-plugin(或解压缩的 jar)

编辑 - 现在遮阳罐(场景 2)起作用了,所以我解决了这个问题。我将发布答案解决方案。 我以编程方式添加一个 appender。在我添加 maven-shade-plugin 之前它一直在工作。我想知道...

回答 2 投票 0

使用 log4j2 不从内部 jar 打印日志

我正在为我的应用程序使用 log4j2 (v 2.19.0)。它有 web 服务部分和常见的类和方法,如 dao、utils 和 dtos 打包在一个单独的 jar 中,供不同的 web 服务使用

回答 1 投票 0

Log4j2 TcpSocketManager 垃圾邮件

我在我的 Log4j2 配置文件中设置了一个 TCP 套接字附加程序,但远程接收器可以定期脱机。如果远程接收器已启动并正在运行,它工作正常但它启动控制台错误垃圾邮件...

回答 1 投票 0

Log4j.xml %replace usage in layout,PatternLayout tags

我一直在尝试屏蔽(替换)日志中的某些字符串,尝试升级 log4j 并使用 %replace,但无法替换文本。 以下是最初在我的 log4j.xml 中的代码(更改前)...

回答 1 投票 0

IBM Web Sphere 上带有 JNDI 数据源的 Log4j2 JDBC Appender 给出错误无可用连接

我正在尝试使用 Log4J2 JDBC appender 将日志记录插入 Oracle 数据库。我的 spring boot 应用程序 EAR 已部署到 IBM Web Sphere。我正在使用 Web Sphere 中定义的 JNDI 数据资源。 ...

回答 0 投票 0

Log4j2 xml 配置中的 Appenders

我在下面的 XML 配置文件中有两个 RollingFile Appenders。每当我运行应用程序时,我只能看到 test1.log 文件中的数据(appender 参考详细信息(name="dataCapture"...

回答 0 投票 0

如何配置 Spring Boot 来查看 Connection refused 错误的请求日志?

我正在使用 Spring Boot WebFlux 开发一个以 log4j2 作为日志框架的服务。在使用 JMeter 进行压力测试后,我注意到许多请求返回 'Connection refused: connect' ...

回答 0 投票 0

Log4j2 在 JBoss 7.4 上的 JAX-RS servlet 项目中不工作

我正在做一个JAX-RS servlet项目,它部署在JBoss(7.4)服务器上,我想实现Log4j2(2.20)来处理应用程序日志,但是当我使用info方法时,它没有显示

回答 1 投票 0

即使在添加依赖项后,控制台仍包含无效元素或属性“JsonTemplateLayout”

下面是我的log4j.xml 下面是我的log4j.xml <?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <Console name="JsonAppender" target="SYSTEM_OUT"> <JsonTemplateLayout eventTemplateUri="classpath:LambdaJsonLayout.json" /> </Console> </Appenders> <Loggers> <Logger name="JsonLogger" level="INFO" additivity="false"> <AppenderRef ref="JsonAppender"/> </Logger> <Root level="info"> <AppenderRef ref="JsonAppender"/> </Root> </Loggers> </Configuration> 下面是我的pom.xml。我添加了 log4j-layout-template-json 依赖项并尝试了不同的版本。它在本地工作正常,但是当部署到 lambda 时,cloudwatch 错误显示 Console 包含无效元素或属性“JsonTemplateLayout”。感谢任何帮助。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <version>1.0.3</version> <name>ServiceLambda</name> <description>Service Lambda</description> <properties> <java.version>11</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <log4j.version>2.19.0</log4j.version> <aws.powertools.version>1.12.2</aws.powertools.version> </properties> <dependencies> <!-- Exclude Spring Boot's Default Logging --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- Add Log4j2 Dependency --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> <version>2.6.6</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-logging</artifactId> <version>${aws.powertools.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-sqs</artifactId> <version>${aws.powertools.version}</version> </dependency> <dependency> <groupId>io.github.crac</groupId> <artifactId>org-crac</artifactId> <version>0.1.3</version> </dependency> <dependency> <groupId>com.amazonaws.serverless</groupId> <artifactId>aws-serverless-java-container-springboot2</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>dynamodb</artifactId> <version>2.17.292</version> <exclusions> <exclusion> <groupId>software.amazon.awssdk</groupId> <artifactId>netty-nio-client</artifactId> </exclusion> <exclusion> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> <version>2.17.282-PREVIEW</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-layout-template-json</artifactId> <version>2.18.0</version> </dependency> <!-- OpenAPI docs --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.6.14</version> </dependency> <!-- Test dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.0</version> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>**/Log4j2Plugins.dat</exclude> </excludes> </filter> </filters> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactSet> <excludes> <exclude>org.apache.tomcat.embed:*</exclude> </excludes> </artifactSet> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.14.0</version> <configuration> <source>1.8</source> <target>1.8</target> <complianceLevel>1.8</complianceLevel> <aspectLibraries> <aspectLibrary> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-logging</artifactId> </aspectLibrary> <aspectLibrary> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-sqs</artifactId> </aspectLibrary> </aspectLibraries> </configuration> <executions> <execution> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>

回答 0 投票 0

Log4j2 - 整数计数器 %i 不随时间和大小滚动重置

使用 Log4j2 v2.18.0 我想每小时或每 100 MB 翻转日志文件,所以我使用这个: 使用 Log4j2 v2.18.0 我想每小时 or 每 100 MB 滚动一次日志文件,所以我使用这个: <Appenders> <RollingFile name="APPLICATION" filePattern="/path/to/log.%d{yyyy-MM-dd.HH}.%i.log"> <Policies> <TimeBasedTriggeringPolicy modulate="true" /> <SizeBasedTriggeringPolicy size="100 MB" /> </Policies> </RollingFile> </Appenders> 当同时使用这两种策略时,我的期望是 %i 整数计数器将与时间段相关(例如,每小时从 1 重新启动),但整数计数器似乎一直在增加。有没有办法重置计数器,或者它会一直增加直到 JVM 重新启动? 我的期望: /路径/到/log.2023-03-22.11.1.log /路径/到/log.2023-03-22.12.1.log /路径/到/log.2023-03-22.12.2.log 我得到的: /路径/到/log.2023-03-22.11.1.log /路径/到/log.2023-03-22.12.2.log /路径/到/log.2023-03-22.12.3.log 基于https://logging.apache.org/log4j/2.x/manual/appenders.html#rollingfileappender这种行为似乎是一个错误? RollingFileAppender 需要一个 TriggeringPolicy 和一个 翻转策略。触发策略决定是否翻转 应该在 RolloverStrategy 定义如何执行时执行 应该做翻转。如果没有配置 RolloverStrategy, RollingFileAppender 将使用 DefaultRolloverStrategy。自从 log4j-2.5,自定义删除动作可以配置在 DefaultRolloverStrategy 在翻转时运行。 Since 2.8 如果没有文件名 已配置,然后将使用 DirectWriteRolloverStrategy 而不是 DefaultRolloverStrategy. DirectWriteRolloverStrategy 导致写入日志事件 直接到由文件模式表示的文件。有了这个策略 不执行文件重命名。如果基于大小的触发策略 导致在指定时间段内写入多个文件 它们将被编号从一开始并不断递增 直到发生基于时间的翻转.

回答 0 投票 0

从tomcat server.xml获取主机上下文参数到log4j2

我想从 Tomcat server.xml 获取主机上下文参数并将其插入到我的 log4j2.xml 文件中,以便为我运行的每个战争创建单独的目录。 前任。 服务器.xml 我想从 Tomcat server.xml 获取主机上下文参数并将其插入到我的 log4j2.xml 文件中,为我运行的每个战争创建单独的目录。 例如 服务器.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/App1" docBase="/opt/xx/deployments/App1.war" distributable="true"> <Parameter name="applicationName" value="app1" /> </Context> <Context path="/App2" docBase="/opt/xx/deployments/App2.war" distributable="true"> <Parameter name="applicationName" value="app2" /> </Context> </Host> 当我运行 tomcat 时接收单独的路径 ./logs/app1/app1.log ./logs/app2/app1.log 我试过用 <Property name="applicationName">$${jndi:applicationName</Property> 然后放入 文件名 ${sys:applicationName}/${sys:applicationName}.log 但我收到了 catalina.out WARN applicationName->jndi:applicationName 的属性插值中的无限循环 <Parameter>元素没有定义JNDI环境,而是一个servlet上下文参数(参见ServletContext#getInitParameter)。 要检索那些您需要使用log4j-web(或log4j-jakarta-web)工件中可用的Web Lookup: ${web:initParam.applicationName} 如果您不想手动定义应用程序名称,您可以: 使用 ${web:contextPathName} 将为根上下文提供“”,为 /foo 处的应用程序提供“foo”,为 /bar/baz 处的应用程序提供“bar”, 使用我写的小型 Tomcat 特定查找(参见 Github): <dependency> <groupId>eu.copernik</groupId> <artifactId>log4j-tomcat</artifactId> <version>2.18.0</version> </dependency> 并使用: ${tomcat:classloader.webappName} 这为您提供了根据 Tomcat 规则 编码的上下文路径:“ROOT”表示根上下文,“foo”表示/foo,“bar#baz”表示/bar/baz。它还适用于应用程序版本控制。 备注: 配置文件中定义的属性是缺少查找值的默认值,因此如果您定义: <Property name="foobar" value="${baz:foobar}"/> 如果 bar 查找没有“foobar”值,您将得到一个 recursive 定义。 这与您的方法不同,但我相信这会给您带来洞察力。 另一个问题:log4j-for-each-context

回答 2 投票 0

在文件路径中迭代并读取文件内容时如何动态记录如何为每个文件创建单独的日志文件?

我已经创建了一个 maven java 项目,如果给定一个文件夹路径,代码将遍历该文件夹并一个一个地选择文件并读取文件的所有内容(支持的文件类型-txt、pdf、word、excel、. ..

回答 1 投票 0

Log4j 加载定义的配置,稍后停止并使用 spring boot 的 log4j.xml

我最近将一个遗留的 spring boot 项目从 Spring boot 版本 1.5.9.RELEASE 迁移到 2.7.7 迁移之后,除了 log4j 初始化之外,我发现一切正常。我正在使用 l...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.