日期:2014-05-20  浏览次数:20749 次

log4j使用疑惑
用log4j输出日志文件。
多线程运行时,每个线程的日志都写到一个文件中了,很混乱。
有办法在运行时指定输出的文件名吗

------解决方案--------------------
oo神奇阿 厉害阿阿阿
------解决方案--------------------
1、配置log4j的配置文件

#log4j.properties配置

log4j.rootLogger=ALL, A1
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=C:/log4j/TEST.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n


2、java中重新设置输出文件

import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Logger;

public class SetLogFileName {
 public SetLogFileName(String filename){
DailyRollingFileAppender appender = (DailyRollingFileAppender)Logger.getRootLogger().getAppender("A1");
appender.setFile( "c:/log4j/"+filename+".log");//动态地修改这个文件名 
appender.activateOptions();
 }
}

3、调用log4j输出文件

import org.apache.log4j.Logger;

public class OutPutLog {
static Logger logger = Logger.getLogger(OutPutLog.class);
/**
* @param args
*/
public static void main(String[] args) {
SetLogFileName D = new SetLogFileName("trust");
// TODO Auto-generated method stub
logger.info("PIG");

}


}
------解决方案--------------------
新手同问。。
------解决方案--------------------
给你个例子把,希望能帮到你


/*
 * 文 件 名:  Logger.java
 * 版    权:  
 * 描    述:  <描述>
 * 修 改 人:  
 * 修改时间:  2012-12-25
 * 修改内容:  <修改内容>
 */
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

import cn.com.newdt.travelitinerary.vo.LogType;
/**
 * <日志控制类>
 * <完成日志输出>
 * 
 * @author  
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 * 日志输出到服务器D盘''文件夹下,
 * 并且根据系统日期每天都会生成对应的终端日志文件
 *
 */
public class  LoggerUtil{


/** 存放的文件夹 **/
    private static String file_name = "日志";
    
    /**
     * 得到要记录的日志的路径及文件名称
     * @return
     */
    private static String getLogName(String terminalNo,String type) {
        StringBuffer logPath = new StringBuffer();
        logPath.append("D:\\"+file_name);
        File file = new File(logPath.toString());
        if (!file.exists())