一 、 java.util.logging.Logger
用某個 getLogger 工廠方法來獲得 Logger 對象
Logger log=Logger.getLogger(this.getClass().getName());
二、 org.apache.log4j.Logger
Logger log=Logger.getLogger(Hello.class);
****************************************************************************************
使用Log4j,第一步就是獲取日志記錄器,這個記錄器將負責控制日志信息。其語法為:
public static Logger getLogger( String name)
通過指定的名字獲得記錄器,如果必要的話,則為這個名字創建一個新的記錄器。
Name一般取本類的名字,比如:
static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )
②讀取配置文件
當獲得了日志記錄器之后,第二步將配置Log4j環境,其語法為:
BasicConfigurator.configure (): 自動快速地使用缺省Log4j環境。
PropertyConfigurator.configure ( String configFilename) :讀取使用Java的特性文件編寫的配置文件。
例:PropertyConfigurator.configure(".\\src\\log4j.properties")
DOMConfigurator.configure ( String filename ) :讀取XML形式的配置文件。
?、鄄迦胗涗浶畔ⅲǜ袷交罩拘畔ⅲ?/p>
當上兩個必要步驟執行完畢,就可輕松地使用不同優先級別的日志記錄語句插入到您想記錄日
志的任何 地 方,其語法如下:
Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
在web程序中使用log4j注意問題
1、 由于jsp或servlet在執行狀態時沒有當前路徑概念,所有使用PropertyConfigurator.configure(String)語句找log4j.properties文件時要給出相對于當前jsp或servlet的路徑轉化成為一個絕對的文件系統路徑。方法是使用 servletcontext.getrealpath(string)語句。例:
//得到當前jsp路徑
String prefix = getServletContext().getRealPath("/");
//讀取log4j.properties
PropertyConfigurator.configure(prefix+"\\WEB-INF\\log4j.properties");
2、相應的log4j.properties設置某個屬性時也要在程序中設置絕對路徑。例:
log4j.appender.R.File屬性設置日志文件存放位置。我們可以用讀寫.properties配置文件的方法進行靈活設置。
*********************************************************
一個實例:
一:
配置一個名為log4j.properties 文件,放到項目的src文件下面即可
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:/env/environment/webEnv/WEB-INF/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=%p %t %c - %m%n
log4j.appender.R.layout.ConversionPattern=%d %-5p [%t] (%13F:%L) %3x - %m%n
二:
在src下建一個初始化的servlet讓程序啟動時加載log4j.properties文件
import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInit extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init() {
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j");
// if the log4j-init-file is not set, then no point in trying
System.out.println("- Log4j start");
if(file != null) {
PropertyConfigurator.configure(prefix+file);
}
Logger _logger = Logger.getLogger (Log4jInit.class);
_logger.info("- Log4j Test Successfully!");
}
}
三:在web.xml中配置這個Log4jInit .java這個servlet
<servlet>
<servlet-name>log4jlog4j-init</servlet-name>
<servlet-class>Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>