Java-Log日志
July 26, 2017
日志以我目前使用到的,有两个功能。 第一,在上线调试的时候查看问题所在。 第二,在线上运行的时候,出现故障回看日志查询问题所在。 总之就是查问题出在哪里,因为编译型的程序没有办法直接搞中间输出来确定问题所在,写在文件里是最好的方式了。 Java中有很多日志系统,但是根据经验,一定有一个日志的抽象层来统一各个日志系统。没错,今天就直接来用这个抽象层的日志工具:SLF4J(Simple logging facade for Java)。它允许你在后台使用任意一个日志类库。如果是在编写供内外部都可以使用的API或者通用类库,那么你真不会希望使用你类库的客户端必须使用你选择的日志类库。 如果一个项目已经使用了log4j,而你加载了一个类库,比方说 Apache Active MQ——它依赖于于另外一个日志类库logback,那么你就需要把它也加载进去。但如果Apache Active MQ使用了SLF4J,你可以继续使用你的日志类库而无需忍受加载和维护一个新的日志框架的痛苦。 日志原理 # 一般的日志都是由三个部分组成:logger、appenders、layouts。logger负责捕获记录信息,转给appender去转发到配置的目的地,layouts负责定义日志的格式。 下面就具体的介绍一下Log4j帮助理解。 Log4j # log4j 有很多优点: Log4j是高度可配置的,并可通过在运行时的外部文件配置。它根据记录的优先级别,并提供机制,以指示记录信息到许多的目的地,诸如:数据库,文件,控制台,UNIX系统日志等。 已经扩展到C/C++、C#、Perl、Python等语言中。 线程安全、速度快 多输出 也有一些缺点,比如不能保证所有日志信息都送到目的地在其出现故障的时候,会减慢程序的速度,不过这是所有日志都面临的问题,貌似也没有什么好的解决办法。 log4j 在使用的时候需要一个配置文件:log4j.properties或log4j.xml。 如果是java project项目,则在项目的根目录下创建log4j.properties而不是在src目录下。 如果是java web项目,则在src目录下创建log4j.properties配置文件,因为这个时候tomcat会去默认的加载这个配置文件,而不需要我们手动的加载log4j的配置文件。 两种配置的基本配置选项都是一样的,log4j.properties的格式是更好理解的,奈何我拿到的是个该死的xml格式的项目。直观看很丑!非常丑!xml在我这的印象分又掉了一半。 还是先介绍各个选项的内容吧,形式不重要。 选项参数 # 上面讲了日志的三个组成部分,其配置也就是针对这三个部分来搞的。 以properties的格式先介绍一下。 #配置根Logger (Loggers) log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , … #配置日志信息输出目的地 (Appenders) log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.optionN = valueN #配置日志信息的格式(Layouts) log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class log4j.appender.appenderName.layout.option1 = value1 … log4j. ...