1.Log4j的全程为Log for Java。专门用于java语言的日志记录工具。其目前有两个版本:Log4j和Log4j2
2.为了方便对于日志信息的输出显示,对日志内容进行了分级管理。日志级别由高到低,分为6个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)
3.无论是将日志输出到控制台,还是文件,其输出都会降低程序的运行效率。但由于调试、运行维护的需要,客户的要求等原因,需要进行必要的日志输出。这时就必须要在代码中加入日志输出语句。这些输出语句若在程序运行时全部执行,则势必会降低运行效率。
4.下载jar包,log4j.properties直接放到项目的src下 Logger logger = Logger.getLogger(Test.class); log4j.properties是专门用于控制日志输出的。其主要进行三方面控制: 输出位置:控制日志将要输出的位置,是控制台还是文件等 输出布局:控制日志信息的显示形式 输出级别:控制要输出的日志级别
日志属性文件由两个对象组成:日志附加器与根日志。 根日志:为java代码中的日志记录器,其主要由两个属性构成:日志输出级别与日志附加器 日志附加器,则由日志输出位置定义,由其它很多属性进行修饰,如输出布局、文件位置、文件大小。
5.log4j.appender.console = org.apache.log4j.ConsoleAppender; org.apache.log4j.ConsoleAppender;日志输出到控制台 org.apache.log4j.FileAppender:日志输出到文件 org.apache.log4j.RollingFileAppender:当日志文件大小到达指定尺寸的时候将产生一个新的日志文件 org.apache.log4j.DailyRollingFileAppender:每天产生一个日志文件
log4j.appender.console.Target = System.out Target控制输出到控制台的使用目标。其值为System.out或System.err。它们的区别是,out是黑色字体,err是红色字体
log4j.appender.file.File = d:/logfile.txt File日志要输出的文件位置以及文件名称
滚动文件附加器 log4j.appender.rollfile = org.apache.log4j.RollingFileAppender log4j.appender.rollfile.MaxFileSize = 10KB 若文件超过指定值,将自动产生另一个日志文件
log4j.apender.rollfile.layout = org.apache.log4j.HTMLLayout org.apache.log4j.HTMLLayout:网页布局,以 HTML 表格形式布局 org.apache.log4j.SimpleLayout:简单布局,包含日志信息的级别和信息字符串 org.apache.log4j.PatternLayout:匹配器布局,可以灵活地指定布局模式。
根配置根 Logger 配置 rootLogger,以便于代码加载来控制日志的输出。其语法为: log4j.rootLogger = [ level ] , appenderName, … 其中,level 是日志记录的优先级,分为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。OFF 为关闭日志功能。 低级别的可以显示高级别的,但高级别的不能显示低级别的。所以,级别越高,将来显示的信息就越少
6.Log4j2 是对 Log4j 的升级,其在配置与使用上发生了较大变化。
使用 Log4j2,需要导入其 Jar 包。Log4j 框架解压目录中找到如下两个 jar 包: log4j-api-2.3.jar log4j-core-2.3.jar
将文件 log4j2.xml 直接放到项目的 src 下。log4j2 配置文件是 XML 文件,不再支持properties 文件。默认的文件名为 log4j2.xml。其存放的位置为 classpath 中
在要输出日志的类中创建日志对象 Logger,并通过 Logger 的方法在代码中加入日志输出语句。该日志对象是通过静态类 LogManager 的 getLogger()方法获取的。 注意,Logger 与 LogManager 均为 org.apache.logging.log4j 包中的类,org.apache.log4j包中的。
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;
Logger logger = LogManager.getLogger(Test.class);
7.配置文件说明:
<configuration/>标签的 status 属性用于设置 Log4j2 自身运行的日志显示级别,一般为OFF,不显示。当然,也可以设置为 ERROR、DEBUG 等其它级别。
<Console/>标签的 target 属性用于设置输出的目标形式,其值一般为: SYSTEM_OUT 或 SYSTEM_ERR <Console name="myConsole" target="SYSTEM_OUT"></Console>
<File/>标签的 fileName 属性用于设置文件的文件保存路径及文件名。如本例的意思是,日志文件名为 test.log,将其存放在当前项目的根目录下的 log 子目录中。 append 属性用于设置是否以追加方式将日志写入指定文件 <File name="myFile" fileName="log/test.log" append="true"></file>
<RollingFile/>标签的<SizeBasedTriggeringPolicy/>子标签用于指定每一个日志文件最大文件大小。当达到这个指定值后,会自动再新建一个日志文件 fileName 指定存放目录及第一个日志文件名。filePattern 指定新创建的日志文件的文件名。本例还会对文件进行压缩。 <RollingFile name="myRollingFIle" fileName="logs/app.log" filePatern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <SizeBasedTriggeringPolicy size="1KB"/> </RollingFile>
<loggers/> 标签 用于配置根 Logger 对象,以指定所使用的日志记录器,及显示的级别。 其子标签<root/>用于指定所使用的日志记录器。该子标签的属性 level 用于指定显示级别。而日志记录器是通过<root/>的子标签<appender-ref/>来引用<appenders/>中定义好的记录器的。 需要注意的是,只要在<appenders/>中定义了<File/>、<RollingFile/>等,且在其中指定了日志存放的目录,那么这些目录就会自动创建。无论在<loggers/>的<root/>中是否声明使用它们。
8.slf4j, Simple Logging Facade for Java,简单日志门面。其不是具体的日志解决方案,不做具体的日志服务。它仅仅是一种规范,一个接口。而 Log4j 则是slf4j 的一种具体实现,提供具体的日志服务。 slf4j 有自己单独的一套 API,这套 API 与具体的日志实现技术的 API 是不同的。为了能使 slf4j 的 API 与具体日志实现技术 API 结合到一起,在 slf4j 与具体日志技术之间,还需要一个连接的 jar。这个 jar 在 sfl4j 框架中存放着。slf4j-log4j12-1.7.12.jar |