断点调试和记录日志是作为java程序员必须具备的技能,一些主流框架和技术和互联网技术都有用到日志技术
-
log4j的特性
1)线程安全
2)log4j是经过优化速度的
3)至此每个记录器输出追加器
4)支持国际化
5)基于一个记录器的层次结构
6)不局限于一组预定义的设备
7)日志文件可以设置文件在运行时设置
8)log4j设计从一开始就是处理java异常
9)log4j有多个级别,通过控制这些级别可以时间将某些不想输出的信息过滤掉
10)日志输出的格式可以通过拓展Layout类容易的改变
11)日志输出的目标 , 以及在写入策略可通过实现Appender程序接口改变
12)log4j会故障停止 , 然而 , 尽管它肯定努力确保传递 , log4j不保证每个日志语句将被传递到目的地 -
log4j使用案例
1)创建普通java项目
2)在src下创建log4j.properties配置文件# 设置 log4j.rootLogger = debug,stdout,D,E # 输出DEBUG 级别以上的日志到=E://logs/error.log log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = E://logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n # 输出ERROR 级别以上的日志到=E://logs/error.log log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =E://logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n 注意了:1)本例子中配置的日志信息保存的路径为为E盘的路径,要确保你的电脑中有E盘
3)编写main函数的java类
logger.info("普通的info信息"); logger.debug("调试的debug信息"); logger.error("报错的error信息"); logger.warn("警告的warning信息");
-
log4j运行原理
log4j.properties为什么无需在web.xml等配置文件中引入?
LogManager的静态代码块中会先查找程序中有没有override相关功能,如果没有就查找log4j.xml,如果还没有就查找log4j.properties文件,即当我们引用了org.apache.log4j,配置好log4j.xml或者log4j.properties后,可以不用在配置文件中或者程序中再显示地读取log4j的配置文件,在jvm加载LogManager.class时候会执行静态代码块中的查找代码。 -
解读配置文件
配置文件中的信息:https://www.cnblogs.com/tengqiuyu/p/7535373.html和