在java項目中使用log4j的實例
測試log4j的項目結構
Log4j.properties的路徑爲 src/config/log4j
Log4j.properties文件的內容
下面定義日誌輸出級別是 INFO,並且配置了2個輸出目的地,一個是A3,一個是console
log4j.rootLogger = INFO,A3,CONSOLE
//日誌最低的輸出級別
log4j.appender.A3.Threshold=INFO
log4j.appender.A3.encoding=UTF-8
//每天產生一個文件DailyRollingFileAppender
log4j.appender.A3 = org.apache.log4j.DailyRollingFileAppender
//file 屬性 指定產生日誌文件的保存位置及文件名,這裏是windows下的配置
// c:/logtest/logtest.log,
//公司項目在linux下的配置是/app/weblogic/applications/logs/sxvip_logs
log4j.appender.A3.File=c:/logtest/logtest.log
//當有日誌時立即輸出,默認是true
log4j.appender.A3.ImmediateFlush=true
log4j.appender.A3.DatePattern='_'yyyy-MM-dd
//日誌佈局方式
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
//日誌文件中日誌的格式
log4j.appender.A3.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} OSS %-5p [%c] - %m%n
//這裏使用org.apache.log4j.ConsoleAppender指定要把日誌輸出到控制檯
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=INFO
//輸出目標是 控制檯
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} OSS %-5p [%c] - %m%n
在Web應用中web.xml利用Spring配置log4j
在web.xml中添加配置 <!-- 配置log4j配置文件的路徑,可以是xml或 properties(此參數必須配)--> 下面使用了classpath 參數指定log4j.properties文件的位置,這樣log4j的配置文件就不用非要放到src的下面 <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:config/log4j/log4j.properties</param-value> </context-param> 使用spring的監聽器,當應用啓動時來讀取log4j的配置文件 <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
在java中使用log4j
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class MyServiceParamAction extends BaseAdmAction{ private static final Log log = LogFactory.getLog(MyServiceParamAction.class); public ActionForward NgCallServiceInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // 獲得登錄用戶信息,沒有登錄提示用戶需要重新登錄 log.info("我的服務查詢開始....................................."); UserBean user = (UserBean) request.getSession().getAttribute("USER_INFO"); log.info("從session中獲取登錄用戶user "+user); if (user != null) { log.info("user.getMisisdn() "+user.getMsisdn()); . . . }
當應用啓動時,這裏就會根據log4j的配置(log4j.appender.A3.File=c:/logtest/logtestxxx.log)在c盤下產生日誌文件
當訪問項目的資源時就會在該文件中添加日誌信息
2013/12/05 11:46:33 OSS INFO [com.sinovatech.myservice.action.MyServiceParamAction] - 我的服務查詢開始...........
2013/12/05 11:46:33 OSS INFO [com.sinovatech.myservice.action.MyServiceParamAction] - 從session中獲取登錄用戶 user null
2013/12/05 11:46:33 OSS INFO [com.sinovatech.myservice.action.MyServiceParamAction] - VIP 我的服務 查詢 結束........
注意當在java類的main方法中測試時,不會在日誌文件中添加日誌信息