Log4J日志框架
Posted 暴躁的程序猿啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4J日志框架相关的知识,希望对你有一定的参考价值。
Log4J
本文学习了网上其他老师的视频教程此处传送
log4J是Apache下的一款开源的日志框架,通过在项目中使用log4j,我们可以控制日志输出的位置。我们可以控制每一条日志的输出格式,通过定义日志输出级别,可以更灵活的控制日志的输出过程;
创建一个log4J工程
1.导入依赖
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
2.demo
@Test
public void testQuick() throws Exception
//初始化配置信息 暂时使用代码方式配置
BasicConfigurator.configure();
//获取日志记录对象
Logger logger = Logger.getLogger(Log4jTest.class);
//日志输出
logger.info("first log4j");
控制台输出
0 [main] INFO com.xxx.test.Log4jTest - first log4j
日志级别
常用 error warn info debug
//严重错误,一般会造成系统崩溃
logger.fatal("fatal");
//错误,不会影响系统运行
logger.error("error");
//警告 可能会发生问题
logger.warn("warn");
//运行信息,数据连接 网络连接 等等
logger.info("info");
//调试信息,一般在开发中使用,记录程序变量参数传递信息的等等
logger.debug("debug");
//追踪信息 记录程序所有的流程信息
logger.trace("trace");
Log4J组件
主要有Loggers(日志记录器)、Appenders(输出端)、和layout(日志格式化器)组成。其中Loggers控制日志的输出级别与日志是否输出;Appenders指定日志的输出方式(控制台、文件等);Layout控制日志信息的输出格式;
编写配置文件log4j.properties
log4j.rootLogger = trace,console
log4j.appender.console= org.apache.log4j.ConsoleAppender
log4j.appender.console.layout= org.apache.log4j.SimpleLayout
测试类
@Test
public void testQuick() throws Exception
//获取日志记录对象
Logger logger = Logger.getLogger(Log4jTest.class);
//日志输出
logger.info("first log4j");
//日志级别
//严重错误,一般会造成系统崩溃
logger.fatal("fatal");
//错误,不会影响系统运行
logger.error("error");
//警告 可能会发生问题
logger.warn("warn");
//运行信息,数据连接 网络连接 等等
logger.info("info");
//调试信息,一般在开发中使用,记录程序变量参数传递信息的等等
logger.debug("debug");
//追踪信息 记录程序所有的流程信息
logger.trace("trace");
输出
INFO - first log4j
FATAL - fatal
ERROR - error
WARN - warn
INFO - info
DEBUG - debug
TRACE - trace
开启Log4j内置日志记录
//开启log4j 内置日志记录
LogLog.setInternalDebugging(true);
输出
log4j: Trying to find [log4j.xml] using context classloader jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc.
log4j: Trying to find [log4j.xml] using jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc.
log4j: Using URL [file:/E:/IdeaProjects/log4J/target/classes/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL file:/E:/IdeaProjects/log4J/target/classes/log4j.properties
log4j: Parsing for [root] with value=[trace,console].
log4j: Level token is [trace].
log4j: Category root set to TRACE
log4j: Parsing appender named "console".
log4j: Parsing layout options for "console".
log4j: End of parsing for "console".
log4j: Parsed "console" options.
log4j: Finished configuring.
在配置文件中配置日志输出到指定文件中
#指定RootLogger顶级父元素默认配置信息
#指定日志级别=trace,使用的appender为console
log4j.rootLogger = trace,console,file
#指定的日志输出的appender
log4j.appender.console= org.apache.log4j.ConsoleAppender
#
log4j.appender.console.layout= org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=[%p]%r %c %t %dyyyy-MM-dd HH:mm:ss.SSS %m%n
#指定的日志输出的appender
log4j.appender.file= org.apache.log4j.FileAppender
#指定消息内容格式
log4j.appender.file.layout= org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern= [%p]%r %c %t %dyyyy-MM-dd HH:mm:ss.SSS %m%n
#指定日志文件的保存路径
log4j.appender.file.file= D:/lianxi/log4j.log
#指定日志文件字符集
log4j.appender.file.encoding= UTF-8
配置按照文件大小拆分文件 当单个文件大小达到指定值拆分成多个
#按照文件大小拆分
log4j.appender.rollingFile= org.apache.log4j.RollingFileAppender
#指定消息内容格式
log4j.appender.rollingFile.layout= org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.conversionPattern= [%p]%r %c %t %dyyyy-MM-dd HH:mm:ss.SSS %m%n
#指定日志文件的保存路径
log4j.appender.rollingFile.file= D:/lianxi/log4j.log
#指定日志文件字符集
log4j.appender.rollingFile.encoding= UTF-8
#指定日志文件内容的大小
log4j.appender.rollingFile.maxFileSize= 1MB
#指定日志文件数量
log4j.appender.rollingFile.maxBackupIndex= 10
配置按照时间拆分文件 配置某个时间段的文件输出到同一个文件内
#按照时间规则拆分
log4j.appender.dailyRollingFile= org.apache.log4j.DailyRollingFileAppender
#指定消息内容格式
log4j.appender.dailyRollingFile.layout= org.apache.log4j.PatternLayout
log4j.appender.dailyRollingFile.layout.conversionPattern= [%p]%r %c %t %dyyyy-MM-dd HH:mm:ss.SSS %m%n
#指定日志文件的保存路径
log4j.appender.dailyRollingFile.file= D:/lianxi/log4j.log
#指定日志文件字符集
log4j.appender.dailyRollingFile.encoding= UTF-8
#指定日期拆分的规则
log4j.appender.dailyRollingFile.datePattern= '.'yyyy-MM-dd-HH-mm-ss
测试按时间拆分
@Test
public void testQuick() throws Exception
//初始化配置信息 暂时使用代码方式配置
// BasicConfigurator.configure();
//开启log4j 内置日志记录
LogLog.setInternalDebugging(true);
//获取日志记录对象
Logger logger = Logger.getLogger(Log4jTest.class);
//日志输出
logger.info("first log4j");
//日志级别
for (int i = 0; i < 10000; i++)
//严重错误,一般会造成系统崩溃
logger.fatal("fatal");
//错误,不会影响系统运行
logger.error("error");
//警告 可能会发生问题
logger.warn("warn");
//运行信息,数据连接 网络连接 等等
logger.info("info");
//调试信息,一般在开发中使用,记录程序变量参数传递信息的等等
logger.debug("debug");
//追踪信息 记录程序所有的流程信息
logger.trace("trace");
JDBCAppender配置
log4j.rootLogger = trace,console,logDB
#指定的日志输出的appender
log4j.appender.console= org.apache.log4j.ConsoleAppender
#
log4j.appender.console.layout= org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=[%p]%r %c %t %dyyyy-MM-dd HH:mm:ss.SSS %m%n
#mysql
log4j.appender.logDB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.logDB.layout=org.apache.log4j.PatternLayout
log4j.appender.logDB.Driver=com.mysql.jdbc.Driver
log4j.appender.logDB.URL=jdbc:mysql://localhost:3306/log4j
log4j.appender.logDB.User=root
log4j.appender.logDB.Password=123456
log4j.appender.logDB.Sql=INSERT INTO log(project_name,create_date,level,category,file_name,thread_name,line,all_category,message) values('fei','%dyyyy-MM-ddHH:mm:ss','%p','%c','%F','%t','%L','%l','%m')
导入mysql依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
@Test
public void testQuick() throws Exception
//开启log4j 内置日志记录
LogLog.setInternalDebugging(true);
//获取日志记录对象
Logger logger = Logger.getLogger(Log4jTest.class);
//日志输出
logger.info("first log4j");
//日志级别
//严重错误,一般会造成系统崩溃
logger.fatal("fatal");
//错误,不会影响系统运行
logger.error("error");
//警告 可能会发生问题
logger.warn("warn");
//运行信息,数据连接 网络连接 等等
logger.info("info");
//调试信息,一般在开发中使用,记录程序变量参数传递信息的等等
logger.debug("debug");
//追踪信息 记录程序所有的流程信息
logger.trace("trace");
以上是关于Log4J日志框架的主要内容,如果未能解决你的问题,请参考以下文章