log4j使用详解
2017-03-23 22:03
260 查看
一、文章说明
本文主要对log4j的常用功能及使用进行详细说明,并进行代码展示。本人对log4j的使用是基于maven构建的web项目。
二、log4j简介
log4j是Apache的一个开源项目,是用Java编写的可靠,快速和灵活的日志框架。
log4j可以通过配置,设置日志的输出级别(如:info、debug等)、输出的目的地(如:数据库、文件、控制台等)。
三、log4j核心配置详解
这里主要对log4j的日志级别、appender、格式化类型、日志格式化参数进行说明。
1.日志级别
日志级别及其优先级:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF,低于当前日志设置级别的日志不会输出。
All:所有日志级别
DEBUG :程序调试级别
INFO :程序运行信息级别
WARN :警告级别
ERROR :错误级别
FATAL :致命的错误级别,有可能应用终止服务
OFF:关闭日志,最高等级
2.appender
常用appender(其他类型请查阅资料):
ConsoleAppender 输出日志到控制台
FileAppender 输出日志到文件
DailyRollingFileAppender 输出日志到按一定的频度滚动日志记录文件
JDBCAppender 记录日志到数据库
SMTPAppender 邮件发送日志
appender的常用属性:layout 日志格式化、threshold 当前日志配置的日志级别
3.格式化类型
HTMLLayout 以html表格的形式
PatternLayout 自定义的形式输出日志
SimpleLayout 简单形式,只打印日志级别和渲染后的信息
XMLLayout 以xml的形式展现
TTCCLayout 包含日志产生的时间、线程、类别等信息
4.日志格式化参数
%m 输出代码中指定的消息;
%M 输出打印该条日志的方法名;
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;
%r 输出自应用启动到输出该log信息耗费的毫秒数;
%c 输出所属的类目,通常就是所在类的全名;
%t 输出产生该日志事件的线程名;
%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;
%l 输出日志事件的发生位置,及在代码中的行数。
四、log4j使用详解及示例
log4j配置文件有xml和properties两种形式,这里只对properties的形式进行说明。
1.maven依赖包管理
这里使用的是log4j版本是1.2.17
2.log4j.properties配置
log4j默认从classpath下寻找log4j.properties文件,如果该文件放在自定义目录下,需要在web.xml中进行配置,这里使用的是spring的类进行监听,配置如下:
log4j.properties主要配置了控制台、按照一定频度滚动的日志文件、数据库及邮件形式的日志,
rootLogger,这个配置是必须的,它定义如下:
log4j.rootLogger=日志级别,日志输出形式1,日志输出形式2.....
appender,这个配置也是必须的,控制日志的输出,它的定义如下:
log4j.appender.日志输出形式=appender
logger 自定义日志,这个不是必须的
log4j.logger.自定义日志名称=日志级别,日志输出形式1,日志输出形式2.....
代码如下:
3.日志使用
本文主要对log4j的常用功能及使用进行详细说明,并进行代码展示。本人对log4j的使用是基于maven构建的web项目。
二、log4j简介
log4j是Apache的一个开源项目,是用Java编写的可靠,快速和灵活的日志框架。
log4j可以通过配置,设置日志的输出级别(如:info、debug等)、输出的目的地(如:数据库、文件、控制台等)。
三、log4j核心配置详解
这里主要对log4j的日志级别、appender、格式化类型、日志格式化参数进行说明。
1.日志级别
日志级别及其优先级:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF,低于当前日志设置级别的日志不会输出。
All:所有日志级别
DEBUG :程序调试级别
INFO :程序运行信息级别
WARN :警告级别
ERROR :错误级别
FATAL :致命的错误级别,有可能应用终止服务
OFF:关闭日志,最高等级
2.appender
常用appender(其他类型请查阅资料):
ConsoleAppender 输出日志到控制台
FileAppender 输出日志到文件
DailyRollingFileAppender 输出日志到按一定的频度滚动日志记录文件
JDBCAppender 记录日志到数据库
SMTPAppender 邮件发送日志
appender的常用属性:layout 日志格式化、threshold 当前日志配置的日志级别
3.格式化类型
HTMLLayout 以html表格的形式
PatternLayout 自定义的形式输出日志
SimpleLayout 简单形式,只打印日志级别和渲染后的信息
XMLLayout 以xml的形式展现
TTCCLayout 包含日志产生的时间、线程、类别等信息
4.日志格式化参数
%m 输出代码中指定的消息;
%M 输出打印该条日志的方法名;
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;
%r 输出自应用启动到输出该log信息耗费的毫秒数;
%c 输出所属的类目,通常就是所在类的全名;
%t 输出产生该日志事件的线程名;
%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;
%l 输出日志事件的发生位置,及在代码中的行数。
四、log4j使用详解及示例
log4j配置文件有xml和properties两种形式,这里只对properties的形式进行说明。
1.maven依赖包管理
这里使用的是log4j版本是1.2.17
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.4.0</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.6</version> </dependency> <dependency> <groupId>com.sun.mail</groupId> <artifactId>mailapi</artifactId> <version>1.4.4</version> </dependency> <dependency> <groupId>com.sun.mail</groupId> <artifactId>smtp</artifactId> <version>1.4.4</version> </dependency>
2.log4j.properties配置
log4j默认从classpath下寻找log4j.properties文件,如果该文件放在自定义目录下,需要在web.xml中进行配置,这里使用的是spring的类进行监听,配置如下:
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
log4j.properties主要配置了控制台、按照一定频度滚动的日志文件、数据库及邮件形式的日志,
rootLogger,这个配置是必须的,它定义如下:
log4j.rootLogger=日志级别,日志输出形式1,日志输出形式2.....
appender,这个配置也是必须的,控制日志的输出,它的定义如下:
log4j.appender.日志输出形式=appender
logger 自定义日志,这个不是必须的
log4j.logger.自定义日志名称=日志级别,日志输出形式1,日志输出形式2.....
代码如下:
#日志文件存放目录 logPath=/work/app/logs log4j.rootLogger=info,stdout #控制台日志 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.target=System.out log4j.appender.stdout.threshold=info log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %C:%L - %m%n #文件日志 ##错误级别的日志文件 log4j.logger.error=error,error log4j.appender.error=org.apache.log4j.DailyRollingFileAppender log4j.appender.error.threshold=error log4j.appender.error.datePattern=.yyyy-MM-dd log4j.appender.error.append=true log4j.appender.error.BufferedIO=false log4j.appender.error.BufferSize=104857600 log4j.appender.error.file=${logPath}/error_log.log log4j.appender.error.layout=org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %C:%L - %m%n ##info级别的日志文件 log4j.logger.info=info,info log4j.appender.info=org.apache.log4j.DailyRollingFileAppender log4j.appender.info.th 9c1f reshold=info log4j.appender.info.datePattern=.yyyy-MM-dd log4j.appender.info.append=true log4j.appender.info.BufferedIO=false log4j.appender.info.BufferSize=104857600 log4j.appender.info.file=${logPath}/info_log.log log4j.appender.info.layout=org.apache.log4j.PatternLayout log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %C:%L - %m%n #数据库日志 log4j.logger.database=info,database log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender log4j.appender.database.threshold=info log4j.appender.database.URL=oracleURL log4j.appender.database.driver=oracle.jdbc.driver.OracleDriver log4j.appender.database.user= log4j.appender.database.password= log4j.appender.database.sql=INSERT INTO TABLE_NAME VALUES('%p %C:%L - %m%n') log4j.appender.database.layout=org.apache.log4j.PatternLayout #邮件日志 log4j.logger.email=info,email log4j.appender.email=org.apache.log4j.net.SMTPAppender log4j.appender.email.threshold=info log4j.appender.email.BufferSize=1024 log4j.appender.email.SMTPHost= log4j.appender.email.SMTPPort= log4j.appender.email.SMTPUsername= log4j.appender.email.SMTPPassword= log4j.appender.email.From= log4j.appender.email.To= #log4j.appender.email.cc= log4j.appender.email.Subject= log4j.appender.email.layout=org.apache.log4j.PatternLayout log4j.appender.email.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %C:%L - %m%n
3.日志使用
public class Log4jUtil { public static final String FILE_INFO_LOG = "info"; public static final String FILE_ERROR_LOG = "error"; public static final String EMAIL_LOG = "email"; public static final String DB_LOG = "database"; public static final String CONSOLE_LOG = "stdout"; //info级别的日志文件 public static Logger fileInfoLog = Logger.getLogger(FILE_INFO_LOG); //error级别的日志文件 public static Logger fileErrorLog = Logger.getLogger(FILE_ERROR_LOG); //邮件发送日志 public static Logger emailLog = Logger.getLogger(EMAIL_LOG); //记录日志到数据库 public static Logger dbLog = Logger.getLogger(DB_LOG); //控制台打印日志 public static Logger consoleLog = Logger.getLogger(CONSOLE_LOG); }
Log4jUtil.fileErrorLog.error("for test");
相关文章推荐
- log4j的配置使用方法详解
- log4j使用详解
- log4j配置详解与使用方法说明
- Log4j使用详解(log4j.properties格式)——整理
- Log4j的配置与使用详解
- log4j日志使用详解
- Log4j 配置使用详解
- log4j使用详解
- log4j使用详解--创建自己的日志系统
- Java开发日志分析工具Log4j使用详解
- 1-Log4j使用详解
- Log4J日志管理类使用详解
- Log4J日志管理类使用详解
- log4j 详解和使用
- Log4J 使用详解
- Log4J日志管理类使用详解
- Log4J日志管理类使用详解
- log4j.xml配置详解及log4j日志使用详解
- Log4J使用详解
- Log4j 基本配置使用详解