Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j 2-配置问题_Java_Log4j2 - Fatal编程技术网

Java log4j 2-配置问题

Java log4j 2-配置问题,java,log4j2,Java,Log4j2,我正在尝试将log4j2.0配置为报告日志 我的配置保存为log4j2.xml,这是它的内容: <?xml version="1.0" encoding="UTF-8"?> <configuration name="PRODUCTION" status="OFF"> <appenders> <RollingFile name="MyFileAppender" fileName="../Logs/

我正在尝试将log4j2.0配置为报告日志

我的配置保存为log4j2.xml,这是它的内容:

  <?xml version="1.0" encoding="UTF-8"?>
  <configuration name="PRODUCTION" status="OFF">

    <appenders>
        <RollingFile name="MyFileAppender" 
            fileName="../Logs/app.log" 
            filePattern="../Logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>%d %p %C{1.} [%t] %m%n</pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy />
                <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
            </Policies>
        </RollingFile>
    </appenders>

    <loggers>
        <root level="trace">
            <appender-ref ref="MyFileAppender"/>
        </root>
    </loggers>

 </configuration>
没有写入任何内容,也没有创建任何文件。
当我调试代码时,我看到记录器是默认记录器(控制台)。

我非常确定,您必须写下要记录其消息的类的完整限定名,比如
com.application.log4jtest.YourClass
。如果这不起作用,试着调整日志级别

而且——就像通知一样——你也可以写

Logger logger = LogManager.getLogger(MyClass.class); // omit .getClass()

您应该将log4j2.xml放入类路径中

或者将“log4j.configurationFile”系统属性设置为强制使用log4j2.xml

请参阅:

它存在于项目的类路径中,我试着把它放进去 许多其他目录

具体在哪里?关于“在类路径中”的含义,人们常常感到困惑。它不可能在任何地方。它必须位于“顶部”或“默认包”

src
├── main
│   └── java
│       ├── com
│       │   └── example
│       └── log4j2.xml
好的,我解决了这个问题。
我必须在xml中指定package=“myPackage”

我也有类似的问题。我把文件放在src文件夹下,它工作了。我在log4j2.xml文件中没有提到任何包名。

在log4j2的文档中:

“如果无法找到JSON文件,XML ConfigurationFactory将尝试在类路径上找到log4j2.XML。”

但它不适用于类路径。相反,如果我们把它保存在src文件夹中,那么它就工作了

<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>log4j2.xml</param-value>
</context-param>

Log4J配置
log4j2.xml

这里提到了类似的问题:

给eclipse用户的提示:

右键单击项目并单击“刷新”。确保可以在eclipse中看到log4j2.xml文件。 (这解决了我的问题。)

详细地说:

  • 您不应该将文件添加到构建路径。(如果添加,eclipse将对此发出警告)

  • 此文件的名称未出现在“.classpath”文件中


  • 我将log4j2.xml放在src/目录下。它起作用了

    • 我遇到了问题,我尝试了一些解决方案,但只有这一点对我有效:

      转到web.xml,并添加此参数:

      <context-param>
          <param-name>log4jConfiguration</param-name>
          <param-value>log4j2.xml</param-value>
      </context-param>
      
      
      Log4J配置
      log4j2.xml
      
      实际上,这是一个简单的过程。Log4j 2的两个主要类如下所示,您需要这样导入:

          import org.apache.logging.log4j.LogManager
          import org.apache.logging.log4j.Logger
      
      现在使用此代码获取一个
      记录器
      实例

          private static final Logger logger = LogManager.getLogger();
      
      注意,我没有将
      getLogger()
      方法的类名指定为参数。log4j2会自动计算出来

      现在,您可以使用
      记录器
      类中的
      info()、trace()、debug()、warn()、error()、fatal()
      方法。但是要从所有这些方法中获得输出,您需要一个XML配置文件。默认情况下,Log4j 2仅从
      error()和fatal()方法生成输出

      配置文件如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <Configuration status="WARN">
              <Appenders>
                  <File name="MyCustomLogFile" fileName="/home/me/mylogfile.log">
                      <PatternLayout>
                          <Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
                      </PatternLayout>
                  </File>
                  <Console name="Console" target="SYSTEM_OUT">
                      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
                  </Console>
              </Appenders>
              <Loggers>
                  <Root level="all">
                      <AppenderRef ref="MyCustomLogFile"/>
                      <!--<AppenderRef ref="Console"/>-->
                  </Root>
              </Loggers>
          </Configuration>
      
          java -Dlog4j.configurationFile=/path/to/xml/configuration/file/Log4j2.xml MyMainClass
      
      你做到了。将立即在您的控制台上进行日志记录

      特别注意事项:

      • 在XML文件中,我提供了两个附件:一个文件和一个控制台。您可以看到,只需取消注释已注释的
        AppenderRef
        标记,即可在文件中而不是控制台中获得输出

      • 还可以将环境变量作为系统属性提供。Log4j 2将首先从环境变量读取配置文件,如果未找到环境变量,则在
        -D
        参数中读取配置文件


      享受日志记录的乐趣。:-)

      我也面临同样的问题。我将log4j2.xml文件保存在系统环境变量中

      变量名称:sys\u logroot变量值:D:\user\gouse

      没有为我创建日志

      使用系统变量
      -Dlog4j.configurationFile=path/to/log4j2.xml


      这解决了我的问题

      log4j2.xml
      文件放在
      src/main/resources
      下。它可以工作

      我有相同的“错误状态记录器未找到log4j2配置文件”。使用默认配置:仅将错误记录到控制台。消息反复出现。这让我发疯了。log4j2.xml文件正确地放置在src/main/resources中,就像我以前在数千个项目中所做的那样

      在我的例子中,解决方案是从根pom.xml中删除pom。打包pom会导致src/main/resources的内容不会复制到target/classes


      对于具有相同根本原因的所有人来说,日志记录都很愉快。

      Hi,我使用的是netbeans,类路径如下:ProjectName\build\classes\ProjectName\log4j2.xml日志xml位于所有其他.class文件的目录中。我可以看到它是类路径,因为它写在项目属性中:-build.classes.dir=${build.dir}/classes在标准maven模块设置中为我工作,谢谢。@我的eclipse项目中的wolfcastle log4j2.xml文件在src文件夹下,但是log4j仍然无法检测到它。有什么建议吗?试过了…还是没什么。它必须与类路径有关……但我不知道是什么。是的,我读过,我确实把它放在了那里(至少我认为是这样)。请阅读我写给沃尔夫堡的评论。谢天谢地,这两条规则在很多(简单)情况下都是不够的。您是说
      作为
      配置
      根元素的属性吗?像这样
      这是否添加了其他9个答案中未包含的内容?是的,这给出了放置log4j2.xml文件的确切位置。我将log4j2.xml放在src/目录下。它起作用了。非常感谢。
          java -Dlog4j.configurationFile=/path/to/xml/configuration/file/Log4j2.xml MyMainClass