1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java 某个类 单独输出日志_log4j实现特定功能的日志单独输出到指定的日志文件...

java 某个类 单独输出日志_log4j实现特定功能的日志单独输出到指定的日志文件...

时间:2024-05-22 17:39:30

相关推荐

java 某个类 单独输出日志_log4j实现特定功能的日志单独输出到指定的日志文件...

如何实现按需要,使某个功能的日志单独输出到指定的日志文件呢?

其实只要在现有的log4j基础上稍加配置即可实现这一功能。

1、常用配置如下:

#Level

log4j.rootLogger = debug,CON,F,E

###ConsoleAppender###

log4j.appender.CON = org.apache.log4j.ConsoleAppender

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

log4j.appender.CON.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %5p %c{5}:%L - %m%n

###DailyRollingFileAppender###

log4j.appender.F = org.apache.log4j.DailyRollingFileAppender

log4j.appender.F.File = /export/Logs/all.log

log4j.appender.F.DatePattern = '.'yyyy-MM-dd

log4j.appender.F.Append = true

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

log4j.appender.F.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %5p %c{5}:%L - %m%n

###DailyRollingFileAppender###

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

log4j.appender.E.File = /export/Logs/error.log

log4j.appender.E.DatePattern = '.'yyyy-MM-dd

log4j.appender.E.Append = true

log4j.appender.E.Threshold = ERROR

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

log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %5p %c{5}:%L - %m%n

2、如果需要把job的日志输出到指定的文件中,只要追加如下内容即可,

log4j.logger.job=INFO,job

log4j.additivity.job = false #该配置就是让job的日志只输出到自己指定的日志文件中

log4j.appender.job = org.apache.log4j.DailyRollingFileAppender

log4j.appender.job.File = /export/Logs/job.log

log4j.appender.job.DatePattern = '.'yyyy-MM-dd

log4j.appender.job.Append = true

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

log4j.appender.job.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %5p %c{5}:%L - %m%n

还有一个问题,就是自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,所以job不要出现在

log4j.rootLogger = debug,CON,F,E中,否则其他的日志内容也会输出到该job的日志中

3、java代码如下:

public class ClearRubbishFileRunJob {

[color=darkred]private Logger logger = LoggerFactory.getLogger("job");[/color]

@Autowired

private SqlSessionTemplate session;

public void work() throws Exception {

logger.warn("--ClearRubbishFileRunJob开始执行--");

// 1、删除3天前的临时文件

try {

SimpleDateFormat sp =new SimpleDateFormat("yyyyMMdd");

Calendar s = Calendar.getInstance();

s.add(Calendar.DATE, -3);

Date d2 = s.getTime();

String bef2Date = sp.format(d2);

// 临时文件目录

String filePath = FilePathConstant.ROOT_PATH;

File fileDir = new File(filePath);

if (fileDir.exists() && fileDir.isDirectory()) {

for (File fd : fileDir.listFiles()) {

String dirName = fd.getName();

if (pareTo(dirName) >= 0) {

FileUtil.deleteFileAndChildren(fd);

}

}

}

} catch (Exception e) {

logger.error("删除临时文件出现异常,信息如下:" + e.getMessage());

e.printStackTrace();

}

logger.warn("--ClearRubbishFileRunJob执行结束--");

}

}

工具类:

/**

* 文件操作工具类

*

* @date 0205

* */

public class FileUtil implements Serializable {

private static final long serialVersionUID = 1L;

private FileUtil() {

}

/**

* 删除文件,单个文件。如果是文件夹并且包含子文件的情况下删除失败。需调用deleteFileAndChildren(File file)

*

* @date 0205

* */

public static void deleteFile(File file) {

if (file == null) {

return;

}

if (file.exists()) {

file.delete();

}

}

/**

* 删除文件及其所有子文件

*

* @date 0205

* */

public static void deleteFileAndChildren(File file) {

if (file == null) {

return;

}

// 判断文件是否存在

if (file.exists()) {

// 判断是不是文件夹

if (file.isDirectory()) {

File[] children = file.listFiles();

if (children != null) {

for (File child : children) {

deleteFileAndChildren(child);

}

}

file.delete();

} else {

// 非文件夹删除

file.delete();

}

}

}

/**

* 文件拷贝

* */

public static void copy(File srcFile, File dstFile) throws Exception {

if (srcFile == null || dstFile == null) {

return;

}

if (!srcFile.exists()) {

return;

}

dstFile.getParentFile().mkdirs();

InputStream in = new FileInputStream(srcFile);

OutputStream out = new FileOutputStream(dstFile);

byte[] buf = new byte[1024];

int len;

while ((len = in.read(buf)) > 0) {

out.write(buf, 0, len);

}

in.close();

out.close();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。