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

📄 3033ef10928b001c1bbfa32aa88923c4

📁 一个类似于log4j的小软件
💻
字号:
package main.cn.edu.nju.software.sd.cll;
import java.io.*;
import java.util.*;

public class Configuration {
	public static String path = readClasspath();
	public static Properties configuration= new Properties();
	
/**读取工程的classpath,获得配置文件的路径*/	
	public static String readClasspath()
	{
		String p = System.getProperty("java.class.path");
		String classpath = null;
		int semi = p.indexOf(";");
		if(semi==-1)
		{
			classpath = p+"/loggerConfiguration.txt";
		}
		else
		{
			classpath = p.substring(0, semi) + "/loggerConfiguration.txt";
		}
		return classpath;
	}
/**配置root logger,配置文件要确保有root logger的配置*/	
	public static void initRootLogger(Logger rootLogger){
		try
		{
			configuration.load(new FileInputStream(path));
			String rootlevel = configuration.getProperty(".level");
			String rootformat = configuration.getProperty(".format");
			String rootdestination = configuration.getProperty(".destination");
			if(rootlevel==null)
				rootLogger.setLevel(Logger.defaultLevel);
			else
				rootLogger.setLevel(Level.toLevel(rootlevel));
			if(rootformat==null)
				rootLogger.setFormat(Logger.defaultFormat);
			else
				rootLogger.setFormat(new Format(rootformat));
			if(rootdestination==null)
				rootLogger.addHandler(Logger.defaultHandler);
			else
			{
				String[] str = rootdestination.split(",");
				for(int i=0;i<str.length;i++)
				{
					if(str[i].equalsIgnoreCase("CONSOLE"))
					{
						rootLogger.addHandler(new ConsoleHandler());
					}
					else if(str[i].equalsIgnoreCase("FILE"))
					{
						String files = configuration.getProperty(".destination.file");
						rootLogger.addHandler(new FileHandler(files));
					}
				}
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
/**配置logger,如果配置文件有相应的配置,则用配置文件的配置,否则继承父logger的配置*/	
	public static void config(Logger logger) {
		try {
			configuration.load(new FileInputStream(path));
			
			configLevel(logger);
			configDestination(logger);
			configFormat(logger);		
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	
	/**从配置文件读取信息配置logger的level*/
	public static void configLevel(Logger logger)
	{
		String levelstr = configuration.getProperty(logger.getName()+".level");
		if(levelstr==null)
		{
			logger.setLevel(null);
		}
		else
		{
			Level l = Level.toLevel(levelstr);
			logger.setLevel(l);
		}
	}
	/**从配置文件中读取信息配置format*/
	public static void configFormat(Logger logger)
	{
		String formatstr = configuration.getProperty(logger.getName()+".format");
		if(formatstr==null)
		{
			logger.setFormat(null);
		}
		else
		{
			Format f = new Format(formatstr);
			logger.setFormat(f);
		}
	}
	/**从配置文件中读取信息配置destination*/
	public static void configDestination(Logger logger)
	{
		String desStr = configuration.getProperty(logger.getName()+".destination");
		if(desStr==null)
		{
			logger.addHandler(null);
		}
		else
		{
			String[] des = desStr.split(",");
			for(int i=0;i<des.length;i++)
			{
				if(des[i].equalsIgnoreCase("CONSOLE"))
				{
					logger.addHandler(new ConsoleHandler());
				}
				else if(des[i].equalsIgnoreCase("FILE"))
				{
					String files = configuration.getProperty(logger.getName()+".destination.file");
					logger.addHandler(new FileHandler(files));
				}
			}
		}
	}
}

⌨️ 快捷键说明

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