📄 configuration.java
字号:
package main.cn.edu.nju.software.sd.cll;
import java.io.*;
import java.util.*;
/**
* Logger的配置类,用于在logger创建时配置logger的level,format,destination
* @author ohai
* */
public class Configuration {
private static String path = readClasspath();
private 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的配置
*
* @param rootLogger 根logger,Logger类共有的祖先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的配置
* @param 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
* @param logger 需要配置level的logger
* */
private 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
* @param logger 需要进行配置的logger
* */
private 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
* @param logger 需要进行配置destination的logger
* */
private 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 + -