目前用的log4j.properties

本文详细介绍了如何通过Log4j配置将所有日志统一输出到一个文件,并将错误日志单独抽离到另一个文件中,以提高日志管理效率。文章还提供了日志文件路径的动态设置和异常信息单独保存的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此配置把全部日志写到一个文件,然后把error日志抽出来再单独写一个文件
这样查找日志方便点。。。

### set log levels ###
log4j.rootLogger = info, stdout, D, E


### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c:%L - %m%n


### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${WORKDIR}/logs/log.log
log4j.appender.D.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - %c:%L - [%p] %m%n


### 保存异常信息到单独文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
## 异常日志文件名
log4j.appender.E.File = ${WORKDIR}/logs/error.log
log4j.appender.E.Append = true
## 只输出ERROR级别以上的日志!!!
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} [%t\:%r] - %c:%L - [%p] %m%n


${WORKDIR} 在容器启动的时候添加:
/**
* WebContainerListener.java
*
* Created Date: 2010/07/12
* Last Update: 2010/07/12
*
* Copyright (c) Wunderman. All Rights Reserved.
*/
package com.cal.interceptor;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
* @version 1.00
*
* <b>修改历史:</b><br>
* @history 2010/07/12: 初版
* @author mahongmin
* @peer review
*
*
*/
public class WebContainerListener implements ServletContextListener{

/**
* 容器生命周期结束
*/
public void contextDestroyed(ServletContextEvent sce) {

}

/**
* 容器初始化
*/
public void contextInitialized(ServletContextEvent sce) {
createLogFile(sce);
}

/**
* 如果没有日志文件,则创建
* @param sce
*/
private void createLogFile(ServletContextEvent sce){
String root = sce.getServletContext().getRealPath("");
String separator = File.separator ;
//全部日志
String logName = "log.log" ;
//仅错误日志
String logEName = "error.log" ;
String directoryLog = root + separator + "logs";
String directoryELog = root + separator + "logs";
File fLog = new File(directoryLog , logName) ;
File fELog = new File(directoryELog , logEName) ;
if(!fLog.exists()) {
fLog.getParentFile().mkdirs() ;
try {
fLog.createNewFile() ;
} catch (IOException e) {
e.printStackTrace();
}
}
if(!fELog.exists()) {
fELog.getParentFile().mkdirs() ;
try {
fELog.createNewFile() ;
} catch (IOException e) {
e.printStackTrace();
}
}
System.setProperty("WORKDIR", root);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值