我是log4j的新手。这就是我所拥有的。我在STAND ALONE JAVA应用程序中有大约20个不同包中的文件。 我正在尝试使用和编写日志文件。
以下是我的 log4j.properties文件,它位于我的类路径中:
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File = /ParentFolder/ChildFolder/application.log
log4j.appender.R.Append = true
log4j.appender.R.DatePattern = '.'yyy-MM-dd
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
以下是我的主要方法
中初始化记录的代码final String LOG_FILE = "C:/eclipse_workspace/lib/log4j.properties";
Properties logProp = new Properties();
try
{
logProp.load(new FileInputStream (LOG_FILE));
PropertyConfigurator.configure(logProperties);
logger.info("Logging enabled");
}
catch(IOException e)
{
System.out.println("Logging not enabled");
}
在应用程序的每个java类中,我都有以下代码
import org.apache.log4j.*;
private static final Logger logger = Logger.getLogger(TheActualClassName.class);
但是我在运行应用时收到以下警告消息。
log4j:WARN找不到logger(com.xxx.myApp.MainProgram.MyFileName)的appender。 log4j:WARN请正确初始化log4j系统。 log4j:WARN有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig。
我做错了什么?未生成日志文件“application.log”
答案 0 :(得分:6)
可能需要以下一行:
# Set root logger level to INFO and appender to R.
log4j.rootLogger=INFO, R
根记录器始终可用且没有名称。
从版本1.2.7开始,log4j(带有LogManager
类)首先在类路径中查找log4j.xml
。如果log4j.xml
不存在,则log4j(使用LogManager
类)在类路径中查找log4j.properties
。
答案 1 :(得分:4)
如果您打算在应用程序的类路径中使用名为log4j.properties
,和的文件,则无需拨打PropertyConfiguration
或DOMConfigurator
- log4j will do this automatically首次初始化时(首次加载记录器时)。
错误消息似乎表明您的配置未加载。
将VM参数-Dlog4j.debug
添加到您的应用程序,让log4j在启动时吐出一大堆信息,包括它尝试加载的文件以及它在配置中找到的值。
答案 2 :(得分:0)
Raghu,如果您使用独立配置来配置log4j属性,那么使用可以使用BasicConfigurator.configure()方法来解决您的appender问题。