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

在log4jxml配置文件中放置formatMsgnolookup的位置

冯和硕
2023-03-14

我用一个xml文件配置log4j,但我不确定在哪里添加格式msgnolookups=true?

<?xml version="1.0" encoding="UTF-8"?>
<!--  Upload files compare config -->
<configuration status="OFF">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss} %p - %msg%n"/>
    </Console>

    <!-- http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender -->
    <RollingFile name="File" fileName="logs/MyLogFile.log"
                          filePattern="logs/MyLogFile-%d{yyyy-MM-dd}.log"
                 ignoreExceptions="false">
      <PatternLayout>
        <Pattern>%d %p %c{1.} %m%n</Pattern>
      </PatternLayout>
    </RollingFile>
  </appenders>
  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="File"/>
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</configuration>

共有2个答案

邓威
2023-03-14

正如@DuncG所评论的,禁用log4j查找的选项不是一个配置选项,而是一个系统属性

log4j2.formatMsgNoLookups

根据您的生态系统(spring、独立可执行文件、Tomcat web应用程序等),系统属性的设置方式可能会有所不同。从jar文件启动Java进程最简单的方法是添加

-Dlog4j2.formatMsgNoLookups=true

到您的命令行:

java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar
黄君博
2023-03-14

CVE-2021-44228 Log4Shell漏洞

如果可以,请升级到log4j2版本

Apache日志站点建议解决Log4j2早期版本中的JNDI查找漏洞:

  1. 设置系统属性log4j2。formatMsgNoLookups
  2. 将环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS设置为true
  3. 对于从2.0-beta9到2.10的版本。0,缓解措施是删除org/apache/logging/log4j/core/lookup/JndiLookup。类从类路径-请参见log4j核心-*。jar

第二点听起来是应用最快的,因为它可以为运行应用程序的每个用户帐户定义一次,尽管我在Java上运行grep时找不到LOG4J_FORMAT_MSG_NO_LOOKUPS源代码为2.14.0

 类似资料:
  • 我对Springs@Configuration和@Conditional annotation是新手。我在问自己,在我的maven文件夹结构中,这些配置java文件应该放在哪里。 到目前为止,我将所有配置xml文件放入src/main|test/Resources/但是使用这种新方法,不再有xml文件。 谢啦

  • 问题内容: 我正在用Eclipse编写Web应用程序。 我正在尝试使用ServiceLoader类加载一些插件。 ServiceLoader的文档说我需要在META-INF / services中放置一个文件。 我已经将该文件放置在WebContent / META-INF / service文件夹中,但是当我通过Eclipse运行JUnit测试时,找不到任何插件。 这是文件的正确位置吗? 另外,

  • 问题内容: 我有一个文本文件想要包含在我的Android应用程序中,它不是字符串文件,而是标准文本文件。它包含定义在板上绘制的“地图”的特征的数据。该文件不是XML文件,所以我不确定应该放在哪里,或者如果这不是适用于Android的良好文件结构?你想这样做吗?如果您位于哪个目录下,应该将它们放在什么目录下?那么您应该如何访问文件?我知道如何使用FileInputStreams和FileOutput

  • 我创建了一个简单的Maven项目,没有原型,一切都很好。然后我添加了一个CVA。主/资源目录下的pmml文件。之后,我想读取该文件,但得到了FileNotFoundException。我尝试了以下方法: 方法一: 方法二: 方法3: 方法四: 它们都不起作用。有什么建议吗? 以下是项目结构的屏幕截图:

  • 问题内容: Hibernate配置文件(.hbm.xml)的理想位置是 但我想将这些配置设置放在其他位置,例如 我怎样才能做到这一点? 如果我将配置文件放在该位置,并且启动了Tomcat,则在加载该配置时会出现错误提示 找不到hibernate.cfg.xml 问题答案: 要配置文件的位置,请使用而不是在创建时。 要配置文件的位置,请使用。 也可以看看: Java文档

  • 我有一个标准的Spring靴项目。 我有一个/src/main/resources文件夹,其中有几个配置文件。 我怎样才能用Gradle做到这一点呢?