Log4j使用教程
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
日志等级
等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO、WARN、ERROR的log信息,而DEBUG信息不会被显示。
OFF | 最高日志级别,关闭所有日志 |
---|---|
FATAL | 将会导致应用程序退出的错误 |
ERROR | 发生错误事件,但仍不影响系统的继续运行 |
WARN | 警告,即潜在的错误情形 |
INFO | 一般和在粗粒度级别上,强调应用程序的运行全程 |
DEBUG | 一般用于细粒度级别上,对调试应用程序非常有帮助 |
ALL | 最低等级,打开所有日志记录 |
一般只使用4个级别,优先级从高到低为 ERROR > WARN > INFO > DEBUG
输出位置
ConsoleAppender | 输出到控制台 |
---|---|
FileAppender | 输出到日志文件中 |
DailyRollingFileAppender | 将日志输出到一个日志文件,并且每天输出到一个新的文件 |
RollingFileAppender | 将日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大 小达到指定尺寸时,会自动把文件改名,同时产生一个新的文件 |
JDBCAppender | 把日志信息保存到数据库中 |
常用的是 1、3、4
使用步骤
-
添加maven依赖
<!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
-
配置文件
#指定日志的输出级别与输出端 log4j.rootLogger=ERROR, Console, DailyRollingFile, RollingFile # 控制台输出配置 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n # DailyRollingFile log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender #指定日志的输出路径 log4j.appender.DailyRollingFile.File = D:/log.txt #使用自定义日志格式化器 log4j.appender.DailyRollingFile.layout=org.apache.log4j.PatternLayout #指定日志的输出格式 log4j.appender.DailyRollingFile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n #RollingFile log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender log4j.appender.RollingFile.File = D:/log2.txt # 日志文件的最大大小 log4j.appender.RollingFile.MaxFileSize = 1KB # 日志文件的最多文件个数 log4j.appender.RollingFile.MaxBackupIndex = 3 log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
-
编写测试类
import org.apache.log4j.Logger; public class Log4JTest { private static Logger LOGGER = Logger.getLogger(Log4JTest.class); public static void main(String[] args) { LOGGER.debug("这是DEBUG信息"); LOGGER.info("这是INFO信息"); LOGGER.warn("这是WARN信息"); LOGGER.error("这是ERROR信息"); LOGGER.fatal("这是FATAL信息"); } }
输出结果:
注意此时日志等级为:ERROR把日志等级改为:INFO
日志文件输出