锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
log4j.appender.Rlogfile.layout=org.apache.log4j.PatternLayout
log4j.appender.Rlogfile.layout.ConversionPattern=%d %p [%c] - <%m>%n
log4j.appender.Rlogfile.File=${webRoot}/logs/log.log
log4j.appender.Rlogfile.MaxFileSize=2048KB
log4j.appender.Rlogfile.MaxBackupIndex=10
榪欓噷錛屾垜浠嬌鐢?{webRoot}鏉ュ彇寰楀簲鐢ㄨ礬寰勶紝webRoot鏄釜鍙橀噺銆傛垜浠槸浠庡摢閲屽彇寰楃殑鍊煎憿錛熸槸浠庢垜浠嚜宸辯殑綾諱腑錛屽洜姝ゅ繀欏誨啓榪欎釜綾匯?
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
public class Log4jInit extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
String prefix = config.getServletContext().getRealPath("/"); //鑾峰彇褰撳墠璺緞
String file = config.getInitParameter("log4j");//浠巜eb.xml涓幏鍙栧弬鏁板?鎵懼埌l(fā)og4j榪欎釜鏂囦歡
System.setProperty("webRoot", prefix); //log4j.properties鏂囦歡涓殑鍙橀噺鏄湪榪欓噷璁劇疆鐨?/span>
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
}
}
<servlet-name>log4j-init</servlet-name>
<servlet-class>com.clientmanager.util.Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
]]>
鏍規(guī)嵁Log4J鐨勯厤緗枃浠訛紝浣跨敤LOG4J鐨凞ailyRollingFileAppender.java瀹炵幇姣忛殧涓孌墊椂闂磋褰曚竴嬈℃棩蹇楁枃浠訛紝浣哃OG4J鍦ㄥ鍘熸枃浠舵敼鍚嶆椂錛屾繪槸鎻愮ずlog4j:ERROR Failed to rename鐨勯敊璇紝絀跺叾鍘熷洜錛屼富瑕佹槸榪樻湁榪涚▼鍦ㄤ嬌鐢ㄥ師鏉ョ殑LOG鏂囦歡錛岃岄氳繃鍒嗘瀽LOG4J鐨勬簮鐮侊紝鍙戠幇LOG4J鏄噰鐢≧ENAME鐨勬柟寮忓鍘熸潵鐨凩OG鏂囦歡鏀瑰悕鍐嶇敓鎴愭柊鏂囦歡銆?br />
寮曡搗log4j:ERROR Failed to rename鐨勬潯浠?br />閫氬父閮芥槸鍦ㄩ厤緗枃浠墮噰鐢↗ava浠g爜
鍜屽紓甯哥浉鍏崇殑log4j婧愪唬鐮?br />
boolean result = file.renameTo(target);
if(result) {
LogLog.debug(fileName +" -> "+ scheduledFilename);
} else {
LogLog.error("Failed to rename ["+fileName+"] to ["+scheduledFilename+"].");
}
瑙e喅鍔炴硶
淇敼log4j鐨勬簮浠g爜, 灝?
* Copies src file to dst file. If the dst file does not exist, it is
* created.8KB cache
*
* @param src
* @param dst
* @throws IOException
*/
boolean copy(File src, File dst) throws IOException {
try {
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[8192];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
return true;
} catch (FileNotFoundException e) {
LogLog.error("婧愭枃浠朵笉瀛樺湪,鎴栬呯洰鏍囨枃浠舵棤娉曡璇嗗埆." );
return false;
} catch (IOException e) {
LogLog.error("鏂囦歡璇誨啓閿欒.");
return false;
}
}
闄勪歡錛?a href="/Files/DreamAngel/DailyRollingFileAppender.zip">DailyRollingFileAppender.zip
]]>
log4j.properties鐨勫瓨鏀句綅緗?/strong>
鍦ㄤ嬌鐢?/span>eclipse鎴?/span>myeclipse鏃訛紝鏃犺浣犲啓鐨?/span>java紼嬪簭鏄鍦?/span>src鐩綍涓嬬殑鍝釜鍖呬腑錛屽彧闇瑕佸皢璁劇疆濂界殑log4j.properties鏂囦歡鏀懼湪src鐨勬牴鐩綍鍗沖彲錛岃繖鏍峰湪榪愯緙栬瘧鏃朵細(xì)鑷姩鐢熸垚榪欎釜鏂囦歡鐨勫浠藉瓨鍏ュ埌WEF-INF/classes鐩綍涓嬶紝鎴?/span>bin鐩綍涓嬨?/span>
娉細(xì)鍗冧竾涓嶈鏀懼埌鍖呭唴錛岃繖鏍蜂細(xì)鍑虹幇閿欒鎻愮ず錛?/span>
log4j:WARN No appenders could be found for logger (aa.Hello).
log4j:WARN Please initialize the log4j system properly.
鍏朵腑Hello鏄?/span>java鏂囦歡鍚嶏紝鑰?/span>aa鏄枃浠舵墍鍦ㄧ殑鐩綍銆?
log4j甯哥敤杈撳嚭鏍煎紡
%c 鍒楀嚭logger鍚嶅瓧絀洪棿鐨勫叏縐幫紝濡傚姞涓妠<灞傛暟>}琛ㄧず鍑轟粠鏈鍐呭眰綆楄搗鐨勬寚瀹氬眰鏁扮殑鍚嶅瓧絀洪棿
%X 鎸塎DC錛圡apped Diagnostic Context,綰跨▼鏄犲皠琛級(jí)杈撳嚭鏃ュ織銆傞氬父鐢ㄤ簬澶氫釜瀹㈡埛绔繛鎺ュ悓涓鍙版湇鍔″櫒錛屾柟渚挎湇鍔″櫒鍖哄垎鏄偅涓鎴風(fēng)璁塊棶鐣欎笅鏉ョ殑鏃ュ織銆?br />%p 鏃ュ織淇℃伅綰у埆
%d %d{<鏃ユ湡鏍煎紡>}:鏃ュ織淇℃伅浜х敓鏃墮棿,浣跨敤ISO8601瀹氫箟鐨勬棩鏈熸牸寮?br />%C 鏃ュ織淇℃伅鎵鍦ㄥ湴錛堝叏闄愮被鍚嶏級(jí)
%m 浜х敓鐨勬棩蹇楀叿浣撲俊鎭?br />%n 杈撳嚭鏃ュ織淇℃伅鎹㈣
%F銆鏄劇ず璋冪敤logger鐨勬簮鏂囦歡鍚?br />%l 杈撳嚭鏃ュ織浜嬩歡鐨勫彂鐢熶綅緗紝鍖呮嫭綾葷洰鍚嶃佸彂鐢熺殑綰跨▼錛屼互鍙?qiáng)鍦ㄤ唬鐮佷腑鐨勮鏁?br />%L 鏄劇ず璋冪敤logger鐨勪唬鐮佽
%M 鏄劇ず璋冪敤logger鐨勬柟娉曞悕
%r 鏄劇ず浠庣▼搴忓惎鍔ㄦ椂鍒拌褰曡鏉℃棩蹇楁椂宸茬粡緇忚繃鐨勬縐掓暟
%t 杈撳嚭浜х敓璇ユ棩蹇椾簨浠剁殑綰跨▼鍚?br />%%銆鏄劇ず涓涓?nbsp;