Log4j在简单的应用程序中找不到属性文件

Mic*_*ael 2 java eclipse logging log4j

我有一个非常简单的应用程序,说明了日志记录的功能.我用log4j.但我的设置有些问题.我下载了log4j-1.2.16.jar文件.并将其连接到我的项目属性- > Java构建路径- >库- >添加外部JAR ....这是我的班级:

package ru.log4j.log4jhelloworld;

import org.apache.log4j.Logger;

public class MyClass {
    private static final Logger logger = Logger.getLogger(MyClass.class);
    public static void main(String[] args) {
        logger.info("Hello World!");        
    }
}  
Run Code Online (Sandbox Code Playgroud)

我的log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

  <appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="aa %p %c: %m%n"/>
    </layout>
  </appender>    
  <!--Root logger-->
  <root>
    <priority value ="debug" />
    <appender-ref ref="console" />
  </root>

</log4j:configuration>  
Run Code Online (Sandbox Code Playgroud)

我的log4j.properties:

log4j.rootCategory=DEBUG, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern= %p %c: %m%n
Run Code Online (Sandbox Code Playgroud)

在控制台中显示以下异常:

log4j:WARN No appenders could be found for logger (ru.log4j.log4jhelloworld.MyClass).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)

我不知道我应该如何创建和连接其他支持文件,例如log4j.xmllog4j.properties.并确定他们是否需要?他们应该在哪个目录中找到?我还应该注册什么?这是我的项目结构

屏幕http://s017.radikal.ru/i433/1202/81/b2739aedc39d.jpg.

我猜这个错误.我的问题是什么?请帮帮我!

Kul*_*ain 9

要解决您的问题,请将您的log4j配置文件(即log4j.xmllog4j.properties)放在src文件夹中,它应该可以正常工作.

此外,您不需要两个文件(log4j.xmllog4j.properties),只需使用其中一个.


Vla*_*roz 6

问题是记录器系统找不到您的配置文件.要解决它,你有几个选择:

  1. 如果您需要将logger配置保留在打包类之外(通常在实际生产系统中执行),那么

    • 将您的记录器配置文件放在类路径之外的文件系统上(例如/etc/my_great_app/log4j.xml)
    • 在Java应用程序命令行中包含配置的路径, -Dlog4j.configuration=<path log4j config> 例如 -Dlog4j.configuration=file:///etc/my_great_app/log4j.xml 注意路径必须包含前缀file://.
  2. 如果您希望将log4j配置与代码一起(这是单元测试的典型配置),那么您需要做的就是 - 只需确保log4配置位置是类路径的一部分.例如,如果您正在使用maven,只需存储您log4j.propertiessrc/main/resources目录

关于log4j.propertiesvs 之间的区别log4j.xml.它们只是为log4j logger定义相同配置的两种不同方式.你不需要这两个文件,只需要决定你喜欢的格式并使用它:)