- 浏览: 654646 次
- 性别:
- 来自: 深圳
博客专栏
-
Hadoop学习
浏览量:249972
最新评论
-
leibnitz:
请问,你知道在FSEdigLog#loadFSEdits()时 ...
Hadoop学习二十三:Hadoop-Hdfs FSDirectory 源码 -
jiaqing_blog:
七.等待队列(本是Object里的方法,但影响了线程)noti ...
多线程总结二:线程的状态转换 -
haaarySun:
虽然是三年前的帖子,但还是想回复博主,logger是继承了ca ...
Java日志学习三:Apache Log4j源码浅析 -
annmi_cai:
好好学习,天天向上!
Hadoop学习四:Hadoop-Hdfs NameNode -
emotionText:
楼主你好!我运行报错SLF4J: Class path con ...
Hadoop学习三十:Win7 Eclipse调试Centos Hadoop2.2-Mapreduce
文章列表
Java日志学习六:各种日志系统间的桥接
- 博客分类:
- 日志
一.四种日志系统
JCL http://zy19982004.iteye.com/blog/1991328
Apache Log4j http://zy19982004.iteye.com/blog/1992939
Slf4j http://zy19982004.iteye.com/blog/1993059
JDK Logger http://zy19982004.iteye.com/blog/1993209
二.为什么会有桥接
除了JDK Logger是一个纯粹的日志实现之外,其它三个日志系统都是api+impl的形式。每个人都想去做门面,让别的厂商做实现 ...
Java日志学习五:JDK Logger源码
- 博客分类:
- 日志
一.JDK Logger
JDK从1.4版本开始有了自己的日志系统,相比log4j slf4j jcl,JDK Logger显得简单明了,它没有像其它几个框架,都想去做门面,它只是简单的做了自己的事情。下一篇文章将详细比较这四个日志以及相互之间的桥接。在此不啰嗦。
二.JDK Logger核心类
Logger:日志类。
LogManager:日志管理类,读取配置文件,创建日志,缓存日志都有它完成了。类似于Log4j的LogManager。
LogRecord:日志信息类。
Level:日志级别。六个单词的国际化资源在sun.util.logging.resour ...
一.SLF4J
http://www.slf4j.org/
二.SLF4J核心类
Logger:日志类。
LoggerFactory:负责查找系统里日志的实现,负责创建日志。类似JCL的LogFactory,类似log4j的LogManager。
ILoggerFactory:该接口只有一个getLogger(name)方法。类似log4j的LoggerRepository 。
LoggerFactoryBinder:该接口可以ILoggerFactory getLoggerFactory()。累世log4j的RepositorySelector。
Stat ...
一.Apache Log4j
http://logging.apache.org/log4j/2.x/
本文只讲初始化Logger的过程。
二.Apache Log4j里的几个核心类
Logger:日志类。getLogger()交给LogManager去实现。
Level:八个级别。 #OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,ALL。
LogManager:Use the LogManager class to retreive Logger instances or to operate on the current LoggerR ...
一.Apache Commons Logging
http://zy19982004.iteye.com/blog/1867448里提到了commons-logging的工作方式,本文将看下代码怎么实现这一工作方式。
二.Apache Commons Logging类结构
就这么简单,一个接口包,一个实现包。
三.类说明
Log:A simple logging interface abstracting logging APIs,和JDBC API是一个性质的东西
Level。对六种日志级别的操作,官网建议我们这样用:
http://co ...
一.ContextClassLoader
ContextClassLoader只是一个逻辑上的概念,在Java Api里并没有一个叫ContextClassLoader的类。
JVM默认类加载体系已经能满足大部分情况的使用了,那为什么还需要ContextClassLoader呢。但有时候这样的加载体系并不能满足要求,比喻需要动态加载应用程序开发人员提供的资源时。考虑JDBC的实现,JDK中的JDBC Api是由BootStrap加载的,当我们确定使用某一厂商的JDBC实现时,实现类也会由BootstrapLoader加载,显然BootstrapLoader是加载不了的。于是就出现了 ...
一.自定义ClassLoader关键
是继承ClassLoader还是继承URLClassLoader。
如果你的class文件存放于一个JAR文件里,同时你需要一些自己的load策略,可以考虑继承URLClassLoader。
如果你的class文件位于其它地方,继承ClassLoader。比喻位于普通文件夹里,可以自定义一个JyzClassLoader;如果位于网络上,可以定义一个NetworkClassLoaer,等等。
class NetworkClassLoader extends ClassLoader {
String host;
...
一.ClassLoader源码继承图
SecureClassLoader:这个类我没做深入研究,你把它当成一个增强版的ClassLoader,增强了从何地load class,增强了能不能load这些代码权限。
二.源码
public abstract class ClassLoader {
// 父ClassLoader
private ClassLoader parent;
// 被此classLoader加载过的Class对象
private Vector classes = new Vector();
// The ...
一.Launcher
我们习以为常的ClassLoader.getSystemClassLoader()来获得系统类加载器,有没有考虑过到底是怎么得到的呢?阅读完Launcher的源码,就清楚了。
二.源码
public class Launcher {
private static URLStreamHandlerFactory factory = new Factory();
private static Launcher launcher = new Launcher();
public static Launcher getLa ...
一.@Inherited
@Inherited:允许子类继承父类的注解。
二.代码
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface DBTable {
public String name() default "";
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DBTabl ...
一.引入
上文http://zy19982004.iteye.com/blog/1979208中,提到了注解类JyzTargetPackage可以定义为@Target(ElementType.PACKAGE),可是在被注解类里我无论怎么加,编译器都报错,于是引入了package-info.java这个文件。
二.创建package-info.java
"I found that when you create a new package in eclispe there is a check box to check if you want a packa ...
Java注解学习二:自定义注解
- 博客分类:
- Java基础
一.注解术语
http://zy19982004.iteye.com/blog/1979039里把注解里的术语罗列了一遍,未做深入解读。本文用一个例子来强化注解术语。
二.代码
package com.jyz.study.jdk.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Re ...
Java注解学习一:注解术语
- 博客分类:
- Java基础
一.元注解
@Target:表示该注解可以用于什么地方。可选的ElementType参数包括:
TYPE:类,接口(包括注解类型),enum的声明。
FIELD:域的声明(包括enum实例)。
METHOD:方法的声明。
PARAMETER:参数的声明。
CONSTRUCTOR:构造器的声明。
LOCAL_VARIABLE:局部变量的声明。
ANNOTATION_TYPE:注解的声明。
PACKAGE:包的声明。
@Retention:表示需要在什么级别保存该注解学习。可选的RetentionPolicy参数包括:
SOURCE:注解将被编译器丢弃。
CLAS ...