log4j.properies 问题汇总

来源:互联网 发布:好用的美白精华知乎 编辑:程序博客网 时间:2024/06/05 03:33
######################## 系统运行日志配置文件 ########################E:/tomcat7/apache-tomcat-7.0.6/webapps/FMCP/logs/run.log

######################## 系统运行日志配置文件 ########################

##系统开发时可设为DEBUG级别 log4j.logger.com.huawei=DEBUG
##系统发布时请设为INFO级别 log4j.logger.com.huawei=INFO

log_home=./logs

#Log4j默认记录器  级别分为 FATAL、ERROR、WARN、INFO、DEBUG  /SYSTEM日志记录方式可分为   SYSTEM和CONSOLE  其中SYSTEM表示日志记录到文件  CONSOLE表示打印到控制台
log4j.rootLogger=INFO,SYSTEM
#运行日志记录器 日志级别可分为 FATAL、ERROR、WARN、INFO、DEBUG 修改此处必须重新启动服务

#log4j.addivity.org.apache=true

#打印到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[FMCP] %d{yy-MM-dd HH:mm:ss,SSS} %c %-5p  %x - %m%n

#打印到文件,每天产生一个新的文件
log4j.appender.SYSTEM=org.apache.log4j.DailyRollingFileAppender
log4j.appender.SYSTEM.File=/WEB-INF/logs/run/run.log
log4j.appender.SYSTEM.DatePattern=yyyy-MM-dd'.log'
log4j.appender.SYSTEM.Append=true
log4j.appender.SYSTEM.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSTEM.layout.ConversionPattern=[FMCP] %d  [%t] %c %-5p %x  %m%n
#log4j.appender.SYSTEM.layout.ConversionPattern=[PORTAL] %d  [%t]  %-5p  %c  %x  %m%n

log4j.logger.MONITOR=INFO,MONITOR
log4j.additivity.MONITOR=false
log4j.appender.MONITOR=com.njhh.fmcp.log.FMCPRollingFileAppender
log4j.appender.MONITOR.File=${webapp.root}/WEB-INF/logs/monitor/monitor.log
log4j.appender.MONITOR.Append=true
log4j.appender.MONITOR.layout=org.apache.log4j.PatternLayout
log4j.appender.MONITOR.layout.ConversionPattern=[FMCP] %d  [%t] %c %-5p %x  %m%n
log4j.appender.MONITOR.MaxBackupIndex=30
log4j.appender.MONITOR.MaxFileSize=10MB



1:log4j.appender.MONITOR.Append=true 日志打印,设置为false不打印

2:log4j.additivity.MONITOR=false 打印到log4j.appender.MONITOR.File对应的文件中,默认为true,打印到log4j.rootLogger对应的SYSTEM指向的log4j.appender.SYSTEM.File对应的文件中

3:如果要控制日志文件的个数、生成文件名,需要重写FileAppender

import java.io.File;
import java.io.IOException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import org.apache.log4j.FileAppender;
import org.apache.log4j.Layout;
import org.apache.log4j.helpers.CountingQuietWriter;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.helpers.OptionConverter;
import org.apache.log4j.spi.LoggingEvent;

/**
 * 日志文件
 * @author
 *
 */
public class FMCPRollingFileAppender extends FileAppender {
    private long maxFileSize = 10485760L;

    private int maxBackupIndex = 1;

    private long nextRollover = 0L;

    public FMCPRollingFileAppender(Layout layout, String filename, boolean append)
            throws IOException {
        super(layout, filename, append);
    }

    public FMCPRollingFileAppender(Layout layout, String filename)
            throws IOException {
        super(layout, filename);
    }

    public FMCPRollingFileAppender() {
    }

