public class Log4j {
private final static String CLASS_NAME = Log4j.class.getName();
public static Logger log = Logger.getLogger(CLASS_NAME);
//BasicConfigurator.configure(new ConsoleAppender(new PatternLayout(
// "%-r\t%-d{yyyy-MM-dd HH:mm:ss}\t%p\t%-t\t%l\t%m%n"))); PropertyConfigurator.configure("./conf/log4j.properties"); public static void main(String[] args) {
log.debug("ALL信息:信息级别:" + Level.ALL_INT);
log.debug("DEBUG信息:信息级别:" + Level.DEBUG_INT);
log.info("INFO信息:信息级别:" + Level.INFO_INT);
log.warn("WARN信息:信息级别:" + Level.WARN_INT);
log.error("ERROR信息:信息级别:" + Level.ERROR_INT);
log.fatal("FATAL信息:信息级别:" + Level.FATAL_INT);
log.fatal("OFF信息:信息级别:" + Level.OFF_INT);
}
}
java 代码如上:
./conf/log4j.properties如下:log4j.rootCategory = myConsole,A1
#console appender
log4j.appender.myConsole=org.apache.log4j.ConsoleAppender
log4j.appender.myConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.myConsole.layout.ConversionPattern=%-r\t%-d{yyyy-MM-dd HH:mm:ss}\t%-t\t%p\t%l\t%x\t%m%n
#log4j.appender.myConsole.threshold=INFOlog4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n问题:如果不用PropertyConfigurator.configure("./conf/log4j.properties"); 可以输出日志;
现在我打算用配置文件控制日志输出,配置文件路径也没错,日志输出如下:\
ERROR [main] Log4j - 日志信息
显然配置文件没有起作用,请问各位大哥,问题在哪里,怎么解决
private final static String CLASS_NAME = Log4j.class.getName();
public static Logger log = Logger.getLogger(CLASS_NAME);
//BasicConfigurator.configure(new ConsoleAppender(new PatternLayout(
// "%-r\t%-d{yyyy-MM-dd HH:mm:ss}\t%p\t%-t\t%l\t%m%n"))); PropertyConfigurator.configure("./conf/log4j.properties"); public static void main(String[] args) {
log.debug("ALL信息:信息级别:" + Level.ALL_INT);
log.debug("DEBUG信息:信息级别:" + Level.DEBUG_INT);
log.info("INFO信息:信息级别:" + Level.INFO_INT);
log.warn("WARN信息:信息级别:" + Level.WARN_INT);
log.error("ERROR信息:信息级别:" + Level.ERROR_INT);
log.fatal("FATAL信息:信息级别:" + Level.FATAL_INT);
log.fatal("OFF信息:信息级别:" + Level.OFF_INT);
}
}
java 代码如上:
./conf/log4j.properties如下:log4j.rootCategory = myConsole,A1
#console appender
log4j.appender.myConsole=org.apache.log4j.ConsoleAppender
log4j.appender.myConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.myConsole.layout.ConversionPattern=%-r\t%-d{yyyy-MM-dd HH:mm:ss}\t%-t\t%p\t%l\t%x\t%m%n
#log4j.appender.myConsole.threshold=INFOlog4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n问题:如果不用PropertyConfigurator.configure("./conf/log4j.properties"); 可以输出日志;
现在我打算用配置文件控制日志输出,配置文件路径也没错,日志输出如下:\
ERROR [main] Log4j - 日志信息
显然配置文件没有起作用,请问各位大哥,问题在哪里,怎么解决
log4j.rootLogger=warn, A1#A1 is the output device
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=c:/godomro/log4j.htm
log4j.appender.A1.maxFileSize=128kb
#use html layout
log4j.appender.A1.layout=org.apache.log4j.HTMLLayout
classes/conf/或者bin/conf下面有没有log4j.properties
现在的问题是Logger 不能获取到配置文件中的Appender,从日志输出上看,Logger 只是获取到默认的Appender很想结贴,可问题没有解决,不过还是谢谢大家关注,继续吧,Help me!,please
参考下这个,我使用的这个没有问题:
## LOGGERS ###define a logger
#log4j.rootLogger=DEBUG,console,file
log4j.rootLogger=INFO,console,file## APPENDERS ##
# define an appender named console, which is set to be a ConsoleAppender
log4j.appender.console=org.apache.log4j.ConsoleAppender# define an appender named file, which is set to be a RollingFileAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:/zzt/logs/2009.log#set the log's size
log4j.appender.file.MaxFileSize=1000KB
log4j.appender.file.MaxBackupIndex=20## LAYOUTS ##
# assign a SimpleLayout to console appender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout# assign a PatternLayout to file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
# For debug
# log4j.appender.file.layout.ConversionPattern=[%-5p][%t][%C][%d{yyyy-MM-dd HH:mm:ss}] %m%n
# For deployment
log4j.appender.file.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %m%n
classes/conf/或者bin/conf下面有没有log4j.properties
import org.apache.log4j.*;public class Log4j {
private final static String CLASS_NAME = Log4j.class.getName();
public static Logger log = Logger.getLogger(CLASS_NAME);
//BasicConfigurator.configure(new ConsoleAppender(new PatternLayout(
// "%-r\t%-d{yyyy-MM-dd HH:mm:ss}\t%p\t%-t\t%l\t%m%n")));
public static void main(String[] args) {
BasicConfigurator.configure();
PropertyConfigurator.configure(".\\conf\\log4j.properties");
log.debug("ALL:" + Level.ALL_INT);
log.debug("DEBUG:" + Level.DEBUG_INT);
log.info("INFO:" + Level.INFO_INT);
log.warn("WARN:" + Level.WARN_INT);
log.error("ERROR" + Level.ERROR_INT);
log.fatal("FATAL" + Level.FATAL_INT);
log.fatal("OFF" + Level.OFF_INT);
}
} 注意路径的地方要用转译符号
static {
PropertyConfigurator.configure("./conf/log4j.properties");
}
放在程序最开始,这个有可能会影响public static Logger log = Logger.getLogger(CLASS_NAME);另外我印象中路径是不能用./或../的,楼主试试将路径修改为conf/log4j.properties试试。即修改为PropertyConfigurator.configure("conf/log4j.properties");
web.xml中加入下面的配置 <!-- Log4j -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param> <context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param> <context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>600000</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<!-- Log4j -->log4j的配置:### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n# operate logs
log4j.appender.operate=org.apache.log4j.FileAppender
log4j.appender.operate.File=${webApp.root}/logs/court-operate.log
log4j.appender.operate.layout=org.apache.log4j.PatternLayout
log4j.appender.operate.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n# exception logs
log4j.appender.exception=org.apache.log4j.FileAppender
log4j.appender.exception.File=${webApp.root}/logs/court-exception.log
log4j.appender.exception.layout=org.apache.log4j.PatternLayout
log4j.appender.exception.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ####log4j.rootLogger=info, stdout#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug### log just the SQL
#log4j.logger.org.hibernate.SQL=debug### log JDBC bind parameters ###
#log4j.logger.org.springframework = info, file
#log4j.logger.org.hibernate.type = info, file
log4j.logger.com.jw.court.exception = debug, exception
log4j.logger.com.jw.court.web = debug, stdout, operate
log4j.logger.com.jw.court.manager = debug, stdout, operate
再次说明一点,我不是在Web服务器上用Log4j,是桌面程序.
为什么就是不按预期运行?
特别谢谢 zabaglione 的建议,我调整了一下你给语句的顺序,
PropertyConfigurator.configure("../conf/log4j.properties");
BasicConfigurator.configure();先加载配置文件,再调用BasicConfigurator.configure();
哈哈,搞定了,谢谢
一般是这样用的,如:
PropertyConfigurator.configure ( “.\\src\log4j.properties”);