|
1、配置 Log4J的配置文件用于设置记录器的级别、存放器和布局,可以用key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。 有几种方式可以配置Log4J: 1)在程序中调用BasicConfigurator.configure()方法; 2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置; 3)配置放在文件里,通过环境变量传递文件名等信息,利用Log4J默认的初始化过程解析并配置; 4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。 配置文件示例: log4j.rootLogger=INFO,A1,R log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=d:/tomcat4.1/webapps/ck1907/logs/log4j.log log4j.appender.R.MaxFileSize=100KB log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}] %p %t %c - %m%n 该配置文件设置了两个存放器:A1和R,日志级别是INFO(有INFO、DEBUG、WARN、ERROR等取值)。A1用于工作台输出,即可以直接在App server的工作窗口或者java应用程序的调试窗口输出;R用于可滚动的文件输出,设置了最大文件大小为100K,当达到这个最大值的时候会自动删除之前老的日志信息以存放新的日志。layout.ConversionPattern定义了输出格式・~~
2、应用举例 1)Java类中使用Log4J:
import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator;
/** * Log4JTest.java * author:Ryan */
public class Log4JTest{ public static void main(String[] args){ String configFile = "d:/log4j.properties"; /*通过PropertyConfigurator解析配置文件并初始化Log4J配置*/ PropertyConfigurator.configure(configFile); Logger logger = Logger.getLogger(Log4JTest.class);
logger.info("main() - init success..."); } } 工作台输出格式: 2004-12-16 15:10:59 [webSite.servlet.RyanConfig]-[INFO] main() - init success... log文件输出格式: [2004-12-16 15:10:59] INFO main webSite.servlet.RyanConfig - main() - init success...
2)Web application中使用Log4J: 在web应用程序中使用Log4J,可以在一个随app server启动的servlet中完成初始化工作 web.xml配置: <servlet> …… <servlet-name>RyanConfig</servlet-name> <servlet-class>webSite.servlet.RyanConfig</servlet-class> <init-param> <param-name>log4j</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> …… </servlet>
程序代码片断: import java.io.InputStream; import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator;
/** * RyanConfig.java * author:Ryan */
public class RyanConfig extends HttpServlet {
private static final Logger logger = Logger.getLogger(RyanConfig.class); public void init() throws ServletException { String log4jConfig = getInitParameter("log4j"); InputStream is = null; Properties pro = null; try{ is = getServletContext().getResourceAsStream(log4jConfig); pro = new Properties(); pro.load(is); /*也可以跟上面一样用String类型的文件名作为参数*/ PropertyConfigurator.configure(pro); logger.info("init() - init success..."); }catch(IOException eio){ logger.error("init()", eio); } } } 工作台输出格式: 2004-12-16 15:10:59 [webSite.servlet.RyanConfig]-[INFO] init() - init success... log文件输出格式: [2004-12-16 15:10:59] INFO main webSite.servlet.RyanConfig - init() - init success..
</P>
|