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 (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实现特定功能的日志单独输出到指定的日志文件...相关推荐
- SpringBoot整合:Druid、MyBatis、MyBatis-Plus、多数据源、knife4j、日志、Redis,Redis的Java操作工具类、封装发送电子邮件等等
SpringBoot笔记 一.SpringBoot 介绍 1.1.SpringBoot简介 SpringBoot 是一个快速开发的框架, 封装了Maven常用依赖.能够快速的整合第三方框架:简化XML ...
- java+自定义异常类+输入若干成绩 为负数时输出抛出异常_java+自定义异常类+输入若干成绩 为...
java+自定义异常类+输入若干成绩 为 [2021-02-10 19:00:54] 简介: java中定义类的关键字是:"class".在Java中定义一个类,需要使用&quo ...
- java流类图结构_java I/O 流总结
一.java 流操作有关的类和接口: 类 说明 Fil ...
- java client类_Jmeter中自定义JavaSamplerClient类的编写
自定义的JavaSamplerClient类需要满足以下几个条件: 1.需要把Jmter的ext目录下的ApacheJmeter_core.jar和ApacheJmetere_java.jar 引入到 ...
- Java Thread类的使用
From:http://www.cnblogs.com/dolphin0520/p/3920357.html 一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态, ...
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
在此,首先说明一点任何持久性框架都需要解决一个问题,那就是Java实体类的字段一般来说基本上会与数据库表中字段不一致,那么它们是如何解决的呢?咱们以Hibernate和SpringJDBC为例说明一下 ...
- java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用
java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...
- Java常用类,这一次帮你总结好!
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 16 分钟. 作者:WenTaoTao 来源:www.cnblogs.com/lwtyyds/p/15678152.html ...
- C、C++、C#、python、java编程—类的使用
(一)C语言--没有类的概念 (二)C++ C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计.类是 C++ 的核心特性,通常被称为用户定义的类型. 类用于指定对象的形式,它 ...
最新文章
- 转 如何利用客户端缓存对网站进行优化?
- php转盘抽奖源码yii2,yii2实现 上一篇,下一篇 功能的代码实例
- React 和 Vue的特点
- mysql-bin_MySQL - binlog日志简介及设置
- 我的内核学习笔记14:内核设备树学习
- CrtmpServer 接收推送视频流 注册流基本流程
- Latent Dirichlet Allocation(LDA)
- 帝国的黄昏:SQL是世界上最牛逼的语言
- vue路由(router)设置:父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失
- 怎么让百度收录站点的图片呢?
- JavaWeb中实现验证码(ssh框架版)
- 适合新手——MySQL中基于SQL语言增删改查等基础的练习大汇总
- 计算机强制关机后桌面图标不见了,强制关机后桌面上的图标全不见了怎么办
- python怎么复数乘方开方_一篇小文入门 Python
- c语言n个自然数得阶乘求和,计算n个自然数阶乘的和
- 微信小程序外卖平台,免费下载小程序外卖源代码
- 单亲家庭父子的理财通信
- 服务器没有立即响应请求,服务器没有及时响应或控制请求
- 多元(二元)函数极限的存在性问题
- HTML期末大作业: 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做
热门文章
- 线性代数第四章 向量组的线性相关性
- 输入框input type=“text“(获取值、设置默认值)
- 根据血象化验单判断感冒类型
- Android 9.0 GMS 桌面布局修改
- 网络安全等级保护指南|网络安全等级保护测评周期需要多久
- 【智能合约】Go语言调用智能合约 | geth
- 【保研夏令营经验贴】2021武汉大学国家网络安全学院+华中科技大学网络空间安全学院+华中科技大学武汉光电国家研究中心
- 中文技术文档的写作规范
- Android展开悬浮窗功能,Android 悬浮窗 (附圆形菜单悬浮窗)
- 率先断供华为,Google现在后悔了