log4j日志管理快速使用


练习源码

日志管理

  日志是系统运行过程中后台的输出信息,方便程序员进行系统运行的管控以及Bug的查找。

传统方式日志管理

获取日志

  使用System.out.println()语句进行控制台打印。

存在问题

  1 日志无法保存
  2 日志显示不完整(控制台有限)
  3 日志显示没有级别和筛选,所有日志混杂在一起
  4 日志显示格式不友好

解决方法

  使用log4j进行日志管理。

log4j日志管理

  log4j是一个日志输出的插件,专门用来日志的管理。

特点

  1 日志既可以在控制台打印,也可以保存在文件中
  2 日志可以完整获取
  3 日志可以分级管理筛选
  4 日志格式可以自定义,显示友好

使用流程

  1 导入log4j的jar包
  2 配置log4j的配置文件
    配置文件名必须为log4j.properties
    必须放在src文件夹下
  3 在使用log4j的类中声明全局的Logger对象

static Logger logger = Logger.getLogger(类名.class);

  4 使用Logger对象调用日志方法进行日志输出语句声明

// 以下日志级别由低到高
logger.debug("我是调试信息(代码级别)");  // 一般在方法内部调用
logger.info("我是info信息(方法级别)");  // 一般在调用方法时使用
logger.warn("我是警告信息");  // 一般在需要警告的位置使用
logger.error("我是错误信息");  // 一般在catch代码块调用异常方法前使用
logger.fatal("我是致命的错误信息");  // 一般在catch代码块调用异常方法前使用

配置文件

# 设置全局默认配置
# INFO指打印INFO及其以上级别的日志
# CONSOLE, LOGFILE指打印位置为控制台和日志文件
log4j.rootCategory = INFO, CONSOLE, LOGFILE

# 设置某个包、某个类或某个方法的日志打印级别和位置(优先于全局配置)
log4j.logger.包名 = WARN, CONSOLE, LOGFILE
log4j.logger.包名.类名 = ERROR, CONSOLE, LOGFILE
log4j.logger.包名.类名.方法名 = FATAL, CONSOLE, LOGFILE

# 设置控制台日志打印方式
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender  # 启动控制台打印日志
log4j.appender.CONSOLE.Threshold = debug  # 设置控制台打印日志级别
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout  # 启动控制台打印日志格式设置
log4j.appender.CONSOLE.layout.ConversionPattern = %m%n  # 设置控制台打印日志格式

# 设置文件输出配置
log4j.appender.LOGFILE = org.apache.log4j.FileAppender  # 启动文件打印日志
log4j.appender.LOGFILE.File = D:/test.log  # 设置日志文件保存位置
log4j.appender.LOGFILE.Append = true  # 设置是否以追加形式打印日志
log4j.appender.LOGFILE.Threshold = debug  # 设置文件打印日志级别
log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout  # 启动文件打印日志格式设置
log4j.appender.LOGFILE.layout.ConversionPattern = %p-%d{yyyy/MM/dd hh:mm:ss}-%l-%m%n  # 设置文件打印日志格式

日志格式

# 如%5p-%d{yyyy/MM/dd hh:mm:ss}-%l-[%t]%m%n格式对应以下日志:
DEBUG-2020/02/18 04:50:37-MyLog.main(MyLog.java:14)-[main]我是调试信息(代码级别)
 INFO-2020/02/18 04:50:37-MyLog.main(MyLog.java:15)-[main]我是info信息(方法级别)
INFO-2020/02/18 04:50:37-MyLog.main(MyLog.java:16)-[main]我是警告信息
ERROR-2020/02/18 04:50:37-MyLog.main(MyLog.java:17)-[main]我是错误信息
FATAL-2020/02/18 04:50:37-MyLog.main(MyLog.java:18)-[main]我是致命的错误信息
# 说明:
%后可以加宽度
%p:日志级别,DEBUG、INFO、INFO、ERROR、FATAL
%d:日期,默认格式为ISO8601,也可自定义格式,如%d{yyyy/MM/dd hh:mm:ss}
%r:输出自应用启动到输出该日志信息所耗费的毫秒数
%l:指明所属类名、方法名和所在行,如MyLog.main(MyLog.java:14)
%c:指明所属类名,如MyLog
%F:指明所属类名,如MyLog.java
%t:指明所属线程
%m:指定的日志信息
%n:换行

参考

尚学堂视频教程
log4j日志输出格式一览

猜你喜欢

转载自blog.csdn.net/ChenTianyu666/article/details/104382894
今日推荐