日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 生成log4j_Java log4j配置每天生成一个日志文件 - 永恒ぃ☆心 的日志 - 网易博客...

發(fā)布時間:2023/11/30 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 生成log4j_Java log4j配置每天生成一个日志文件 - 永恒ぃ☆心 的日志 - 网易博客... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、配置屬性文件log4j.properties

log4j.rootLogger=INFO,stdout,R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.

log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} %5p [%t] (%F\:%L) - %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R.File=/home/log/system

log4j.appender.R.DatePattern ='.'yyyy-MM-dd'.log'

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] [%t] (%F\:%L) ->%m %n

二、項目初始化log4j

PropertyConfigurator.configure(log4j);

.......

此步驟略。

三、修改log4j源代碼中DailyRollingFileAppender.java文件。

將log4j的源文件加入項目中。修改:

/**

* Rollover the current file to a new file.

*/

void rollOver() throws IOException {

/* Compute filename, but only if datePattern is specified */

if (datePattern == null) {

errorHandler.error("Missing DatePattern option in rollOver().");

return;

}

String datedFilename = fileName + sdf.format(now);

// It is too early to roll over because we are still within the

// bounds of the current interval. Rollover will occur once the

// next interval is reached.

if (scheduledFilename.equals(datedFilename)) {

return;

}

// close current file, and rename it to datedFilename

this.closeFile();

File target = new File(scheduledFilename);

if (target.exists()) {

target.delete();

}

File file = new File(fileName);

// boolean result = file.renameTo(target);??boolean result = copy(file, target);??if (result) {

LogLog.debug(fileName + " -> " + scheduledFilename);

} else {

LogLog.error("Failed to rename [" + fileName + "] to ["

+ scheduledFilename + "].");

}

try {

// This will also close the file. This is OK since multiple

// close operations are safe.

this.setFile(fileName, false, this.bufferedIO, this.bufferSize);

} catch (IOException e) {

errorHandler.error("setFile(" + fileName + ", false) call failed.");

}

scheduledFilename = datedFilename;

}

修改刪除黃色代碼,并添加藍色代碼。

并加入方法copy。

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;

}

}

原因:

如果不修改DailyRollingFileAppender中的renameTo方法,發(fā)報錯:Log4j的log4j:ERROR Failed to rename錯誤。

總結(jié)

以上是生活随笔為你收集整理的java 生成log4j_Java log4j配置每天生成一个日志文件 - 永恒ぃ☆心 的日志 - 网易博客...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。