Java Log4j静态记录器
我试着用log4j做一个静态记录器。使用Java Log4j静态记录器,java,logging,properties,log4j,Java,Logging,Properties,Log4j,我试着用log4j做一个静态记录器。使用PropertyConfigurator.configureAndWatch(LOG4J_CONFIG_文件)读取属性文件时,我没有收到任何错误,但如果我想使用例如debug case DEBUG: System.out.println("debug"); log.debug(message); break; 什么也没有发生。我做了一个system.out.println来确定是否达到了代码,println被打印出来了。谁能
PropertyConfigurator.configureAndWatch(LOG4J_CONFIG_文件)读取属性文件时,我没有收到任何错误代码>,但如果我想使用例如debug
case DEBUG:
System.out.println("debug");
log.debug(message);
break;
什么也没有发生。我做了一个system.out.println来确定是否达到了代码,println被打印出来了。谁能给我一个提示,为什么记录器不工作
这是完整的代码
import org.apache.log4j.Appender;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Layout;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.spi.ErrorHandler;
import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;
public class Logging {
private static final String LOG4J_CONFIG_FILE = "/config/log4j.properties";
private static Logging instance;
private Logger log;
public enum level {
DEBUG, INFO, WARN, ERROR, FATAL
};
/**
* Private Constructor for Logging.
*/
private Logging() {
PropertyConfigurator.configureAndWatch(LOG4J_CONFIG_FILE);
}
/**
* Returns an instance of the Logger.
*/
public static synchronized Logging getInstance() {
if (instance == null)
instance = new Logging(Logger.getLogger(Logging.class));
return instance;
}
/**
* Method for doing the logging of actions in the system.
*
* @param l The preciseness level of the logging.
* @param message The message to print.
*/
public void log(Logging.level l, String message) {
switch (l) {
case WARN:
log.warn(message);
break;
case ERROR:
log.error(message);
break;
case DEBUG:
System.out.println("debug");
log.debug(message);
break;
case FATAL:
log.fatal(message);
break;
default:// INFO
log.info(message);
break;
}
}
public Logging(Logger logger) {
this();
setLogger(logger);
}
private void setLogger(Logger log) {
this.log = log;
}
}
Hier是log4j的属性
# Root logger option
log4j.rootLogger=INFO, file
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C://loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
根据我的评论,未显示调试
消息的原因是配置错误
要使其正常工作,请将第一行更改为以下内容:
log4j.rootLogger=DEBUG, file
这将允许将级别高于或等于DEBUG
的所有消息输出到您的文件中
您可以在以下手册中阅读所有相关内容:启动应用程序时,您的控制台输出会显示什么?有任何警告/错误吗?如果我没有弄错的话,这种行为的原因是您已将记录器配置为仅显示INFO
条目及以上内容。这意味着只会显示INFO
、WARN
、ERROR
和FATAL
。附带说明:您的类设计过于复杂。Log4j记录器的传统用法是defineprivate static final Logger Logger=Logger.getLogger(CurrentClass.class)代码>,其中CurrentClass是定义此记录器的类的名称。然后根据需要记录事件。