Java原生Logger与log4j基础总结与实例

前段时间出差,回来换到新的项目组,开发JavaSwing小工具。博客继续。
贴链接:http://blog.csdn.net/jediael_lu/article/details/32098879

java自带Logger

Logger中有3个比较重要的概念,分别是记录器(Logger)、处理器(Handler)与格式化器(Formatter)分别完成以下功能:
  • Logger:记录日志,设置日志级别等。
  • Handler:确定输出位置等。
  • Fomatter:根据自己的意愿对记录中的信息进行格式化。

1.Logger相关
构造对象
static Logger getLogger(String name);
static Logger getLogger(String name,String resourceBundleName);
//name是日志记录器的名字,如果使用同一个名字调用日志记录器就会产生相同的日志记录器对象
//resourceBundleName是指定的资源包名字

命名
原则上可以任意命名,实际上是与包名类似,具有层次结构。

级别
  • SEVERE
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST

可以使用ALL和OFF来开启或者关闭所有的记录。
默认情况下是只记录前3个级别,SEVERE,WARNING,INFO。

可以通过编辑配置文件来修改日志系统的各种属性:默认情况下文件存在于jre/lib/logging.properties
想要在控制台上看到FINE级别的消息,进行以下设置:
java.util.logging.ConsoleHandler.level=FINE

如果不想修改配置文件,可以安装自己的处理器:
Logger logger = Logger.getLogger("com.mycompany.myapp");
logger.setLevel(Level.FINE);
logger.setUseParentHandlers(false);
Handler handler = new ConsoleHandler();
handler.setLevel(Level.FINE);
logger.addHandler(handler);


2.Handler相关
可以给logger添加Handler来进行不同形式的输出:

ConsoleHandler:输出到控制台
默认情况下info级别以上的log都会输出到控制台的。
想要修改日志级别并且不想通过配置文件的时候,可以通过创建ConsoleHandler来修改输出级别(参看上面的例子)。

FileHandler:输出到文件
Logger logger = Logger.getLogger("test");
FileHandler fileHandler = new FileHandler("d:\\logtest.log");
logger.setLevel(Level.FINE);
logger.setUseParentHandlers(false);
//可以移除控制台的输出
fileHandler.setLevel(Level.FINE);
logger.addHandler(fileHandler);
logger.info("start log");
logger.fine("fine?");

未指定文件格式的情况下,日志输出格式为XML。
Java原生Logger与log4j基础总结与实例_第1张图片
SocketHandler:输出到网络

3.Formatter相关
public class Test {
    public static void main(String[] args) throws IOException {
    	Logger logger = Logger.getLogger("test");
    	FileHandler fileHandler = new FileHandler("d:\\logtest.log");
    	logger.setLevel(Level.FINE);
    	logger.setUseParentHandlers(false);
    	fileHandler.setLevel(Level.FINE);
    	fileHandler.setFormatter(new MyLogHander());
    	logger.addHandler(fileHandler);
    	logger.info("start log");
    	logger.fine("fine?");
    }
}

class MyLogHander extends Formatter {
	@Override
	public String format(LogRecord record) {
		formatMessage(record);
	        return record.getLevel() + ":" + record.getMessage()+"\n";
	}
}


log4j
明天继续。。。太困了。

你可能感兴趣的:(java,log4j,Logger)