Log4j简介
Log4j
是
Apache
的一个开放源代码项目,通过使用
Log4j
,我们可以控制日志信息输送的目的地是控 制台、文件、GUI
组件、甚至是套接口服务器、
NT
的事件记录器、
UNIX Syslog
守护进程等;我们也可 以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成 过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代 码。
什么是日志?
日志:用来记录一些重要的操作信息
有价值的日志数据能够帮助用户提前发现和避开灾难,并且找到事件发生的原因
为什么要使用
Log4J
监视代码中变量的变化情况
跟踪代码的运行轨迹
担任开发环境中的调试作用,向文件或控制台打印代码的调试信息
Log4J的三个组件
Logger
:负责生成日志,并能够对日志信息进行分类筛选,决定被输出和被忽略的信息。
Appender
:定义了日志信息输出的目的地,指定日志输出到什么地方,可以是控制台,文件,网
络等。
Layout
:指定日志信息的输出格式
org.apache.log4j.Level
类提供以下级别,但也可以通过Level类的子类自定义级别。
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
Log4j
建议只使用四个级别,优先级从高到低分别是
ERROR
、
WARN
、
INFO
、
DEBUG
。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在定义了INFO
级别,则应用程序中所有DEBUG
级别的日志信息将不被打印出来,也是说大于等于的级别的日志才输出。
Log4J使用
为项目添加
log4j
的
jar
包
配置
log4j.properties
配置文件
#log4j.properties
#off 最高日志级别,关闭左右日志
#fatal 将会导致应用程序退出的错误
#error 发生错误事件,但仍不影响系统的继续运行
#warn 警告,即潜在的错误情形
#info 一般和在粗粒度级别上,强调应用程序的运行全程
#debug 一般用于细粒度级别上,对调试应用程序非常有帮助
#all 最低等级,打开所有日志记录
#在代码中使用 Logger logger = Logger.getLogger(当前类.class);
# logger.info("输出信息");
log4j.rootLogger = INFO,CONSOLE,FILE
#控制台输出配置
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#指定日志的输出格式
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
#文件输出配置
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
#指定日志的输出格式
log4j.appender.FILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p]- %m%n
#将文件路径
log4j.appender.FILE.File=D\:/log/log4jsfshop.log
在代码中使用
- Logger logger = Logger.getLogger(当前类.class);
- logger.info("输出信息");
- log4j 采用类似 C 语言的 printf 函数的打印格式格式化日志信息,具体的占位符及其含义如下:
- %m 输出代码中指定的日志信息
- %p 输出优先级,及 DEBUG、INFO 等
- %n 换行符(Windows平台的换行符为 "\n",Unix 平台为 "\n")
- %r 输出自应用启动到输出该 log 信息耗费的毫秒数
- %c 输出打印语句所属的类的全名
- %t 输出产生该日志的线程全名
- %d 输出服务器当前时间,默认格式为 ISO8601,也可以在后面指定格式。如:%d{yyyy年MM月dd 日 HH:mm:ss}
- %l 输出日志时间发生的位置,包括类名、发生的线程,以及在代码中的行数,如: Test.main(Test.java:10)
- %F 输出日志消息产生时所在的文件名称
- %L 输出代码中的行号
- %x 输出和当前线程相关的 NDC(嵌套诊断环境)
- %% 输出一个 "%" 字符
- 可以在 % 与字符之间加上修饰符来控制最小宽度、最大宽度和文本的对其方式。如:
- %5c 输出category名称,最小宽度是5,category<5,默认的情况下右对齐
- %-5c 输出category名称,最小宽度是5,category<5,"-"号指定左对齐,会有空格
- %.5c 输出category名称,最大宽度是5,category>5,就会将左边多出的字符截掉,<5不会有空格
- %20.30c category名称<20补空格,并且右对齐,>30字符,就从左边交远销出的字符截掉"