回收做哪个网站好些,做网站用的一些素材,机电类网站模板,南山网络科技有限公司目录
Log4j概述
log4j的架构#xff08;组成#xff09;
Loggers Appenders
Layouts
快速入门
依赖 java代码
日志的级别
log4j.properties
自定义Logger
总结#xff1a; Log4j概述
Log4j是Apache下的一款开源的日志框架#xff0c;通过在项目中使用 Log4J组成
Loggers Appenders
Layouts
快速入门
依赖 java代码
日志的级别
log4j.properties
自定义Logger
总结 Log4j概述
Log4j是Apache下的一款开源的日志框架通过在项目中使用 Log4J我们可以控制日志信息输出到控制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式通过定义日志的输出级别可以 更灵活的控制日志的输出过程。方便项目的调试。 log4j这个日志框架是现在那些流行的日志框架实现的始祖现在流行的logback,log4j2这些都是基于或者参考log4j这个日志框架实现的所以学习log4j可以让我们更好的理解和使用现在流行的主流日志框架 官网地址http://logging.apache.org/log4j/1.2/
log4j的架构组成 Loggers
日志记录器负责收集处理日志记录实例的命名就是类“XX”的full quailied name类的全限定名Logger的名字大小写敏感其命名有继承机制例如name为org.apache.commons的logger会继承 name为org.apache的logger。
Log4J中有一个特殊的logger叫做“root”他是所有logger的根也就意味着其他所有的logger都会直接 或者间接地继承自root。root logger可以用Logger.getRootLogger()方法获取。
但是自log4j 1.2版以来 Logger 类已经取代了 Category 类。对于熟悉早期版本的log4j的人来说 Logger 类可以被视为 Category 类的别名。 早期架构 Appenders
Appender 用来指定日志输出到哪个地方可以同时指定日志的输出目的地。Log4j 常用的输出目的地有以下几种 Layouts
布局器 Layouts用于控制日志输出内容的格式让我们可以使用各种需要的格式输出日志。Log4j常用 的Layouts: Layout的格式 看log4j的组成其实架构和JUL很像都是由三部分组成loggers --logger,appenders--handler,layouts--fomatter 。但具体的实现细节还是有差别的 快速入门 依赖 dependency groupIdlog4j/groupId artifactIdlog4j/artifactId version1.2.17/version /dependency java代码 public class Log4jTest { Test public void testQuick() throws Exception { // 初始化系统配置不需要配置文件 BasicConfigurator.configure(); // 创建日志记录器对象 Logger logger Logger.getLogger(Log4jTest.class); // 日志记录输出 logger.info(hello log4j); // 日志级别 logger.fatal(fatal); // 严重错误一般会造成系统崩溃和终止运行 logger.error(error); // 错误信息但不会影响系统运行 logger.warn(warn); // 警告信息可能会发生问题 logger.info(info); // 程序运行信息数据库的连接、网络、IO操作等 logger.debug(debug); // 调试信息一般在开发阶段使用记录程序的变量、参数等 logger.trace(trace); // 追踪信息记录程序的所有流程信息 } } 日志的级别 注一般只使用4个级别优先级从高到低为 ERROR WARN INFO DEBUG
log4j.properties #指定日志的输出级别与输出端 log4j.rootLoggerINFO,Console # 控制台输出配置 log4j.appender.Consoleorg.apache.log4j.ConsoleAppender log4j.appender.Console.layoutorg.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern%d [%t] %-5p [%c] - %m%n # 文件输出配置 log4j.appender.A org.apache.log4j.DailyRollingFileAppender #指定日志的输出路径 log4j.appender.A.File D:/log.txt log4j.appender.A.Append true #使用自定义日志格式化器 log4j.appender.A.layout org.apache.log4j.PatternLayout #指定日志的输出格式 log4j.appender.A.layout.ConversionPattern %-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n #指定日志的文件编码 log4j.appender.A.encodingUTF-8 #mysql log4j.appender.logDBorg.apache.log4j.jdbc.JDBCAppender log4j.appender.logDB.layoutorg.apache.log4j.PatternLayout log4j.appender.logDB.Drivercom.mysql.jdbc.Driver log4j.appender.logDB.URLjdbc:mysql://localhost:3306/test log4j.appender.logDB.Userroot log4j.appender.logDB.Passwordroot log4j.appender.logDB.SqlINSERT INTO log(project_name,create_date,level,category,file_name,thread_name,line,all_categ ory,message) values(itcast,%d{yyyy-MM-dd HH:mm:ss},%p,%c,%F,%t,%L,%l,%m) CREATE TABLE log ( log_id int(11) NOT NULL AUTO_INCREMENT, project_name varchar(255) DEFAULT NULL COMMENT 目项名, create_date varchar(255) DEFAULT NULL COMMENT 创建时间, level varchar(255) DEFAULT NULL COMMENT 优先级, category varchar(255) DEFAULT NULL COMMENT 所在类的全名, file_name varchar(255) DEFAULT NULL COMMENT 输出日志消息产生时所在的文件名称 , thread_name varchar(255) DEFAULT NULL COMMENT 日志事件的线程名, line varchar(255) DEFAULT NULL COMMENT 号行, all_category varchar(255) DEFAULT NULL COMMENT 日志事件的发生位置, message varchar(4000) DEFAULT NULL COMMENT 输出代码中指定的消息, PRIMARY KEY (log_id) ) 具体实现案例 # 指定RootLogger的顶级父类的配置信息
log4j.rootLogger trace,console,DailyRollingFile
log4j.appender.console org.apache.log4j.ConsoleAppender
#log4j.appender.console.layout org.apache.log4j.SimpleLayout
log4j.appender.console.layout org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern %r [%t] %p %c %x - %m%n# 文件输出配置
#log4j.appender.file org.apache.log4j.FileAppender
##指定日志的输出路径
#log4j.appender.file.File D:/log11.txt
#log4j.appender.file.Append true
##使用自定义日志格式化器
#log4j.appender.file.layout org.apache.log4j.PatternLayout
##指定日志的输出格式
#log4j.appender.file.layout.ConversionPattern %-d{yyyy-MM-dd HH:mm:ss} [%t:%r] -[%p] %m%n
##指定日志的文件编码
#log4j.appender.file.encodingUTF-8# DailyRollingFileAppender输出配置
log4j.appender.DailyRollingFile org.apache.log4j.DailyRollingFileAppender
#指定日志的输出路径
log4j.appender.DailyRollingFile.File D:/log.txt
log4j.appender.DailyRollingFile.Append true
#使用自定义日志格式化器
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
#指定日志的文件编码
log4j.appender.DailyRollingFile.encodingUTF-8#* log4j 采用类似 C 语言的 printf 函数的打印格式格式化日志信息具体的占位符及其含义如下
#%m 输出代码中指定的日志信息
#%p 输出优先级及 DEBUG、INFO 等
#%n 换行符Windows平台的换行符为 \nUnix 平台为 \n
#%r 输出自应用启动到输出该 log 信息耗费的毫秒数
#%c 输出打印语句所属的类的全名
#%t 输出产生该日志的线程全名
#%d 输出服务器当前时间默认为 ISO8601也可以指定格式如%d{yyyy年MM月dd日
#HH:mm:ss}
#%l 输出日志时间发生的位置包括类名、线程、及在代码中的行数。如
#Test.main(Test.java:10)
#%F 输出日志消息产生时所在的文件名称
#%L 输出代码中的行号
#%% 输出一个 % 字符
#* 可以在 % 与字符之间加上修饰符来控制最小宽度、最大宽度和文本的对其方式。如
#%5c 输出category名称最小宽度是5category5默认的情况下右对齐
#%-5c 输出category名称最小宽度是5category5-号指定左对齐,会有空格
#%.5c 输出category名称最大宽度是5category5就会将左边多出的字符截掉5不
#会有空格
#%20.30c category名称20补空格并且右对齐30字符就从左边交远销出的字符截掉 log4j在初始化logger的时候会默认去加载resource下的配置文件配置文件支持如上图。所以只要你将配置文件放在resource目录下springboot项目就会去自动加载 运行成功案例
自定义Logger # RootLogger 配置 log4j.rootLogger trace,console # 自定义 Logger log4j.logger.com.itheima info,file log4j.logger.org.apache error Test public void testCustomLogger () throws Exception { // 自定义 com.itheima Logger logger1 Logger . getLogger ( Log4jTest . class ); logger1 . fatal ( fatal ); // 严重错误一般会造成系统崩溃和终止运行 logger1 . error ( error ); // 错误信息但不会影响系统运行 logger1 . warn ( warn ); // 警告信息可能会发生问题 logger1 . info ( info ); // 程序运行信息数据库的连接、网络、 IO 操作等 logger1 . debug ( debug ); // 调试信息一般在开发阶段使用记录程序的变量、参数等 logger1 . trace ( trace ); // 追踪信息记录程序的所有流程信息 // 自定义 org.apache Logger logger2 Logger . getLogger ( Logger . class ); logger2 . fatal ( fatal logger2 ); // 严重错误一般会造成系统崩溃和终止运行 logger2 . error ( error logger2 ); // 错误信息但不会影响系统运行 logger2 . warn ( warn logger2 ); // 警告信息可能会发生问题 logger2 . info ( info logger2 ); // 程序运行信息数据库的连接、网络、 IO 操作等 logger2 . debug ( debug logger2 ); // 调试信息一般在开发阶段使用记录程序的变量、参 数等 logger2 . trace ( trace logger2 ); // 追踪信息记录程序的所有流程信息 } 未配置定义Logger前输出 配置后输出 总结
Log4J 主要由 Loggers (日志记录器)、Appenders输出端和 Layout日志格式化器组成。其中 Loggers 控制日志的输出级别与日志是否输出Appenders 指定日志的输出方式输出到控制台、文件 等Layout 控制日志信息的输出格式。