可以使用特殊的配置文件以编程方式和外部方式配置log4j。最好使用外部配置,因为要使其生效,不需要更改应用程序代码,重新编译或重新部署。配置文件可以是XML文件或Java属性文件,可以分别使用任何文本编辑器或XML编辑器来创建和编辑。
1.以编程方式配置log4j
这个例子来自这个站点,代码很乱,所以为什么不把它弄干净。
package Test;
import org.apache.log4j.*;
public class TestLog {
/*
* get a static logger instance with name TestLog
*/
static Logger myLogger = Logger.getLogger(TestLog.class.getName());
Appender myAppender;
SimpleLayout myLayout;
/* Constructor */
public TestLog() {
/*
* Set logger priority level programmatically. Though this is better done externally
*/
myLogger.setLevel(Level.ALL);
/*
* Instantiate a layout and an appender, assign layout to appender
* programmatically
*/
myLayout = new SimpleLayout();
myAppender = new ConsoleAppender(myLayout); // Appender is Interface
/* Assign appender to the logger programmatically */
myLogger.addAppender(myAppender);
} // end constructor
public void do_something(int a, float b) {
/*
* This log request enabled and log statement logged, since INFO = INFO
*/
myLogger.info("The values of parameters passed to method do_something are: "+ a + ", " + b);
/* this log request is not enabled, since DEBUG < INFO */ myLogger.debug("Operation performed successfully"); Object x=null; if (x == null) { /* * this log request is enabled and log statement logged, since ERROR * > INFO
*/
myLogger.error("Value of X is null");
}
} // end do_something()
public static void main(String []args){
new TestLog().do_something(1, 3);
}
} // end class MyClass
这是输出的快照:
2.在外部配置Log4j
在项目的“ src”目录中创建一个名为“ log4j.properties”的文件。
# Define the root logger with appender file
log = /home/ryan/Desktop/log4j
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
这是Java代码。
package Test;
import org.apache.log4j.Logger;
public class TestLogger {
static Logger myLogger = Logger.getLogger(TestLog.class.getName());
public static void main(String[] args) {
myLogger.info("testing");
myLogger.warn("warning testing");
myLogger.error("this is an error");
}
}
日志将打印在/ home / ryan / Desktop / log4j目录中的log.out文件中。