⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logwriterlog4jimpl.java

📁 Java的面向对象数据库系统的源代码
💻 JAVA
字号:
// You can redistribute this software and/or modify it under the terms of// the Ozone Library License version 1 published by ozone-db.org.//// The original code and portions created by SMB are// Copyright (C) 2000 by DigitalSesame. All rights reserved.//// $Id: LogWriterLog4JImpl.java,v 1.9 2004/03/29 20:49:45 wieslawf Exp $package org.ozoneDB.util;import java.io.*;import org.apache.log4j.*;/** * @author <a href="mailto:david@d11e.com">David Li</a> * @author Per Nyfelt */public class LogWriterLog4JImpl implements LogWriter {        private static final String OZONE_BASE_PACKAGE = "org.ozoneDB";    public static final String PATTERN_LAYOUT = "%-6p [%t] %c{1} - %m%n";        /* The ozone root category */    //private Logger ozoneRoot;        /**     * Current log level     */    private int currentLogLevel;        /**     * A set of log target. This is to avoid the duplicated addition     * of log target     */    //private Set logTargets = new HashSet();            public LogWriterLog4JImpl(File configDir, Level level) throws IOException {                setUpLogging(configDir, level);        currentLogLevel = level.toInt();                // the base logging category for all our classes        //ozoneRoot = Logger.getLogger(OZONE_BASE_PACKAGE);                // this is needed by the Server shutdownHook        createLogger(OzoneLogger.getLogger("java.lang"));    }        public void setUpLogging(File configDir, Level level) throws IOException {        File loggingPropsFile = new File(configDir, LOG_CONFIG_FILE_NAME);        if (!loggingPropsFile.exists()) {            createLoggingProps(loggingPropsFile, new File(configDir, LOG_FILE), level.toString());        }                System.out.println("Loading props for " + loggingPropsFile);        PropertyConfigurator.configure(loggingPropsFile.getAbsolutePath());    }        private void createLoggingProps(File loggingPropsfile, File logFile, String logLevel) throws IOException {        FileWriter out = new FileWriter(loggingPropsfile);                //String fileLog = databaseDir + LOG_FILE;        //logWriter.addLogTarget("stdout", System.out, debugLevel );        //logWriter.addLogTarget(fileLog, new FileOutputStream( fileLog ), debugLevel );                // see log4j documentation        out.write("############ Logger Factory #################\n");        out.write("log4j.loggerFactory=org.ozoneDB.util.OzoneLoggerFactory\n");        out.write("\n############ Console Appender ###############\n");        out.write("log4j.appender.stdout=org.apache.log4j.ConsoleAppender\n");        out.write("log4j.appender.stdout.layout=org.apache.log4j.PatternLayout\n");        out.write("# Pattern to output the caller's file name and line number.\n");        out.write("log4j.appender.stdout.layout.ConversionPattern=" + PATTERN_LAYOUT + "\n");                out.write("\n############ File Appender ###############\n");        out.write("log4j.appender.file=org.apache.log4j.RollingFileAppender\n");        out.write("log4j.appender.file.layout=org.apache.log4j.PatternLayout\n");        out.write("log4j.appender.file.layout.ConversionPattern=" + PATTERN_LAYOUT + "\n");        out.write("log4j.appender.file.MaxFileSize=2MB\n");        out.write("log4j.appender.file.MaxBackupIndex=4\n");        out.write("log4j.appender.file.File=" + ensureFileFormat(logFile.getCanonicalPath()) + "\n");                out.write("\n############ Log levels ###############\n");        out.write("log4j.logger." + OZONE_BASE_PACKAGE + "=" + logLevel + "#org.ozoneDB.util.OzoneDebugLevel, stdout, file\n");        // add an appender to test classes so that log4j can be used        out.write("log4j.logger.test=INFO#org.ozoneDB.util.OzoneDebugLevel, stdout, file\n");        out.write("# Example - turning up debugging on core\n");        out.write("#log4j.logger.org.ozoneDB.core=DEBUG2#org.ozoneDB.util.OzoneDebugLevel, stdout, file\n");        out.write("#log4j.additivity.org.ozoneDB.core=false\n");        out.flush();        out.close();    }        /** ensure properties file format. Windows single \ will not work     * so we need to change it. Front slashes works fine. */    private String ensureFileFormat(String path) {        return path.replace('\\', '/');    }        /**     * This method allows to quickly find out if there is any log target that     * would receive entries of the specified level.     */    public boolean hasTarget(int level) {        return level >= currentLogLevel;    }        /*    private void addLogTarget(int level) {        currentLogLevel = level;        ozoneRoot.setLevel(OzoneDebugLevel.toLevel(level));    } *//*    public void addLogTarget(String name, OutputStream out, int level) {        if (logTargets.add(out)) {            Appender appender = new WriterAppender(getLayout(), out);            appender.setName(name);            ozoneRoot.addAppender(appender);            addLogTarget(level);        }    }      public void addLogTarget(PrintWriter writer, int level, String name) {        if (logTargets.add(writer)) {            Appender appender = new WriterAppender(getLayout(), writer);            appender.setName(name);            ozoneRoot.addAppender(appender);            addLogTarget(level);        }    } */    private void createLogger(Logger logger) {        Appender appender = new ConsoleAppender(new PatternLayout(PATTERN_LAYOUT));        appender.setName(logger.getName());        logger.addAppender(appender);        logger.setLevel(OzoneDebugLevel.INFO);    }        public void newEntry(Object sender, String msg, int level) {        OzoneLogger logger = (OzoneLogger) OzoneLogger.getInstance(sender != null ? sender.getClass().getName() : LogWriterLog4JImpl.class.getName());        logger.log(OzoneDebugLevel.toLevel(level), msg);    }        public void newEntry(Object sender, String msg, Throwable e, int level) {        OzoneLogger logger = (OzoneLogger) OzoneLogger.getInstance(sender != null ? sender.getClass().getName() : LogWriterLog4JImpl.class.getName());        logger.log(OzoneDebugLevel.toLevel(level), msg, e);    }        public static void printLogInfo(Logger logger) {        if (logger == null) {            System.out.println("logger is null");            return;        }        java.util.Enumeration e = logger.getAllAppenders();        Appender appender;        System.out.println("\nLog info for " + logger.getName());        final String space = "\t\t\t";        while (e.hasMoreElements()) {            appender = (Appender) e.nextElement();            System.out.println(appender.getName() + space            + appender.getClass().getName());        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -