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

其实只要在现有的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 (bef2Date.compareTo(dirName) >= 0) {

FileUtil.deleteFileAndChildren(fd);

}

}

}

} catch (Exception e) {

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

e.printStackTrace();

}

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

}

}

工具类:

/**

* 文件操作工具类

*

* @date 20150205

* */

public class FileUtil implements Serializable {

private static final long serialVersionUID = 1L;

private FileUtil() {

}

/**

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

*

* @date 20150205

* */

public static void deleteFile(File file) {

if (file == null) {

return;

}

if (file.exists()) {

file.delete();

}

}

/**

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

*

* @date 20150205

* */

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();

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

  1. SpringBoot整合:Druid、MyBatis、MyBatis-Plus、多数据源、knife4j、日志、Redis,Redis的Java操作工具类、封装发送电子邮件等等

    SpringBoot笔记 一.SpringBoot 介绍 1.1.SpringBoot简介 SpringBoot 是一个快速开发的框架, 封装了Maven常用依赖.能够快速的整合第三方框架:简化XML ...

  2. java+自定义异常类+输入若干成绩 为负数时输出抛出异常_java+自定义异常类+输入若干成绩 为...

    java+自定义异常类+输入若干成绩 为 [2021-02-10 19:00:54]  简介: java中定义类的关键字是:"class".在Java中定义一个类,需要使用&quo ...

  3. java流类图结构_java I/O 流总结

    一.java 流操作有关的类和接口: 类                                                                          说明 Fil ...

  4. java client类_Jmeter中自定义JavaSamplerClient类的编写

    自定义的JavaSamplerClient类需要满足以下几个条件: 1.需要把Jmter的ext目录下的ApacheJmeter_core.jar和ApacheJmetere_java.jar 引入到 ...

  5. Java Thread类的使用

    From:http://www.cnblogs.com/dolphin0520/p/3920357.html 一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态, ...

  6. MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结

    在此,首先说明一点任何持久性框架都需要解决一个问题,那就是Java实体类的字段一般来说基本上会与数据库表中字段不一致,那么它们是如何解决的呢?咱们以Hibernate和SpringJDBC为例说明一下 ...

  7. java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用

    java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...

  8. Java常用类,这一次帮你总结好!

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 16 分钟. 作者:WenTaoTao 来源:www.cnblogs.com/lwtyyds/p/15678152.html ...

  9. C、C++、C#、python、java编程—类的使用

    (一)C语言--没有类的概念 (二)C++ C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计.类是 C++ 的核心特性,通常被称为用户定义的类型. 类用于指定对象的形式,它 ...

最新文章

  1. 转 如何利用客户端缓存对网站进行优化?
  2. php转盘抽奖源码yii2,yii2实现 上一篇,下一篇 功能的代码实例
  3. React 和 Vue的特点
  4. mysql-bin_MySQL - binlog日志简介及设置
  5. 我的内核学习笔记14:内核设备树学习
  6. CrtmpServer 接收推送视频流 注册流基本流程
  7. Latent Dirichlet Allocation(LDA)
  8. 帝国的黄昏:SQL是世界上最牛逼的语言
  9. vue路由(router)设置:父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失
  10. 怎么让百度收录站点的图片呢?
  11. JavaWeb中实现验证码(ssh框架版)
  12. 适合新手——MySQL中基于SQL语言增删改查等基础的练习大汇总
  13. 计算机强制关机后桌面图标不见了,强制关机后桌面上的图标全不见了怎么办
  14. python怎么复数乘方开方_一篇小文入门 Python
  15. c语言n个自然数得阶乘求和,计算n个自然数阶乘的和
  16. 微信小程序外卖平台,免费下载小程序外卖源代码
  17. 单亲家庭父子的理财通信
  18. 服务器没有立即响应请求,服务器没有及时响应或控制请求
  19. 多元(二元)函数极限的存在性问题
  20. HTML期末大作业: 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做

热门文章

  1. 线性代数第四章 向量组的线性相关性
  2. 输入框input type=“text“(获取值、设置默认值)
  3. 根据血象化验单判断感冒类型
  4. Android 9.0 GMS 桌面布局修改
  5. 网络安全等级保护指南|网络安全等级保护测评周期需要多久
  6. 【智能合约】Go语言调用智能合约 | geth
  7. 【保研夏令营经验贴】2021武汉大学国家网络安全学院+华中科技大学网络空间安全学院+华中科技大学武汉光电国家研究中心
  8. 中文技术文档的写作规范
  9. Android展开悬浮窗功能,Android 悬浮窗 (附圆形菜单悬浮窗)
  10. 率先断供华为,Google现在后悔了