当前位置: 首页 > article >正文

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 输出优先级,及 DEBUGINFO
  • %n 换行符(Windows平台的换行符为 "\n"Unix 平台为 "\n"
  • %r 输出自应用启动到输出该 log 信息耗费的毫秒数
  • %c 输出打印语句所属的类的全名
  • %t 输出产生该日志的线程全名
  • %d 输出服务器当前时间,默认格式为 ISO8601,也可以在后面指定格式。如:%d{yyyyMMdd 日 HH:mm:ss}
  • %l 输出日志时间发生的位置,包括类名、发生的线程,以及在代码中的行数,如: Test.main(Test.java:10)
  • %F 输出日志消息产生时所在的文件名称
  • %L 输出代码中的行号
  • %x 输出和当前线程相关的 NDC(嵌套诊断环境)
  • %% 输出一个 "%" 字符
  • 可以在 % 与字符之间加上修饰符来控制最小宽度、最大宽度和文本的对其方式。如:
  • %5c 输出category名称,最小宽度是5category<5,默认的情况下右对齐
  • %-5c 输出category名称,最小宽度是5category<5"-"号指定左对齐,会有空格
  • %.5c 输出category名称,最大宽度是5category>5,就会将左边多出的字符截掉,<5不会有空格
  • %20.30c category名称<20补空格,并且右对齐,>30字符,就从左边交远销出的字符截掉"

http://www.kler.cn/a/449259.html

相关文章:

  • Flask中@app.route()的methods参数详解
  • 开发一个DApp项目:DeFi、DApp开发与公链DApp开发
  • 性能优化!突破性能瓶颈的尖兵CPU Cache
  • 对javascript语言标准函数与箭头函数中this的理解(补充)
  • VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)
  • 取多个集合的交集
  • 在Excel中绘制ActiveX控件:解决文本编辑框定位问题
  • ubuntu装P104
  • 操作系统(22)外存的组织方式
  • 初识Go语言
  • docker部署微信小程序自动构建发布和更新
  • “电找车“ | 助力移动充电机器人快速落地
  • Could not resolve host: github.com
  • Vue零基础教程|从前端框架到GIS开发系列课程(七)响应式系统介绍
  • 【氮化镓】p沟道GaN-on-Si晶体管的衬底偏置效应
  • 【习题答案】构建灵活高效的消息推送能力
  • c++---------流类
  • R机器学习:决策树算法的理解与实操
  • 【java设计模式】1 - 软件设计原则
  • springboot471基于协同过滤算法商品推荐系统(论文+源码)_kaic
  • Java的基础概念(一)
  • 微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
  • 【笔记】Ubuntu连finalshell超时 解决:下载openssh
  • 网络附属存储(NAS)的学习
  • 【JUC编程】JUC 多线程基础全面解析(待更新版)
  • 面试经典题目:LeetCode134_加油站