log4j 相关问题

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

Log4j:如何以编程方式设置 DefaultRolloverStrategy?

我使用下面的代码以编程方式设置我的 Log4j 配置。 私有无效 initLog4JConfig() { 如果(!firstCall){ 返回; } 级别 logLevel = Level.INFO; 字符串 p...

回答 1 投票 0

log4j 不创建日志文件

下面是我在项目中使用的 log4j.properties 文件来生成日志。但日志没有在提到的位置生成。 log4j.rootLogger=调试,文件 #log4j.appender...

回答 2 投票 0

在log4j xml配置中使用系统环境变量

是否可以在 log4j xml 配置文件中引用系统环境变量(而不是 Java 系统属性)? 我希望能够做类似的事情: 是否可以在 log4j xml 配置文件中引用系统环境变量(而不是 Java 系统属性)? 我希望能够做这样的事情: <level value="${env.LOG_LEVEL}" /> 并让它从系统环境变量中获取它,这样我就可以避免使用 -D 参数传递这么多东西。 我最近尝试这样做,但无法使其发挥作用。我最终做的是在启动时发送一个变量。假设您有一个名为 $LOG_LEVEL 的环境变量: <level value="${log_level}" /> 在启动时... java -Dlog_level=$LOG_LEVEL your_app 此语法仅记录在 log4j 2.X 中,因此请确保您使用的是正确的版本。它不适用于 1.X 版本。 <Appenders> <File name="file" fileName="${env:LOG_PATH}"> <PatternLayout> <Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern> </PatternLayout> </File> </Appenders> 我认为这是不支持的,但基本上你可以做两件事来引入你的环境变量: 在配置 Log4J 之前使用 System.setProperty 将(您的)环境变量转换为启动器中的系统属性 第一个选项基本上可以归结为: for (Map<String,String>.Entry entry : System.getenv().entrySet()) { System.setProperty(entry.getKey(), entry.getValue()); } ...但问题当然是把这段代码放在哪里。特别是如果您在某种 Tomcat 容器或类似容器中运行,这可能会很麻烦。 另一个很大程度上取决于你的环境。基本上,如果您有一个启动应用程序的 shell 脚本,您可以编写一些 shell 魔法来将所有环境变量设置为属性,或者仅设置您需要的属性,例如: java -DMY_ENV=$MY_ENV -DMY_OTHER_ENV=$MY_OTHER_ENV -cp ... com.example.Main 也可以更改服务器启动脚本来支持这一点,例如catalina.sh 或类似的。 您需要在 env 和变量名称之间放置一个冒号,如下所示: <level value="${env:LOG_LEVEL}" /> 创建系统变量。我更喜欢使用 setenv.bat 来处理此类变量。 @echo off rem app specific log dir set "APP_LOG_ROOTDIR=../app/app-log" exit /b 0 在 log4j.xml 文件中添加引用 <appender name="fileAppender" class="org.apache.log4j.RollingFileAppender"> <param name="Threshold" value="DEBUG" /> <param name="MaxFileSize" value="512KB" /> <param name="MaxBackupIndex" value="10" /> <param name="File" value="${APP_LOG_ROOTDIR}/app.log"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p %c{1} %m %n" /> </layout> </appender> 只要在调用主程序时这样做,就可以解决问题 -DLOG4J_CONFIGURATION_FILE=P

回答 6 投票 0

如何摆脱“使用 Spark 的默认 log4j 配置文件:org/apache/spark/log4j-defaults.properties”消息?

我正在尝试抑制该消息 使用 Spark 的默认 log4j 配置文件:org/apache/spark/log4j-defaults.properties 当我运行我的 Spark 应用程序时。我已成功重定向 INFO 消息,但是...

回答 5 投票 0

为什么SLF4J在我的项目中找不到任何提供者?

我最近分叉了一个 GitHub 项目,并一直在努力更新它。我的主要目标之一是删除旧的(易受攻击的)Log4J v1.2 并用 Log4J 2.2 替换它。原来的产品...

回答 1 投票 0

升级我在 springboot-starter-parent 1.5.6 中使用的 log4j1.2.17 的方法

我的代码中包含的 Log4j1.2.17 没有直接使用,而是从另一个 JAR 文件调用 - log4j-over-slf4j1.7.25 并且这个 Jar 是从 spring-boot-starter-1.5.6 使用的。相对...

回答 2 投票 0

log4j 无法在文件中写入错误日志,但所有内容都在 Eclipse 控制台中打印

Eclipse 控制台正在打印所有内容(信息、警告、错误)。跟踪仅打印信息并警告我还需要错误日志。在错误文件中没有打印任何内容,我需要其中的错误日志...

回答 0 投票 0

在 Spring 'mvc-basic' 教程上实例化 SLF4J LoggerFactory 失败

我正在 Eclipse 3.7 上尝试 Spring 3.x 教程,安装了 m2e 和 Maven Integration for WTP 插件。 我将上面的教程转换为 Maven 项目,但是当我部署 Web 应用程序时,我...

回答 2 投票 0

spark 怎么可能登录到控制台?

我已将 log4j 配置为仅登录到文件中(我想完全禁用从 Spark 到控制台的日志记录)。我准备了以下配置并将其传递给 jvm(使用 -Dlog4j2.configurationFile)...

回答 0 投票 0

在 log4j2 属性文件中嵌套查找和替换系统属性

在 log4j2.properties 文件中,我们有以下定义通过系统属性 log.filePath 接受动态文件路径 appender.file.fileName=${sys:log.filePath} 在创建 Logger 之前的 JAVA 层中

回答 1 投票 0

Log4j Json 模板布局配置

我是 log4j 日志记录的新手,我有一个场景,我想配置 log4j 以使用特定主体结构的 JSON 模板布局发送 http post 请求。以下是正文格式

回答 1 投票 0

如何为 slf4j 记录器创建切面切点

我想将字符串添加到我的所有日志中以实现此目的,我计划使用 aop,但我不为我的所有记录器对象声明切点。我正在使用 slf4j 记录器,这里是 cl 中的示例日志...

回答 2 投票 0

将 Log4j2 输出打印到 JTextArea

我的程序中有一个 JTextArea,我想显示程序的日志。我做了一些挖掘并在 Log4j2 文档中找到了 OutputStreamAppender,我认为我可以使用它来...

回答 0 投票 0

Slf4j 滚动文件附加器

嗨,我有一个旧版本的 log4j,我似乎无法正确滚动日志文件。 日志文件滚动为... xxx.log --> xxx.log.5 --> xxx.log.4 我想让他们滚进去

回答 0 投票 0

如何在部署时覆盖 log4j2 记录器的日志级别

我想在我的 jar 中提供一个 log4j2 属性文件,但在启动应用程序时覆盖它的设置。例如,默认级别可能是警告,但在调试时我想...

回答 0 投票 0

线程“main”中的异常java.lang.NoClassDefFoundError:org/apache/log4j/LogManager [重复]

我正在运行一些非常古老的遗留代码,这些代码在过去一直有效。这次,它给了我以下错误 线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/lo...

回答 1 投票 0

如何使用 Log4j2 登录 BEAM workers?

我正在尝试在 BEAM 管道中将 Log4j2 日志记录实现与 Slf4j api 一起使用。在 Maven 中它看起来像这样: org.apache.logging.log4j 我正在尝试在 BEAM 管道中将 Log4j2 日志记录实现与 Slf4j api 一起使用。在 Maven 中它看起来像这样: <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.20.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j2-impl</artifactId> <version>2.20.0</version> </dependency> 在本地运行良好。日志记录也适用于我启动管道的容器。但是,在工作人员内部,此设置会导致一些问题: Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j2-impl cannot be present with log4j-to-slf4j 这个附加库 log4j-to-slf4j 不是我项目的一部分,也没有列在依赖项中(也不在传递依赖项中)。看起来是BEAM sdk自己加的。问题是:如何配置 BEAM 以使用我的 Log4j 版本?

回答 0 投票 0

带有 log4j 异步日志的 Springboot NoSuchMethodException

应用程序启动时出现以下错误。 AsyncLogger 错误处理事件 seq=15, value='org.apache.logging.log4j.core.async.RingBufferLogEvent@5549c0e2': java.lang.NoSuchMethodError:...

回答 0 投票 0

带有 reload4j 的 Java 程序:如何将事件写入系统事件日志?

旧的 log4j 1.x 不再受支持,但是一个名为 reload4j 的分支解决了它的主要安全问题并且正在发布,这样旧的应用程序就可以在不重建的情况下工作。 所以我更换了日志...

回答 0 投票 0

将 log4j1 排除项迁移到 log4j2 排除项

我的项目中有多个模块。每个模块在 pom.xml 中包含一个 log4j1 依赖项,现在我想将依赖项从 log4j 1 更新到 log4j 2。有一些排除项(例如 javax.

回答 0 投票 0

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