12.日志

日志

1.定义

  • 作用:用于记录应用程序的执行过程或异常等记录在文件,可以通过日志文件知道应用程序的操作或异常信息。

  • 对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,CommonsLogging,Slf4j,Logback,Jul。

  • 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。

2.常见的日志框架

  • Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一。

  • Log4j 2 Apache Log4j 2是apache开发的一款Log4j的升级产品。

  • Commons Logging Apache基金会所属的项目,是一套Java日志接口,之前叫JakartaCommons Logging,后更名为Commons Logging。

  • Slf4j 类似于Commons Logging,是一套简易Java日志门面,本身并无日志的实现。(Simple Logging Facade for Java,缩写Slf4j)。

  • Logback 一套日志组件的实现(Slf4j阵营)。

  • Jul (Java Util Logging),自Java1.4以来的官方日志实现。

3.实现步骤

3.1 步骤一:导入log4j的jar包

  • 因为log4j日志框架不是sun的,不在jdk内置环境中,如果需要用到就应该把相应的功能代码引入到项目中,需要build path构建到项目中。

3.2 步骤二:创建logger对象

public class Test1 {
	
	//创建logger日志对象
	private static Logger logger = Logger.getLogger(Test1.class);
	public static void main(String[] args) {
		//通过error,warn,info,debug不同的日志输出级别输出信息
		logger.error("error");
		logger.warn("warn");
		logger.info("info");
		logger.debug("debug");
	}
}

3.3 步骤三:配置log4g.properties配置文件

#log4j.properties这个文件是用于配置log4j的框架信息,需要配置三个重要的信息
#1.配置什么级别的日志可以在记录在文件中
#2.指定输出的目的地
#3.指定输出到控制台的或者文件中的输出格式,或者说以什么
### 设置Logger输出级别和输出目的地   ###
#输出级别info代表info和info之上的级别的日志都会输出到控制台
#console 是指定的输出目的地,,配置了是ConsoleAppender在控制台输出console可以任意起名字
log4j.rootLogger=info,console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.file.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %l %m %n

4.日志的输出级别

日志信息的优先级从高到低一般有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;(具体参考下面日志信息优先级)

  • 日志信息优先级
    • offff 最高等级,用于关闭所有日志记录。
    • fatal 指出每个严重的错误事件将会导致应用程序的退出。
    • error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
    • warn 表明会出现潜在的错误情形。
    • info 一般和在粗粒度级别上,强调应用程序的运行全程。
    • debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
    • all 最低等级,用于打开所有日志记录。
#console 是指定的输出目的地,,配置了是ConsoleAppender在控制台输出console可以任意起名字
log4j.rootLogger=DEBUG,console,file,file1

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.file.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %l %m %n

log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=../log/wu.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{YY-MM-DD}][%c]%m%n

log4j.appender.file1 = org.apache.log4j.RollingFileAppender
log4j.appender.file1.File=../log/error.log
log4j.appender.file1.MaxFileSize=10mb
log4j.appender.file1.Append=true
log4j.appender.file1.Threshold=ERROR
log4j.appender.file1.layout=org.apache.log4j.PatternLayout
log4j.appender.file1.layout.ConversionPattern=[%p][%d{YY-MM-DD}][%c]%m%n

5.日志格式appender是选项:

  • appender用于指定日志的输出目的地、输出格式、是否拼接等。

    org.apache.log4j.ConsoleAppender(控制台), 
    org.apache.log4j.FileAppender(文件), 
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), 
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), 
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地 方)
    
  • layout的选项

    org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式), 
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    
  • Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息

    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
    %r 输出自应用启动到输出该log信息耗费的毫秒数 
    %c 输出所属的类目,通常就是所在类的全名 
    %t 输出产生该日志事件的线程名 
    %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” 
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 
    %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10) log信息耗费的毫秒数 
    %c 输出所属的类目,通常就是所在类的全名 
    %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值