博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目日志log管理
阅读量:5355 次
发布时间:2019-06-15

本文共 3831 字,大约阅读时间需要 12 分钟。

项目中一般都需要日志输出。这里主要谈谈commons-logging、log4j、slf4j、logback这四个东西。

可以使用apache commons logging + log4j组合,或者slf4j + logback的组合(新秀)。

 

commons-logging:

简介:日志的门面接口。避免和具体的日志方案直接耦合。
我 们经常会看到两个 jar 包:commons-logging.jar 和 log4j.rar。为什么我们在使用 log4j 的同时还要引入 commons-logging.jar 呢?原因是commons-logging只是一种日志前端接口,而log4j才是真正的输出日志实现。
官网:http://commons.apache.org/proper/commons-logging/
使用时导入jar包:commons-logging-[version].jar

 

log4j:

简介:经典的一种日志解决方案。内部把日志系统抽象封装成Logger 、appender 、pattern 等实现。
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;
我们也可以通过编写配置文件来控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
官网:http://logging.apache.org/log4j/2.x/
使用时导入jar包:log4j-[version].jar
一般使用commons-logging时,都要导入log4j,因为其底部是调用了log4j,如果没导入,会出现“找不到类”异常。

tips:commons项目也是Apache很强大的一个项目,主要提供编程时一些公共的功能。
slf4j:
简介:java简单日志门面。 是对不同日志框架提供的一个门面封装。可作为commons-logging的替代。
是一种日志前端接口,可以用logback来作为它的实现。
官网:http://www.slf4j.org/
使用时导入jar包:slf4j-api-[version].jar
logback:
简介:一个通用可靠、快速灵活的日志框架,可以代替log4j作为一种新的解决方案。
官网:http://logback.qos.ch/
使用时导入jar包:logback-core-[version].jar、logback-classic-[version].jar

logback为什么要和slf4j结合使用:原因跟commons-logging和log4j结合使用一样!

 

log4j:项目中使用log4j来进行 日志 输出管理  【详解】:

为什么需要Log4j---项目的调试是log4j产生的内在驱动力

原始的方法是:把信息输出到屏幕(console),利用JDK提供的System.out.println。但是,这样做的坏处是显而易见的: 

a)信息的输出不够灵活,并且繁琐。比如,要输出执行处的文件名,行数,当前时间等,println显得很原始。

b)如果要改变输出的内容和格式,需要重新编译源程序。
c)更严重的是,如果程序中有很多的println,会严重的影响程序的性能。

 

 

Log4j使用的几个关键点?

 

——根记录器(Logger),输出端(appenders)和布局(layouts

简单示例:

 

#定义DEBUG优先级,R为日志输出目的的  log4j.rootLogger=DEBUG, R  #设置日志输出类型,为文件类型  log4j.appender.R=org.apache.log4j.FileAppender  #org.apache.log4j.ConsoleAppender,将日志信息输出到控制台#org.apache.log4j.FileAppender,将日志信息输出到一个文件#org.apache.log4j.DailyRollingFileAppender,将日志信息输出到一个,并且每天输出到一个新的日志文件#org.apache.log4j.WriterAppender,将日志信息以流格式发送到任意指定的地方。#org.apache.log4j.jdbc.JDBCAppender,通过JDBC把日志信息输出到数据库中#设置日志文件名my.log  log4j.appender.R.file=my.log  #每次在文件尾写入新的日志信息  log4j.appender.R.Append=true #日志输出信息格式类型  log4j.appender.R.layout=org.apache.log4j.PatternLayout  #org.apache.log4j.HTMLLayout,以HTML表格形式布局#org.apache.log4j.PatternLayout,可以灵活地指定布局模式#org.apache.log4j.SimpleLayout,包含日志信息的级别和信息字符串#日志输出信息格式为 换行、换行、日期、优先级、[类名]、日志信息、换行  log4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n #%c 输出日志信息所属的类的全名#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28#%f 输出日志信息所属的类的类名#%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行#%m 输出代码中指定的信息,如log(message)中的message#%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推#%r 输出自应用启动到输出该日志信息所耗费的毫秒数#%t 输出产生该日志事件的线程名

 

log4j的配置文件——log4j.properties或者log4j.xml

 

a)有几种方式可以配置Log4J

 

在程序中调用BasicConfigurator.configure()方法;

配置放在文件里,通过命令行参数传递文件名字,通过

 

PropertyConfigurator.configure(args[x])解析并配置;

配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

 

b)配置文件的初始化:

 

通过应用服务器完成初始化

 

通过servlet辅助完成初始化

 

 

java代码写日志简单示例:

package com.log4j;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;public class Log4jTest {    static Logger logger;            public static void main(String[] args) {                String filePath = Log4jTest.class.getResource("/").getPath().replaceAll("%20", " ");                System.out.println("filePath=" + filePath);                                logger = Logger.getLogger(Log4jTest.class);                PropertyConfigurator.configure(filePath + "log4j.properties");                        //输出 错误信息        logger.error("出错了!!");                //一般信息        logger.info("my name is chenyouhuang!!");                //警告信息        logger.warn("warning!!");                //调试信息        logger.debug("debug!!");                //致命错误信息        logger.fatal("致命错误!!");    }    }

 

 

 

 

posted on
2013-08-06 17:14 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/cyh123/p/3240935.html

你可能感兴趣的文章
获取元素属性get_attribute
查看>>
视觉设计师的进化
查看>>
Python/jquery
查看>>
【BZOJ】【2132】圈地计划
查看>>
Lua 语言基本语法
查看>>
ARM 的Thumb状态测试
查看>>
windows下读取utf-8文件
查看>>
apache 启动不了的排查方法
查看>>
Java有没有goto?
查看>>
(转)makefile 的用法
查看>>
求不相邻金币相加和的最大值--动态规划1
查看>>
[转][osg]探索未知种族之osg类生物【目录】
查看>>
四十九. Zabbix报警机制 、 Zabbix进阶操作 、 监控案例
查看>>
元类中__new__ 与 __init__的区别--day27
查看>>
占小狼的简书博客
查看>>
struts2__action执行顺序
查看>>
php异常处理
查看>>
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>