剛剛PTT JAVA版的問題
今天剛好有摸到
問題
如何用Apache log4j紀錄伺服器資訊
且記錄檔檔名格式為每日一個log檔
如:20130313_log.txt
我是用最新的函示庫 你要有
commons-logging-1.1.1.jar
這個一般API幫你處理在你不確定紀錄方式的時候
log4j-1.2.17.jar
log4j的本體
兩個丟進/WEB-INF/lib/底下
寫一個Filter紀錄訊息
LogFilter.java:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class LogFilter implements Filter {
private Log log = LogFactory.getLog(this.getClass());
private String filterName;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
filterName = filterConfig.getFilterName();
log.info("啟動Filter:" + filterName);
}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
long startTime = System.currentTimeMillis();
String requestURI = request.getRequestURI();
requestURI = request.getQueryString() == null ? requestURI : (requestURI + "?" + request.getQueryString());
chain.doFilter(request, response);
long endTime = System.currentTimeMillis();
log.info(request.getRemoteAddr() + "存取了" + requestURI + ",總用時" + (endTime - startTime) + "毫秒,");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
log.info("關閉Filter:" + filterName);
}
}
web.xml中Filter的設定和網址mapping
<filter>
<filter-name>LogFilter</filter-name>
<filter-class>LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LogFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
關鍵的log4j.properties:
通常放在classes資料夾下
log4j.rootLogger=INFO, day
#org.apache.log4j.DailyRollingFileAppender每日一個紀錄檔
log4j.appender.day=org.apache.log4j.DailyRollingFileAppender
log4j.appender.day.layout=org.apache.log4j.PatternLayout
#記錄檔內容
log4j.appender.day.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%l]-[%p] %m%n
#記錄檔路徑
log4j.appender.day.File=C:\\system_notice.log
#隔日備份時按照日期更改記錄檔檔名
log4j.appender.day.DatePattern='.'yyyyMMdd
完工
訂閱:
張貼留言 (Atom)




沒有留言:
張貼留言