    public void rollOver() {
        if (this.qw != null) {
            long size = ((CountingQuietWriter) this.qw).getCount();

            System.out.println("rolling over count=" + size);

            this.nextRollover = (size + this.maxFileSize);
        }

        System.out.println("maxBackupIndex=" + this.maxBackupIndex);

        boolean renameSucceeded = true;

        if (this.maxBackupIndex > 0) {
            File file = null;

            String currUtcTime = getyyyyMMddHHmmssLog();
            String currfileName = this.fileName.substring(0, this.fileName
                    .indexOf(".log"));

            File target = new File(currfileName + "_" + currUtcTime + ".log");

            super.closeFile();

            file = new File(this.fileName);

            System.out.println("Renaming file " + file + " to " + target);

            renameSucceeded = file.renameTo(target);

            if (!renameSucceeded) {
                try {
                    setFile(this.fileName, true, this.bufferedIO,
                            this.bufferSize);
                } catch (IOException e) {
                    LogLog.error("setFile(" + this.fileName
                            + ", true) call failed.", e);
                }

            }

            List fileNamelist = getFileNameList(this.fileName);

            if (fileNamelist.size() > this.maxBackupIndex) {
                String overtimeFilename = null;

                int i = 0;
                for (; i < fileNamelist.size() - this.maxBackupIndex + 1; i++) {
                    overtimeFilename = (String) fileNamelist.get(i);
                    file = new File(overtimeFilename);
                    if (!file.exists())
                        continue;
                    renameSucceeded = file.delete();
                }

            }

        }

        try {
            setFile(this.fileName, false, this.bufferedIO, this.bufferSize);
            this.nextRollover = 0L;
        } catch (IOException e) {
            System.out.println("setFile(" + this.fileName + ", false) call failed.");
        }
    }

    public synchronized void setFile(String fileName, boolean append,
            boolean bufferedIO, int bufferSize) throws IOException {
        super.setFile(fileName, append, this.bufferedIO, this.bufferSize);

        if (append) {
            File file = new File(fileName);
            ((CountingQuietWriter) this.qw).setCount(file.length());
        }
    }

    public void setMaxBackupIndex(int maxBackups) {
        this.maxBackupIndex = maxBackups;
    }

    public void setMaximumFileSize(long curmaxFileSize) {
        this.maxFileSize = curmaxFileSize;
    }

    public void setMaxFileSize(String value) {
        this.maxFileSize = OptionConverter.toFileSize(value,
                this.maxFileSize + 1L);
    }

    public void setQWForFiles(Writer writer) {
        this.qw = new CountingQuietWriter(writer, this.errorHandler);
    }

    public void subAppend(LoggingEvent event) {
        super.subAppend(event);

        if ((null != this.fileName) && (null != this.qw)) {
            long size = ((CountingQuietWriter) this.qw).getCount();

            if ((size >= this.maxFileSize) && (size >= this.nextRollover)) {
                rollOver();
            }
        }
    }

    public static String getyyyyMMddHHmmssLog() {
        SimpleDateFormat uTCyyyyMMddHHmmssLog = new SimpleDateFormat(
                "yyyyMMddHHmmss");
        return uTCyyyyMMddHHmmssLog.format(new Date());
    }

    protected List<String> getFileNameList(String filename) {
        List fileNameList = new ArrayList();

        String filePath = filename.substring(0, filename.lastIndexOf("/"));

        String currfileName = filename.substring(filename.lastIndexOf("/") + 1);

        currfileName = currfileName.substring(0, currfileName.indexOf(".log"));

        File file = new File(filePath);

        if (file.isDirectory()) {
            File[] files = file.listFiles();

            File temp = null;

            for (int i = 0; i < files.length; i++) {
                temp = files[i];

                if (!temp.getName().contains(currfileName))
                    continue;
                fileNameList.add(filePath + "/" + temp.getName());
            }

        }

        Collections.sort(fileNameList);

        if (null != fileNameList) {
            if (!fileNameList.isEmpty()) {
                fileNameList.remove(fileNameList.size() - 1);
            }
        }

        return fileNameList;
    }
}

0 0