/** * 写日志操作处理方法 * * @param caller 调用者类对象 * @param msg * @param level */ private static void writeLog(Object caller, String msg, Level level) { String logTag = ""; if (caller != null) { if (caller instanceof String) { logTag = caller.toString(); } else { logTag = caller.getClass().getName(); } } if (level.getLevel() < logLevel.getLevel()) { return; } if (!writeFile) { return; } File logFile = checkLogFile(); // 检查日志文件 if (logFile == null) { return; } /** * 组织日志输入内容 * */ String writeMsg = "[" + DateUtils.getCurrDateStr() + "] ["; writeMsg += level.getLevelDescn() + "] "; writeMsg += logTag + ": "; writeMsg += msg + "\n"; try { FileWriter fw = new FileWriter(logFile, true); fw.append(writeMsg); fw.close(); } catch (IOException e) { e.printStackTrace(); } }
/** * 写日志操作处理方法 * * @param caller 调用者类对象 * @param msg * @param level */ private static void outLog(Object caller, String msg, Level level) { String logTag = ""; if (caller != null) { if (caller instanceof String) { logTag = caller.toString(); } else { logTag = caller.getClass().getName(); } } if (level.getLevel() < logLevel.getLevel()) { return; } if (!isOutPut) { return; } /** * 组织输出内容 * */ String outMsg = "[" + DateUtils.getCurrDateStr() + "] ["; outMsg += level.getLevelDescn() + "] "; outMsg += logTag + ": "; outMsg += msg + "\n"; Utils.print(outMsg); }
/** * Logs a message to a file if the log level given matches the current log level. * * @param message Message to be logged * @param level Level when this should be logged */ public static void log(String message, Level level) { // If you try to log at level none, we deny you if (level == Level.NONE) return; if (level == currentLevel || level.getLevel() < currentLevel.getLevel()) { try { FileWriter fstream = new FileWriter(file, true); BufferedWriter out = new BufferedWriter(fstream); Date now = new Date(); String date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss:SSS z").format(now); String output = level.getName() + " - " + date + " - " + message + "\n"; out.write(output); System.out.print(output); out.close(); fstream.close(); } catch (Exception e) { System.err.println("Logger could not log message: " + e.getMessage()); } } }
public void initialize() { super.initialize(); log4JProperties = new Properties(); Map configuredAppenders = new HashMap(); if (appenders == null || appenders.size() == 0) { if (defaultAppender != null) { throw new IllegalArgumentException( "A default appender cant be specified without any appenders configured."); } defaultAppender = "anonymous"; log4JProperties.setProperty("log4j.appender.anonymous", "org.apache.log4j.ConsoleAppender"); log4JProperties.setProperty("log4j.appender.anonymous.threshold", getThresholdAsString()); log4JProperties.setProperty( "log4j.appender.anonymous.layout", "org.apache.log4j.PatternLayout"); log4JProperties.setProperty( "log4j.appender.anonymous.layout.conversionPattern", "%-4r [%t] %-5p %c %x - %m%n"); } else { for (int i = 0; i < appenders.size(); i++) { Appender appender = (Appender) appenders.get(i); String id = appender.getId(); if (configuredAppenders.containsKey(id)) { throw new IllegalArgumentException( "There already exists a appender with the id '" + id + "'."); } if (id == null) { throw new IllegalArgumentException("The appender must have a id."); } if (appender.getThreshold() == null) { appender.setThreshold(getThresholdAsString()); } if (appender.getConversionPattern() == null) { throw new IllegalArgumentException("The appender must have a conversion pattern."); } if (appender.getType() == null) { throw new IllegalArgumentException("The appender must have a type."); } try { Class.forName(appender.getType()); } catch (ClassNotFoundException ex) { throw new IllegalArgumentException( "Could not find the appender class: " + appender.getType(), ex); } catch (LinkageError ex) { throw new IllegalArgumentException( "Could load the appender class: " + appender.getType(), ex); } String base = "log4j.appender." + id; log4JProperties.setProperty(base, appender.getType()); log4JProperties.setProperty(base + ".threshold", appender.getThreshold()); log4JProperties.setProperty(base + ".layout", "org.apache.log4j.PatternLayout"); log4JProperties.setProperty( base + ".layout.conversionPattern", appender.getConversionPattern()); Enumeration e = appender.getProperties().keys(); while (e.hasMoreElements()) { String key = e.nextElement().toString(); log4JProperties.setProperty(base + "." + key, appender.getProperty(key)); if ("file".equals(key)) { File logFile = new File(appender.getProperty(key)); File logDir = logFile.getParentFile(); if (!logDir.exists()) { logDir.mkdirs(); } } } configuredAppenders.put(id, appender); } if (defaultAppender == null) { if (configuredAppenders.size() == 1) { defaultAppender = ((Appender) appenders.get(0)).getId(); } else { throw new IllegalArgumentException( "A default appender must be specified when having several appenders."); } } else { StringTokenizer tokenizer = new StringTokenizer(defaultAppender, ","); while (tokenizer.hasMoreTokens()) { String appender = tokenizer.nextToken(); if (!configuredAppenders.containsKey(appender)) { throw new IllegalArgumentException( "Could not find the default appender: '" + defaultAppender + "'."); } } } } if (levels != null && levels.size() > 0) { for (Iterator it = levels.iterator(); it.hasNext(); ) { Level level = (Level) it.next(); log4JProperties.put("log4j.logger." + level.getHierarchy(), level.getLevel()); } } if (getThresholdAsString() == null) { throw new IllegalArgumentException("INTERNAL ERROR: The threshold must be set."); } if (defaultAppender == null) { throw new IllegalArgumentException("INTERNAL ERROR: The default appender must be set."); } log4JProperties.setProperty("log4j.rootLogger", getThresholdAsString() + "," + defaultAppender); }