<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
package zieckey.study.log4j; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class Log4jTest { // 获取日志记录器 static Logger logger = Logger.getLogger(Log4jTest.class.getName()); Log4jTest() { // 读取使用Java属性文件编写的配置文件 PropertyConfigurator.configure("log4j.properties"); } public static void main(String[] args) { logger.debug("Log4jTest-->>debug"); logger.info("Log4jTest-->>info"); logger.warn("Log4jTest-->>warn"); logger.error("Log4jTest-->>error"); } }
log4j.rootLogger=DEBUG, A1, A2 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ss} %c %m%n log4j.appender.A2=org.apache.log4j.RollingFileAppender log4j.appender.A2.File=Log4jTest.log log4j.appender.A2.MaxFileSize=20KB log4j.appender.A2.MaxBackupIndex=1 log4j.appender.A2.layout=org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ss} %c %m%n
该配置文件配置了log输出的目的地:console和file
//建立Logger的一个实例,命名为“com.foo” Logger logger = Logger.getLogger("com.foo"); //设置logger的级别。通常不在程序中设置logger的级别。一般在配置文件中设置。 logger.setLevel(Level.INFO); Logger barlogger = Logger.getLogger("com.foo.Bar"); //下面这个请求可用,因为WARN >= INFO logger.warn("Low fuel level."); //下面这个请求不可用,因为DEBUG < INFO logger.debug("Starting search for nearest gas station."); //命名为“com.foo.bar”的实例barlogger会继承实例“com.foo”的级别。因此,下面这个请求可用,因为INFO >= INFO barlogger.info("Located nearest gas station."); //下面这个请求不可用,因为DEBUG < INFO barlogger.debug("Exiting gas station search");这里“是否可用”的意思是能否输出Logger信息。
static Logger logger = Logger.getLogger(ClientWithLog4j.class.getName());
org.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置时使用方式为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.option = valueN
这样就为日志的输出提供了相当大的便利。
org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以灵活地指定布局模式), org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)配置时使用方式为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class log4j.appender.appenderName.layout.option1 = value1 … log4j.appender.appenderName.layout.option = valueN
log4j.rootLogger=INFO,A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n这里需要说明的就是日志信息格式中几个符号所代表的含义:
16 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j QUIT
log4j.rootLogger=DEBUG, A1, A2 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.Append=true log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] %m%n log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender log4j.appender.A2.File=D:/test/Log4jTest.log log4j.appender.A2.Append=true log4j.appender.A2.Encoding=UTF-8 log4j.appender.A2.DatePattern = '.'yyyy-MM-dd log4j.appender.A2.layout=org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p] %m%n log4j.logger.org.springframework=OFF log4j.logger.org.apache=OFF